[英]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.