为纹理创建棋盘图像

时间:2011-11-30 19:34:06

标签: c++ opengl texture-mapping

请帮助我了解以下内容。具体来说,什么是变量'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;
    }
}

1 个答案:

答案 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;