OpenGL GL_BGR不适用于纹理内部格式

时间:2011-01-20 09:16:06

标签: opengl colors textures

从我在OpenGL文档中读到的内容来看,OpenGL优先于RGB格式的BGR格式。但是,将纹理的内部格式设置为BGR时,渲染时纹理全部为白色。当内部格式设置为RGB或RGBA时,它会正确显示。源格式是BGR开头(直接从DIB加载)。

 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(GL_TEXTURE_2D, 0, GL_BGR, pTex->nWidth, pTex->nHeight, 0, GL_BGR, GL_UNSIGNED_BYTE, pTex->pBuffer);

1 个答案:

答案 0 :(得分:2)

glTexImage2D man page开始,GL_BGR不是一个internalFormat,只是一种格式。

你应该检查GL错误,因为那样会收到这个错误。你读到的“OpenGL更喜欢BGR”是错误的。