2012-07-09 164 views
1

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

由于代码相当长,我上传了所有neccessery文件。您可以从here下载它。

编辑:我试过从提到的书(TGA加载描述那里)复制代码,它不工作。似乎在从文件加载图像数据时加载Stuck(奇怪)。就我的问题而言,我认为这并不重要。

+2

使用[SDL_image(http://www.libsdl.org/projects/SDL_image/),[土壤](http://www.lonesock.net/soil.html)或类似的图书馆。您不必亲自编写它,它会自动支持多种图像格式。 – 2012-07-09 14:54:42

回答

4

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

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

可能会有更多的检查,但这些是那些现在打我的头

+0

优秀的答案!我不能让自己更清楚。 – Oskar 2012-07-09 18:41:02

+0

显然这个问题相当复杂。我的BMP加载和渲染函数一定是错误地编写的,因为交换到SOIL和摆脱所有_glColor_我终于设法显示纹理。感谢帮助 :) – Robin92 2012-07-10 07:19:29