这一切都发生了,因为我拍摄了三个三角形(红色,绿色和蓝色)并在曲面细分着色器中细分和变形它们,然后在几何着色器中绘制四边形。四边形总是在它所连接的三角形之后绘制,但它们总是在一起,因此曲面细分生成的下一个三角形将高于前一个四边形。
我的问题是,除了使用两个不同的着色器程序之外,有没有办法避免这种情况?似乎变换反馈可能起作用,比如将三角形渲染到一个缓冲区,将四边形渲染到另一个缓冲区并稍后将它们组合起来。那会有用吗?它会比切换着色器更快吗? (或者有时更快)还有其他想法吗?
编辑: 对不起,我的问题更难了。最后,当我修复四边形时,边缘将被alpha混合以进行抗锯齿处理。理想情况下,答案可以在这种情况下起作用。
编辑2:在最终版本中,三个彩色三角形将被一起考虑。最终它们可能都是相同渐变的一部分或共享纹理,在短期内它们将始终是相同的颜色。 (颜色现在只是为了帮助我弄清楚发生了什么。)因此,可以通过将颜色信息提供给几何着色器中的四边形来完成一些技巧,以帮助进行上面提到的alpha混合。这可能允许使用深度缓冲区。很抱歉没有提供所有信息,我不习惯提出这些开放式问题。
答案 0 :(得分:1)
您可以在深度(z)方向上将一个小偏移应用于前面想要的三角形。然后,只要您的帧缓冲区具有深度缓冲区并且启用了深度测试,它们就会出现在其他三角形的前面。