[英]OpenGL texturing Triangles
我有一個充滿三角形的varray,形成一個大的正方形。 我正在嘗試紋理這個大的正方形,而我所得到的(似乎)是一個像素列,然后在原始圖像上拉伸。
我用UV坐標(0,1),(0,0),(1,0)和(0,1),(1,1),(1,0)紋理每個直角三角形,具體取決於哪個方向三角形是。
渲染代碼。
glBindTexture(GL_TEXTURE_2D, m_texture.id());
//glEnableClientState(GL_INDEX_ARRAY);
glEnableClientState(GL_VERTEX_ARRAY);
glEnableClientState(GL_NORMAL_ARRAY);
glEnableClientState(GL_TEXTURE_COORD_ARRAY);
//glIndexPointer(GL_INT, 0, &m_indices[0]);
glVertexPointer(3, GL_FLOAT, sizeof(VertexData), &m_vertexData[0].x);
glNormalPointer(GL_FLOAT, sizeof(VertexData), &m_vertexData[0].nx);
glTexCoordPointer(2, GL_FLOAT, sizeof(UVData), &m_uvData[0].u);
glDrawElements(GL_TRIANGLES, m_indices.size(), GL_UNSIGNED_INT, &m_indices[0]);
glBindTexture(GL_TEXTURE_2D, 0);
紋理是包裝模式是GL_CLAMP_TO_EDGE
編輯
輸出前兩個三角形我得到值...
三角1:
指數(0,1,31)
Vertex0(-15,0,-15),Vertex1(-15,0,-14),Vertex31(-14,0,-14)
UV(0,1),(0,0),(1,0)
三角2:
指數(0,30,31)
Vertex0(-15,0,-15),Vertex30(-14,0,-15)Vertex31(-14,0,-14)
UV(0,1),(1,1),(1,0)
對於后代,完整的代碼在這里
兩個三角形組成一個正方形,從左上角到右下角切割對角線。
不要使用glIndexPointer,不是你想的那樣,用於顏色索引模式,做索引網格只需使用glDrawElements。
看起來您將UV數據與索引相關聯,而不是與頂點相關聯。 UV數據是頂點數據的一部分,因此您應該將其打包在VertexData對象中,而不是將其分開。 你可以將它分開,但每個頂點需要一個,而不是每個索引一個。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.