BMP 纹理不显示

Posted

技术标签:

【中文标题】BMP 纹理不显示【英文标题】:BMP texture doesn't show 【发布时间】:2012-07-09 09:50:34 【问题描述】:

我在学习如何在 OpenGL 中进行纹理处理时遇到了一个问题(来自 OpenGL 第 5 版圣经)。问题是我无法显示我的纹理。我使用自己编写的函数从 BMP 文件加载它。

由于代码很长,我上传了所有必需的文件。您可以从here下载。

编辑:我尝试从提到的书中复制代码(那里描述了 TGA 加载),但效果不佳。加载似乎卡在从文件加载图像数据(奇怪)。我想就我的问题而言,这无关紧要。

【问题讨论】:

使用SDL_image、SOIL或类似的库。您不必自己编写它,它会自动支持多种图像格式。 【参考方案1】:

有用于检查问题的一般调试步骤。我将在下面列出它们,希望您能找到错误(以及未来的读者):

文件是否存在?文件是否根据格式正确读取?你是否让它与 OpenGL 很好地融合在一起?我的建议:不要自己弄这些东西。使用图书馆。有一个惊人的轻量级SOIL (Simple OpenGL Image library) 您是否在初始化 OpenGL 之前加载纹理?这一直是我的问题,因为我曾经在(某个类的)构造函数中“加载”并执行glBindTexture(..)。这些对象是在 OpenGL 初始化之前创建的。 您是否启用了GL_TEXTURE_2D?检查初始化代码,使用:glEnable(GL_TEXTURE_2D) 您是否将纹理正确映射到四边形或您想要的形状?在这里扩展这个(有点)超出了范围。那里有很棒的tutorials。 (看起来很愚蠢,但有时会发生)你是不是把glColor3f(0,0,0) 的对象涂黑了?

可能会有更多检查,但这些是我现在最头疼的问题

【讨论】:

显然问题相当复杂。我的 BMP 加载和渲染函数一定是写错了,因为切换到 SOIL 并摆脱了所有 glColor 我终于设法显示纹理。感谢您的帮助:)

以上是关于BMP 纹理不显示的主要内容,如果未能解决你的问题,请参考以下文章

为啥 SDL 程序不显示 BMP 图片?

OpenGL 纹理 DSA 不显示纹理

OpenGL中不用AUX库来加载BMP图片作为纹理

LibGDX fbx 导出不显示图像纹理 - 显示为黑色

OpenGL纹理不显示

OpenGL - 纹理显示不正确(夹紧?)