纹理不起作用

Posted

技术标签:

【中文标题】纹理不起作用【英文标题】:Texturing Not Working 【发布时间】:2010-02-09 06:05:34 【问题描述】:

我正在使用此站点的代码: http://www.spacesimulator.net/tut4_3dsloader.html

它在他们的示例项目中有效,但是当我将代码放入一个类中以便更容易和更模块化地使用时,纹理无法出现在对象上。

我已经通过并排调试来仔细检查纹理 ID 是否正确。 在我的项目中,我得到一个空白的白色对象,而示例工作正常。

是否有任何方法可以判断引擎盖下发生了什么?我可以调用的任何错误函数都可以给我一些提示吗?现在我只是猜测。 (是的,我启用了 2D 纹理。

谢谢!

【问题讨论】:

你在哪个平台上?您是否尝试过使用开箱即用的代码? 我很乐意提供源代码,但我不知道上传 16 兆左右压缩文件的好地方在哪里。 :) 【参考方案1】:

glGetLastError()

或 glGetError()

这是什么...

确保 glEnable(GL_TEXTURE_2D);

并确保使用 glBindTexture 绑定纹理

确保正在渲染纹理坐标并且它们是正确的(如果它们都相同,或者所有相同的未初始化值,您将在整个事物中获得一种颜色)

嗯…… 确保你的纹理矩阵没有搞砸...... glMatrixMode(GL_TEXTURE); glLoadIdentity(); 如果你不使用它...

然后嗯....

确保加载纹理时加载的数据是正确的。

确保您在 mip 贴图中加载了 mipmap,否则,如果您的对象处于不同的缩放比例,您可能无法获得任何纹理...

嗯... 这就是我能想到的全部。

编辑:

哦,我只记得有一次抓住了我:

通过改变结构,你可能改变了应用的初始化顺序。

确保在初始化 opengl 之前没有尝试加载纹理(使用设备上下文或其他任何东西,我在 windows 下)

【讨论】:

这里的最后一句话是我做的。 xD【参考方案2】:

确保您上传的是complete texture。

【讨论】:

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

OpenGL - 链接两个纹理不起作用

GLSL 纹理不起作用

科拉达。双面纹理不起作用

为啥我的 OpenGL 纹理不起作用?

OpenGL VBO球体纹理加载不起作用

多个 OpenGL 纹理在某些情况下不起作用?