C++ 我的长方体哪里出了问题?
我正在OpenGL中使用顶点数组创建一个长方体,但我的纹理似乎出了点问题 这是我的密码:C++ 我的长方体哪里出了问题?,c++,arrays,opengl,vertex,C++,Arrays,Opengl,Vertex,我正在OpenGL中使用顶点数组创建一个长方体,但我的纹理似乎出了点问题 这是我的密码: float halfW = getW() / 2; float halfH = getH() / 2; GLubyte myIndices[]={ 1, 0, 2, //front 2, 0, 3, 4, 5, 7, //back 7, 5, 6, 0, 4, 3, //left
float halfW = getW() / 2;
float halfH = getH() / 2;
GLubyte myIndices[]={
1, 0, 2, //front
2, 0, 3,
4, 5, 7, //back
7, 5, 6,
0, 4, 3, //left
3, 4, 7,
5, 1, 6, //right
6, 1, 2,
7, 6, 3, //up
3, 6, 2,
1, 0, 5, //down
5, 0, 4
};
float myVertices[] = {
-halfW, -halfH, -halfW, // Vertex #0
halfW, -halfH, -halfW, // Vertex #1
halfW, halfH, -halfW, // Vertex #2
-halfW, halfH, -halfW, // Vertex #3
-halfW, -halfH, halfW, // Vertex #4
halfW, -halfH, halfW, // Vertex #5
halfW, halfH, halfW, // Vertex #6
-halfW, halfH, halfW // Vertex #7
};
float myTexCoords[]= {
1.0, 1.0, //0
0.0, 1.0, //1
0.0, 0.0, //2
1.0, 0.0, //3
0.0, 0.0, //4
1.0, 0.0, //5
1.0, 1.0, //6
0.0, 1.0 //7
};
问题是:
正面和背面渲染良好,但顶部、底部、左侧和右侧倾斜
我哪里出错了?您的纹理坐标和顶点索引看起来不正确。由于顶点#2(坐标为halfW,halfH,-halfW)具有纹理坐标(0,0),因此顶点#6(坐标为halfW,halfH,halfW)不应具有纹理坐标(1,1)。它所做的是将具有纹理坐标(0,0)和(1,1)的顶点放置在同一条边上,这会导致麻烦 立方体的问题在于,每个顶点的一个2D纹理坐标不足以将纹理映射到这样的立方体上(无论你如何放置它们,最终都会产生奇怪的边)
解决方案是添加额外的三角形,以便任何一侧都不与另一侧共享顶点,或者查看在3D中指定纹理坐标的位置(就像顶点一样)。我建议使用立方体贴图,因为它可以避免添加冗余顶点。是“旧”OpenGL还是“新”(着色器)OpenGL?什么是
halfW
?对不起,不知道它是新的还是旧的,我是OpenGL的新手,如何检查?