LWJGL的透明度问题

时间:2014-06-12 19:47:53

标签: 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();

1 个答案:

答案 0 :(得分:1)

如果你有这种东西的深度缓冲区,那真的会有所帮助。否则显示的只是你最后画的内容。

当然,如果您使用了深度缓冲区,那么您的线条(我假设是线框叠加层)将不可见,因为默认深度测试为GL_LESS,它们将生成(大致)与深度相同的深度它们被覆盖在表面上。 GL_LEQUAL的深度测试将大大有助于解决该问题,但最终您通常需要一个小的深度偏移来防止深度打击,当您尝试覆盖这样的线框时。

将来参考HERE's THE PART FOR DRAWING在诊断问题方面并不十分有用。