1
请帮我理解下面的操作。具体来说,什么是变量'c',第三个数组的维数是多少(不是一个二维像素矩形的图像)? 如果需要上下文,我会发布此代码的链接,但上下文通常会将此棋盘图案映射到旋转的多维数据集。为纹理创建棋盘图像
GLubyte image[TextureSize][TextureSize][3];
GLubyte image2[TextureSize][TextureSize][3];
// Create a checkerboard pattern
for (int i = 0; i < 64; i++) {
for (int j = 0; j < 64; j++) {
GLubyte c = (((i & 0x8) == 0)^((j & 0x8) == 0)) * 255;
image[i][j][0] = c;
image[i][j][1] = c;
image[i][j][2] = c;
image2[i][j][0] = c;
image2[i][j][1] = 0;
image2[i][j][2] = c;
}
}
阿所以“C”是一个RGB分量,其值依赖于空间索引,以及用于每个空间索引'c'== R == G == B?任何想法为什么一个G组件被设置为0? – Rooster
@bbarre:几乎:'c'是由数组运行变量构造的变量。如果你仔细观察,你会发现如果我的第三位被设置,即i的每8次迭代,i&0x8就产生非零。 j也一样。如果其中任一个非零,但另一个为零,则异或将产生1.这被乘以255,即通道的最大值。未设置image2的绿色组件将使粉色和黑色瓦片而不是白色和黑色。 – datenwolf