我正在使用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();
答案 0 :(得分:1)
如果你有这种东西的深度缓冲区,那真的会有所帮助。否则显示的只是你最后画的内容。
当然,如果您使用了深度缓冲区,那么您的线条(我假设是线框叠加层)将不可见,因为默认深度测试为GL_LESS
,它们将生成(大致)与深度相同的深度它们被覆盖在表面上。 GL_LEQUAL
的深度测试将大大有助于解决该问题,但最终您通常需要一个小的深度偏移来防止深度打击,当您尝试覆盖这样的线框时。
将来参考HERE's THE PART FOR DRAWING
在诊断问题方面并不十分有用。