2012-02-15 8 views
2

glTexImage2Dを使用してイメージを表示しようとしています.MFC、Visual C 6.0を使用しています。
ここでコード:glTexImage2Dを使用している場合、テクスチャには青い色相しかありません

glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT); 
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT); 
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); 
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); 

/* enable 2D texture mapping */ 
glEnable(GL_TEXTURE_2D); 

glTexImage2D(
    GL_TEXTURE_2D, 0, GL_RGB, 
    800, 600, 
    0, GL_RGB, GL_UNSIGNED_BYTE, BitmapBits); 

static float v0[3] = { 0.0, 0.0, 0.0 }; 
static float v1[3] = { 0.0, 1.0, 0.0 }; 
static float v2[3] = { 1.0, 1.0, 0.0 }; 
static float v3[3] = { 1.0, 0.0, 0.0 }; 

static float t0[2] = { 0.0, 0.0 }; 
static float t1[2] = { 0.0, 1.0 }; 
static float t2[2] = { 1.0, 1.0 }; 
static float t3[2] = { 1.0, 0.0 }; 

glBegin(GL_QUADS); 
    glTexCoord2f(0.0, 0.0); 
    glVertex3f(0.0, 0.0, 0.0); 
    glTexCoord2f(1.0, 0.0); 
    glVertex3f(1.0, 0.0, 0.0); 
    glTexCoord2f(1.0, 1.0); 
    glVertex3f(1.0, 1.0, 0.0); 
    glTexCoord2f(0.0, 1.0); 
    glVertex3f(0.0, 1.0, 0.0); 
glEnd(); 

glDisable(GL_TEXTURE_2D); 

私は画像の唯一の青の色相を参照してください。ロードされたイメージBitmapBitsはOKです。
何が問題なのですか?

答えて

6

おそらくGL_RGBformatためGL_BGR_EXT/GL_BGRを使用しないようにしたい:

glTexImage2D(
    GL_TEXTURE_2D, 0, GL_RGB, 
    800, 600, 
    0, GL_BGR, GL_UNSIGNED_BYTE, BitmapBits); 

またはアップロードする前にバイトを自分で交換します。

NPOTテクスチャを使用しているので、GL_ARB_texture_non_power_of_twoまたはGLバージョン> = 2.0を確認してください。

編集:アップロードする前にglPixelStorei(GL_UNPACK_ALIGNMENT, 1)を持っていることを確認してください。

+0

MFCにはGL_BGRがありません。とにかく、スワップ後に私は赤だけを参照してください:) –

+0

少し遅れていますが、感謝の仲間は、これは私をたくさん助け、私の詰まっていた青! –

関連する問題