2011-05-22 199 views
1

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

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

这个问题可以从img1.jpg

可以看到我用红色标出这个区域是不应该与映射纹理,你可以从3D仓库模型中看到。问题是,由于某种原因,整个模型被映射,但也应该有没有纹理的区域。还有没有纹理的相同型号:img2.jpg

而我正在编译的代码是:main.cpp。我使用资产导入库导入Collada模型和FreeImage以将图像转换为RGB格式。

有谁知道为什么会发生这种情况?也许我传递错误的参数给OpenGL,或者是我加载这些纹理的方式?

回答

2

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

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

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

glDisable(GL_TEXTURE_2D); 

所有我在你的代码,你能看到2d纹理在节目的开始。

通过您的代码进一步看,检查此:

if(mesh->HasTextureCoords(0)) 

返回TRUE或FALSE的领域,你不想被渲染的纹理。

+0

似乎“if(mesh-> HasTextureCoords(0))”永远不会返回false。看起来有点奇怪,也许问题出在模型上。 – Joni 2011-05-22 14:53:54

+0

@Joni你确定它应该是0,而不是别的?接缝在for循环中有一个常量 – 2011-05-22 14:56:04