我一直在使用OpenGL(JOGL)中的深度缓冲区,以通过禁用深度缓冲区来确保某些项目在其他对象之前呈现(在我先前的问题Java OpenGL saving depth buffer中进行了详细介绍)。
这是可行的,除了当我在禁用深度测试时设置要绘制的项目的颜色时,没有任何材料的光泽感出现。该项目呈现为原始颜色的较暗版本(似乎没有真正应用的照明效果)。有什么理由会发生这种情况吗?我该如何预防呢?
谢谢,
杰夫
最佳答案
到目前为止,由于您还没有答案,因此我会尽力而为,尽管我在这里确实有点猜测。
我可以想象的一些原因,以及为什么会看到这种效果:
因此,我假设没有深度缓冲区就无法正确使用照明。我想您在另一篇文章中提到,您不能只清除深度缓冲区,因为它会干扰其余的应用程序吗?我认为应该有一个带有模板的解决方案,类似于http://www.glprogramming.com/red/chapter10.html中的“示例10-1:使用模板测试”(它是用C编写的,但我希望它与JOGL类似)。模具将简单地阻止其余应用程序绘制您的宝贵像素。