我有一個簡單的對象(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