2

绘制棋盘时指定不同方格颜色的最佳方法是什么?假设我想要一个 2 x 2 的板,颜色如下:

*-----*-----*
|black|white|
*-----*-----*
|white|black|
*-----*-----*

我现在可以有 9 个顶点并使用 GL_QUADS 原语绘制板。据我了解,用某种颜色填充正方形意味着用该颜色指定每个顶点的颜色。但是用不同的颜色填充每个正方形意味着复制 5 个顶点

 *-----**----*
 |black|white|
**-----**----**
 |white|black|
 *-----**----*

这是最简单的方法吗?在 OpenGL 中实际上是否允许具有相同坐标和不同颜色的顶点?

4

1 回答 1

4

如果你真的想为每个字段绘制一个四边形,复制顶点是要走的路。具有相同坐标的不同顶点没有问题。GL 的光栅化规则将确保 a) 在此类共享边缘处没有间隙 b) 也没有过度绘制,所以你会没事的。

但是,您也可以将整个字段绘制为一个四边形并使用纹理。您所需要的只是一个 2x2 大小的黑白纹理,并且可以使用GL_NEAREST过滤模式,从而获得漂亮而清晰的棋盘图案。使用这种方法,您还可以动态更改字段数而根本不更改纹理,只需使用GL_REPEAT模式并仅更改 texcoords。

在基于现代着色器的 GL 中,您还可以直接在片段着色器中以程序方式生成棋盘图案。

于 2013-08-13T20:21:55.417 回答