仅使用纹理坐标的棋盘着色器

时间:2011-11-23 15:52:10

标签: c++ opengl shader

我正在尝试在着色器中编写一个棋盘图案,但却无法弄清楚它的数学运算。现在我只是在tex.x和tex.y小于0.5或大于0.5时绘制黑色,如果没有则绘制白色。这导致一半图像为白色,一半为黑色而不是真正的棋盘格。

1 个答案:

答案 0 :(得分:4)

2x2棋盘的布尔条件类似于(tex.x < 0.5) ^^ (tex.y < 0.5)

当然,如果你想要更多的棋子,你必须开始对每个纹理坐标进行一些mod计算。

编辑以添加

假设你想要一个2Nx2M方格的棋盘图案(即使是为了简单的数学运算):

(mod(N*tex.x, 1.f) < 0.5f) ^^ (mod(M*tex.y, 1.f) < 0.5f)

即,将纹理坐标置于您关注的范围内,并仅保留小数部分。