gpt4 book ai didi

c++ - 我的长方体哪里出了问题?

转载 作者:行者123 更新时间:2023-11-28 07:39:30 25 4
gpt4 key购买 nike

我正在使用顶点数组在 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
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
};

问题来了: enter image description here

正面和背面渲染良好,但顶部、底部、左侧和右侧出现倾斜。

我哪里错了?

最佳答案

您的纹理坐标和顶点索引看起来不对。由于顶点 #2(坐标为 halfW、halfH、-halfW)具有纹理坐标 (0, 0),因此顶点 #6(坐标为 halfW、halfH、halfW)不应具有纹理坐标 (1, 1)。它所做的是将纹理坐标为 (0, 0) 和 (1, 1) 的顶点放在同一条边上,这会导致麻烦。

立方体的问题是每个顶点一个 2D 纹理坐标不足以将纹理映射到像这样的立方体上(无论您尝试放置它们,最终都会出现奇怪的结果边)。

解决方案是要么添加额外的三角形,以便没有边与另一边共享顶点,要么查看 Cube Maps在 3D 中指定纹理坐标的位置(就像顶点一样)。我建议使用 Cube Maps,因为它可以避免添加冗余顶点。

关于c++ - 我的长方体哪里出了问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16125594/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com