gpt4 book ai didi

c++ - 如果我有一个顶点数组,我怎样才能以一种适合循环和绘制三角形带的方式对它们进行排序?

转载 作者:太空宇宙 更新时间:2023-11-04 14:26:36 24 4
gpt4 key购买 nike

我开始学习如何读取 Collada 文件 (.dae) 中打包的数据。我已经到了拥有特定网格顶点的地步。现在,我只是在调用 glBegin 和 glEnd 之间循环遍历它们,我注意到并不是所有的面孔都被渲染了。我认为这可能是因为顶点的顺序不正确,无法形成有效的三角形带。我意识到也许这个问题应该针对 blender .dae 导出器,因为这就是我正在使用的。

这正是我使用的代码:

//Vertices is a vector of vertices that I pulled from the collada file.

glBegin(GL_TRIANGLE_STRIP);
for(int i = 0; i != Vertices.size(); i++)
{
glVertex3f(Vertices[i]->x, Vertices[i]->y, Vertices[i]->z);
}
glEnd();

我要加载的模型是一架简单的飞机。这是顶点的内容:

1: 1, 1, 0
2: 1, -1, 0
3: -1, -1, 0
4: -1, 1, 0

最佳答案

你是对的,如果你想画一个简单的平面,这不是一个有效的三角形带。

你应该按照那个顺序绘制你的顶点:

1: 1, 1, 0
2: 1, -1, 0
4: -1, 1, 0
3: -1, -1, 0

你画的是:

    4      1 
|\ /|
| \ / |
| \/ |
| /\ |
| / \ |
|/____\|
3 2

看起来导出器有问题..

关于c++ - 如果我有一个顶点数组,我怎样才能以一种适合循环和绘制三角形带的方式对它们进行排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3490611/

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