これは、RGB および RGBA 形式で定義されたプリミティブな 5x2 テクスチャです。
// 1 2 3 4 5
unsigned char rgb[] = { 0, 0, 0, 0, 0, 0, 200, 200, 200, 0, 0, 0, 200, 200, 200,
0, 0, 0, 0, 0, 0, 200, 200, 200, 0, 0, 0, 200, 200, 200, };
unsigned char rgba[] = { 0, 0, 0, 255, 0, 0, 0, 255, 200, 200, 200, 255, 0, 0, 0, 255, 200, 200, 200, 255,
0, 0, 0, 255, 0, 0, 0, 255, 200, 200, 200, 255, 0, 0, 0, 255, 200, 200, 200, 255, };
RGBA バージョンの読み込みは期待どおりに機能します。
glTexImage2D(GL_TEXTURE_2D,
0, // mipmap level
GL_RGB, // dest format
5, // width
2, // height
0, // deprecated
GL_RGBA, // source format
GL_UNSIGNED_BYTE,
rgba);
RGB テクスチャをロードすると、奇妙なカラー シフトが発生します。
glTexImage2D(GL_TEXTURE_2D,
0, // mipmap level
GL_RGB, // dest format
5, // width
2, // height
0, // deprecated
GL_RGB, // source format
GL_UNSIGNED_BYTE,
rgb);
最初のスクリーンショットと 2 番目のスクリーンショットのコードの違いは、glTexImage2D の 2 つの引数だけです。
私は何を間違っていますか?
環境
- ATI Radeon HD5450、OpenGL 4.2
- Windows 7、64 ビット
- ビジュアル スタジオ 2010