请帮助我了解以下内容。具体来说,什么是变量'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;
}
}
答案 0 :(得分:2)
图像是2个空间维度和颜色 - 所以在某种程度上是3个维度 最后一个[]是红色,绿色,蓝色像素值
这只是使用'c'数组语法为你计算内存。
内存中的布局正好
[row1][col1][red], [row1][col1][green], [row1][col1][blue], [row1][col2][red], [row1][col2][green], [row1][col2][blue] ........
因此,如果c
为0或255,那么
// sets all red,green,blue to same value = black (c=0) or white (c=255)
image[i][j][0] = c;
image[i][j][1] = c;
image[i][j][2] = c;
// sets red and blue on but green off = purple
image[i][j][0] = c;
image[i][j][1] = 0;
image[i][j][2] = c;