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