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