我正在使用 LWJGL 在 Java 中创建 CAD 应用程序。一切工作正常,但是,绘制的东西有点透明(不是透明的,但你可以看到正面和背面,这使得移动形状时非常困惑)。
您可以在下图中明白我的意思:
我想覆盖里面/背面的线条。简单来说,前面的内容应该覆盖后面的所有内容,而不是被看穿。有什么解决方案/提示吗?
编辑:
一些代码
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/