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

最佳答案

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)


也就是说,将纹理坐标带到您关心的范围,并仅保留小数部分。

关于c++ - 仅使用纹理坐标的棋盘着色器,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8245151/

10-15 00:22