OpenGL的纹理映射问题

Posted

技术标签:

【中文标题】OpenGL的纹理映射问题【英文标题】:Texture mapping problems with OpenGL 【发布时间】:2011-08-30 14:43:57 【问题描述】:

我在使用 OpenGL 映射纹理时遇到了一些问题。这是我目前正在尝试使用 these textures 正确加载的模型的链接。

现在这里是一个指向所有相关文件所在目录的链接:http://karvis.kapsi.fi/

问题可以从img1.jpg看到

从 3d 仓库模型中可以看出,我用红色标记的那个区域不应该用纹理映射。问题是由于某种原因,整个模型都被映射了,尽管应该也有没有纹理的区域。还有没有纹理的相同模型:img2.jpg

还有我正在编译的代码:main.cpp。我正在使用 Asset Import Library 来导入 Collada 模型,并使用 FreeImage 来将图像转换为 RGB 格式。

有人知道为什么会这样吗?也许我向 OpenGL 传递了错误的参数,或者是因为我加载这些纹理的方式还是什么?

【问题讨论】:

【参考方案1】:

在渲染纹理之前,你需要做:

glEnable(GL_TEXTURE_2D);
glBindTexture(...);
//render the texture

完成纹理渲染后,您需要禁用纹理:

glDisable( GL_TEXTURE_2D );

我在您的代码中看到您在程序开始时启用了 2d 纹理。

进一步查看您的代码,检查是否:

if(mesh->HasTextureCoords(0))

为您不希望渲染纹理的区域返回 true 或 false。

【讨论】:

似乎“if(mesh->HasTextureCoords(0))”永远不会返回 false。好像有点奇怪,可能是模型的问题。 @Joni 你确定它应该是 0,而不是别的吗?在 for 循环中有一个常量的接缝很奇怪

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

OpenGL的纹理映射问题

Opengl 纹理映射和图像分辨率

opengl 纹理映射

OpenGL纹理映射总结

OpenGL - 纹理映射不完整

OpenGL 纹理未正确映射