我有一个简单的对象(box.obj),它本质上是一个立方体,但由50个左右的矢量,法线和纹理坐标组成。纹理映射问题OpenGL GLUT
然后,我有我想要映射到它一砖JPEG纹理:
我使用jpeglib将图像导入到纹理,而这一切工作正常,我的问题附带了纹理如何映射到多维数据集。这是它结束了看起来像:
通知怪异的卷曲两侧和正面和顶部的大砖头。我对立方体下面的'桌子'也是这样,它应该有木质纹理,但是它是模糊/块状的。
下面是我用来获取对象/纹理的解析器。这在显示功能中被调用。
for (int i = 0; i < m_nNumPolygon; i++) {
glBegin(GL_TRIANGLES);
glTexCoord2f(m_pUVArray[m_pTriangles[i].v1].u, m_pUVArray[m_pTriangles[i].v1].v);
glNormal3f(m_pNormalArray[m_pTriangles[i].n1].x,
m_pNormalArray[m_pTriangles[i].n1].y,
m_pNormalArray[m_pTriangles[i].n1].z);
glVertex3f(m_pVertexArray[m_pTriangles[i].v1].x,
m_pVertexArray[m_pTriangles[i].v1].y,
m_pVertexArray[m_pTriangles[i].v1].z);
glTexCoord2f(m_pUVArray[m_pTriangles[i].v2].u, m_pUVArray[m_pTriangles[i].v2].v);
glNormal3f(m_pNormalArray[m_pTriangles[i].n2].x,
m_pNormalArray[m_pTriangles[i].n2].y,
m_pNormalArray[m_pTriangles[i].n2].z);
glVertex3f(m_pVertexArray[m_pTriangles[i].v2].x,
m_pVertexArray[m_pTriangles[i].v2].y,
m_pVertexArray[m_pTriangles[i].v2].z);
glTexCoord2f(m_pUVArray[m_pTriangles[i].v3].u, m_pUVArray[m_pTriangles[i].v3].v);
glNormal3f(m_pNormalArray[m_pTriangles[i].n3].x,
m_pNormalArray[m_pTriangles[i].n3].y,
m_pNormalArray[m_pTriangles[i].n3].z);
glVertex3f(m_pVertexArray[m_pTriangles[i].v3].x,
m_pVertexArray[m_pTriangles[i].v3].y,
m_pVertexArray[m_pTriangles[i].v3].z);
glEnd();
}
让我知道如果我需要发布任何更多的代码,例如。如何读取物体或进行什么操作!
加载几何后,打印所有顶点数据并检查它是否与输入文件匹配。此外,您应该将glBegin()/ glEnd()移动到for循环外(使用GL_TRIANGLES可以一次输出_many_三角形)。使用维也纳国际组织会更好。 – XDnl 2014-09-25 08:58:39
您对顶点和纹理坐标采用相同的索引(v1,v2,v3)。但obj通常为顶点和纹理坐标使用单独的indice集。 – galinette 2014-09-25 09:16:14
目标文件的格式为v x。**,y。**,z。** vt u。** v。** vn x。** y。** z。** f vectorindex/vectorindex/vectorindex vectorindex/vectorindex/vectorindex vectorindex/vectorindex/vectorindex'不确定是否有帮助?想不到你会如何映射纹理... – Finn 2014-09-25 09:36:00