有一个使用 OpenGL ES 2.0 的 2D 场景。我需要绘制一个带有许多半透明纹理(一种噪声)的四边形,它们以不同的相位旋转以模拟类似有机的效果。我假设有两种选择:
- 绘制一个四边形,使用具有多个采样器的着色器并为每个采样器旋转纹理坐标(例如在顶点着色器中)。
- 绘制多个重叠和旋转的四边形,将不同的纹理绑定到每个网格(以及更简单的着色程序)。
四边形(或四边形)将使用顶点数组绘制:
glBindVertexArrayOES(vertexArray);
glDrawArrays(GL_TRIANGLE_STRIP, index, numVertex);
第一个选项似乎更有效,因为只有一个网格并且所有混合在片段着色器中完成一次。只有一次调用 glDrawArrays()。
另一方面,第二个选项意味着一个更简单的片段着色器,具有一个纹理查找(但是每个四边形称为 N 次)。
在这两个选项中,纹理绑定的数量相同,但在第一个选项中,所有纹理都绑定到不同的纹理单元。
我想知道您对每个选项的性能的看法。