2011-11-30 3 views
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; 
    } 
} 

ответ

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; 
+0

Ах так, «с» представляет собой RGB-компонент, значение которого зависит от пространственного индекса, а также для каждый пространственный индекс 'c' == R == G == B? Любая идея, почему этот один компонент G установлен в 0? – Rooster

+1

@bbarre: Почти: 'c' - это переменная, построенная из переменных, работающих под управлением массива. Если вы посмотрите внимательно, вы увидите, что если i-й бит установлен, то есть каждые 8 ​​итераций i, i & 0x8 дают ненулевое значение. То же самое для j. Если либо отличен от нуля, но другой нуль, XOR будет давать 1. Это умножается на 255, т. Е. Максимальное значение канала. Зеленый компонент, который не устанавливается для изображения2, будет делать розовые и черные плитки вместо белых и черных. – datenwolf

 Смежные вопросы

  • Нет связанных вопросов^_^