0

繰り返さない 32 ビット 16x16 テクスチャを作成する次のコードを考えてみましょう。

int pixels[256];
glTexImage2D(GL_TEXTURE_2D, 0, 4, 16, 16, 0, GL_RGBA, GL_UNSIGNED_BYTE, pixels);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP);

このテクスチャを使用して三角形をレンダリングする場合、テクスチャ座標を指定する必要があります。しかし、どの座標がどの色にマッピングされるのでしょうか?

たとえば、pixels[0]pixels[15]pixels[240]またはのどれにマップさpixels[255]れますか? glTexCoord2f(0,0)そしてどうglTexCoord2f(1,0)ですか?

編集:テクスチャマトリックスは(実際に)単位マトリックスであると想定されています。

4

1 に答える 1

2

デフォルトでは (恒等テクスチャ マトリックスを使用)、テクスチャ座標はテクスチャ空間の左下隅から始まり、右上隅まで拡張されるため、次のように配置されます。

(0,1) ... (1,1)
  :         :
(0,0) ... (1,0)

そして、テクスチャ データ自体は、コンポーネントごと、ピクセルごと、行ごとに、左下から右上に配置されます。したがって、あなたの場合は次のようになります。

[240] -> [255]
  :        :
 [0]  -> [15]

結論として、次のマッピングが得られます (フィルタリングとクランプの問題は無視します)。

(0,0) -> pixels[0]
(1,0) -> pixels[15]
(0,1) -> pixels[240]
(1,1) -> pixels[255]
于 2013-07-02T16:40:51.240 に答える