1

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

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

问题可以从img1.jpg

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

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

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

4

1 回答 1

2

在渲染纹理之前,您需要执行以下操作:

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

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

glDisable( GL_TEXTURE_2D );

我在您的代码中看到的所有内容都表明您在程序开始时启用了 2d 纹理。

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

if(mesh->HasTextureCoords(0))

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

于 2011-05-22T14:36:59.067 回答