【发布时间】:2011-01-20 18:27:48
【问题描述】:
根据我在 OpenGL 文档中阅读的内容,OpenGL 更喜欢 BGR 格式而不是 RGB。但是,将纹理的内部格式设置为 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);
【问题讨论】:
-
什么是
nMinFilter?如果其中包含MIPMAP,您将不得不提供一套完整的 mipmap 级别。