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 纹理不显示的主要内容,如果未能解决你的问题,请参考以下文章