我有一个小的 OpenGL 应用程序,用于一些带有延迟渲染管道的科学可视化。我有 2 个通道:几何通道,我在其中渲染具有位置、法线、反照率、分割等的纹理;和照明通道,我只是将一些数据映射到四边形并在屏幕上渲染,甚至将一些图像保存在硬盘上。所以,经典的延迟渲染。
现在我需要将线框渲染添加到附加纹理中。我想过在几何着色器中做,但它似乎有点复杂,性能不是问题,所以我只设置了第三个通道,glPolygonMode(GL_FRONT_AND_BACK, GL_LINE);
将它渲染到纹理,然后将它与光照通道一起传递其他的东西。
它工作正常,但我想知道是否有可能以某种方式使用深度缓冲区而不是在模型后面渲染线框?我的意思是,我当然可以剔除背面多边形,但是正面多边形后面仍然会有一些线,它们也是正面的。我想要的是像填充多边形一样剔除它,但只渲染线框。
渲染模型然后在其上渲染线框也可以,但我不能这样做,因为我在几何通道中将模型渲染到纹理,glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);
而在另一个通道中渲染线框,glPolygonMode(GL_FRONT_AND_BACK, GL_LINE);
所以我有点不能使用默认深度缓冲区。
那么,大家有什么想法吗?