在绘制国际象棋棋盘时指定不同方格的颜色的最佳方法是什么? 假设我想要一个2乘2的电路板,颜色如下:
*-----*-----*
|black|white|
*-----*-----*
|white|black|
*-----*-----*
我现在可以有9个顶点并使用GL_QUADS原语绘制板。据我所知,用一些颜色填充正方形意味着用该颜色指定每个顶点的颜色。 但是用不同的颜色填充每个正方形意味着复制5个顶点
*-----**----*
|black|white|
**-----**----**
|white|black|
*-----**----*
这是最简单的方法吗? OpenGL中是否允许顶点具有相同的坐标和不同的颜色?
答案 0 :(得分:4)
如果你真的想为每个场绘制一个四边形,那么复制顶点就是最佳选择。具有相同坐标的不同顶点没有问题。 GL的光栅化规则将确保在这样的共享边缘没有间隙,并且b)也没有透支,所以你会没事的。
但是,您也可以将整个字段绘制为一个四边形并使用纹理。您只需要一个2x2大小的纹理,黑色和白色的颜色,并可以使用GL_NEAREST
过滤模式,以获得一个漂亮和锐利的棋盘图案。
使用这种方法,您还可以动态更改字段数而无需更改纹理,只需使用GL_REPEAT
模式并仅更改texcoords。
在基于现代着色器的GL中,您还可以直接在片段着色器中以程序方式生成棋盘图案。