java - LWJGL 的透明度问题

标签 java opengl graphics 3d lwjgl

我正在使用 LWJGL 在 Java 中创建 CAD 应用程序。一切工作正常,但是,绘制的东西有点透明(不是透明的,但你可以看到正面和背面,这使得移动形状时非常困惑)。

您可以在下图中明白我的意思:

   enter image description here

我想覆盖里面/背面的线条。简单来说,前面的内容应该覆盖后面的所有内容,而不是被看穿。有什么解决方案/提示吗?

编辑:

一些代码

 public static void main(String[] args)
    {
        Window window = new Window();
        initDisplay();
        gameLoop();
        cleanUp();
    }

public static void initDisplay()
    {
        try {
            Display.setDisplayMode(new DisplayMode(800,600));
            Display.create();
        } catch (LWJGLException e) {
            e.printStackTrace();
        }

    }

public static void gameLoop()
    {
        cam = new Camera(70f,(float)(Display.getWidth()/Display.getHeight()),0.3f,1000f);
        x=0;
        while(!Display.isCloseRequested())
        {
            glClear(GL_COLOR_BUFFER_BIT);
            glLoadIdentity();
            cam.useView();

                updateKeys();
            glPushMatrix();
            {
HERE's THE PART FOR DRAWING
}
glEnd();
glPopMatrix();
            Display.update();

最佳答案

如果你有一个深度缓冲区来处理这类事情,那将会非常有帮助。否则显示的内容只是您最后绘制的内容的问题。

当然,如果您使用深度缓冲区,您的线条(我假设是线框覆盖)将不可见,因为默认深度测试是 GL_LESS ,并且它们将生成(大致)相同的深度作为它们覆盖的表面。 GL_LEQUAL 的深度测试将大大有助于解决该问题,但最终您通常需要一个小的深度偏移,以防止当您尝试覆盖这样的线框时出现深度冲突。

供将来引用这里是绘图部分对于诊断问题并不是很有用。

关于java - LWJGL 的透明度问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24192822/

相关文章:

java - 在 Java 的 AS7(和 JBPM 6.2)中使用的正确事务管理器是什么?

c++ - GLFW3 - 对 XRR 的 undefined reference

java - 使用 OpenGL 进行高斯模糊(不是纹理)

cocoa - OpenGL中的缓冲区存储所有形状?

java - 画一条线指向鼠标

user-interface - Kivy - [严重] 绘制椭圆时警告迭代过多

java - 在 Pax-Exam 中使用 Jacoco

java - 将 ArrayList 字符串转换为字符?

java - 程序 RedCross.java 应该在白色背景上显示一个红叉。它只是使十字的左上角

java - 在 java 中使用多个 WHERE 子句更新 sql 数据库