使用OpenGL和GLSL进行Alpha混合和面部排序

时间:2015-05-07 18:37:37

标签: opengl-es glsl opengl-es-2.0 shader

我正在写一个小3D引擎。我刚刚在程序中添加了alpha混合功能,我想知道一件事:与相机相比,我是否需要对所有基元进行排序?)

让我们举一个简单的例子:我有一个由1个天空盒组成的场景和1个带有alpha混合叶子的树!

以下是此类场景的屏幕截图:

enter image description here

直到这里,关于叶子相对于彼此的α混合似乎都是正确的。

但如果我们离得更近......

enter image description here

...我们可以看到图像右上方有一点麻烦(叶子周围的区域形成一个四边形)。

enter image description here

我认为这个错误来自于这两个四边形(基元)应该比后面的那些更晚呈现。

您如何看待我的假设?

PS:我想精确所有关于叶子的几何体只在一次绘制调用中呈现。

但如果我是对的,那就意味着当我需要像这棵树那样渲染一个alpha混合网格时,每次我的相机移动时我都需要通过从相机的角度对所有基元(三角形或四边形)进行排序来更新我的VBO视图。所以后面的原语应该首先呈现......

您如何看待我的想法?

0 个答案:

没有答案