2011-01-20 3 views
3

OpenGLのドキュメントで読んだところから、OpenGLはRGBよりもBGRフォーマットを好んでいます。しかし、テクスチャの内部フォーマットをBGRに設定すると、テクスチャはレンダリング時にすべて白です。内部フォーマットをRGBまたはRGBAに設定すると、正しく表示されます。ソース形式はBGRで始まります(DIBから直接ロードされます)。OpenGL GL_BGRがテクスチャ内部フォーマットでは機能しない

glBindTexture(GL_TEXTURE_2D, id); 
glPixelStorei(GL_UNPACK_ALIGNMENT, 4); 
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, nClamp); 
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, nClamp); 
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, nMagFilter); 
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, nMinFilter); 
glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE); 

次の行が問題です... GL_BGRに内部形式を設定するすべてのもの、すべての白... GL_RGBへの変更は、それがglTexImage2D man pageから正しく

glTexImage2D(GL_TEXTURE_2D, 0, GL_BGR, pTex->nWidth, pTex->nHeight, 0, GL_BGR, GL_UNSIGNED_BYTE, pTex->pBuffer); 
+0

「nMinFilter」とは何ですか?それに 'MIPMAP'がある場合は、完全なミップマップレベルのセットを提供する必要があります。 – genpfault

答えて

2

をレンダリング可能になり、GL_BGRではありません内部フォーマット、ちょうどフォーマット。

GLエラーは、このエラーをキャッチしたのでチェックしてください。あなたが "OpenGLを好むBGR"について読んだものは、間違っています。