Создание изображения шахматной доски для текстуры - PullRequest
1 голос
/ 30 ноября 2011

Пожалуйста, помогите мне понять, что делает следующее.В частности, что такое переменная «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 Ответ

2 голосов
/ 30 ноября 2011

Изображение имеет 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;
...