为纹理创建棋盘图像

Creating checkerboard image for texture

本文关键字:图像 创建 纹理      更新时间:2023-10-16

请帮助我理解下面是怎么回事。具体来说,什么是变量'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;
    }
}

一个图像是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;