使用Open GL ES 2.0,我想创建一个大的正方形网格,其中每个正方形可以采用定义文件指定的特定颜色。所以这不是一个只有黑白方块的简单棋盘...
为避免伪影,最好的方法是什么?
提前致谢
答案 0 :(得分:2)
在绘制正方形网格时,没有什么会隐含地导致伪影。如本问题所述,绘图没有固有的z-fighting,深度或透明度问题。
在应用程序中,为每个顶点创建一个具有两个属性(位置,颜色)的顶点数组。对于网格中的每个方块,您需要4个顶点。这将描述构成每个网格方块的2个独立三角形。避免使用三角形条,因为您不希望在相邻的网格方块之间共享或插入颜色属性。
所以你的内存中的顶点数组将是:
square0Pos0
color0
square0Pos1
color0
square0Pos2
color0
square0Pos3
color0
square1Pos0
color1
...
创建一个简单的传递着色器对,它将顶点颜色作为变化发送到片段着色器。片段颜色只是将输出颜色设置为变化的值。
如果将网格位置从-1.0布置到1.0,则甚至不需要添加查看变换制服或相应的着色器逻辑。
进行单次绘制调用以使用glDrawArrays(GL_TRIANGLES, ...)
绘制顶点数组。