2011-11-30 2 views
1

다음 작업의 이해를 돕기 바랍니다. 특히 변수 'c'는 무엇이며 (이미지가 2 차원 픽셀 사각형이 아닌) 세 번째 배열 차원은 무엇입니까? 컨텍스트가 필요한 경우이 코드에 대한 링크를 게시하지만 컨텍스트는 일반적으로이 바둑판 패턴을 회전 큐브에 매핑합니다. 방식이므로 3 차원 -텍스처의 바둑판 이미지 만들기

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 차원 공간 및 색이다.
마지막 []은 빨강, 초록, 파랑의 픽셀 값입니다.

이것은 '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; 
아 그래서 'C'는 값이 공간 인덱스에 의존하고 대한 RGB 성분이다
+0

각 공간 인덱스 'c'== R == G == B? 하나의 G 구성 요소가 0으로 설정된 이유는 무엇입니까? – Rooster

+1

@bbarre : Almost : 'c'는 배열 실행 변수에서 생성 된 변수입니다. 면밀히 살펴보면 세 번째 비트가 설정되면, 즉 i가 8 번 반복 될 때마다 i & 0x8이 0이 아닌 값을 얻게됩니다. j와 동일합니다. 둘 중 하나가 0이 아니지만 다른 0 인 경우 XOR은 1을 반환합니다.이 값에는 채널의 최대 값인 255가 곱 해집니다. image2에 대해 설정되지 않은 녹색 구성 요소는 흰색 및 검정 대신 분홍색 및 검정색 타일을 만듭니다. – datenwolf

관련 문제