我正在尝试在着色器中编写一个棋盘格图案,但是无法弄清楚它的数学原理。现在,当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/