2011-11-30 4 views
1

以下のことを理解してください。具体的には、変数 'c​​'とは何か、3次元配列次元は何ですか(画像ではない2次元ピクセルの長方形)ですか? コンテキストが必要な場合はこのコードへのリンクを投稿しますが、一般的にコンテキストはこのチェッカーボードパターンを回転キューブにマッピングしています。テクスチャのチェッカーボードイメージを作成する

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; 
ああそう「c」は、その値が空間インデックスに依存し、のためのRGB成分である
+0

各空間インデックス 'c' == R == G == B?なぜ1つのG成分が0に設定されているのか? – Rooster

+1

@bbarre:Almost: 'c'は変数を実行している配列から構築された変数です。注意深く見れば、私が3番目のビットが設定されている場合、つまりiの8回の繰り返しごとに、i&0x8が0以外の値になることがわかります。 jについても同じです。いずれかが0ではないがもう1つのゼロである場合、XORは1を生ずる。これは255、すなわちチャンネルの最大値を掛ける。 image2に設定されていない緑のコンポーネントは、白と黒の代わりにピンクと黒のタイルを作成します。 – datenwolf

関連する問題