【问题标题】:OpenGL GL_BGR not working for texture internal formatOpenGL GL_BGR 不适用于纹理内部格式
【发布时间】: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 级别。

标签: opengl colors textures


【解决方案1】:

glTexImage2D man page来看,GL_BGR 不是内部格式,只是一种格式。

您应该检查 GL 错误,因为这样会发现此错误。你读到的关于“OpenGL 更喜欢 BGR”的内容是错误的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-07-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多