2013-05-05 90 views
2

好吧,这已经让我疯狂了4天了。我没有生成顶点/点的问题,但是如何以合理高效/优雅的方式制作封闭的多边形或线框?从顶点绘制3D多边形(OpenGL/C++)

另一个问题是如何存储顶点?我应该以什么顺序存储3D对象的顶点?我真的不能再想了,我在网上寻找解决方案,但找不到任何解决方案。

我想到的是将顶点存储在二维数组中,水平(x和z)边缘循环为行,垂直(y)为列,但我怀疑这是一个很好的方法来做到这一点。

+0

立即模式如何:'glBegin(GL_POLYGON); glVertex(一); glVertex(b)中; glVertex(C); glEnd();'? – 2013-05-05 17:41:14

+0

你应该添加一些细节。你尝试了什么,什么不起作用?或者你为什么不觉得它够优雅?我没有看到,即使这四天中只有一天用google搜索也没有帮助你。 – 2013-05-06 17:43:01

+0

重要的是,为什么downvotes?而我并没有要求使用什么代码。我要求提供算法或方法的提示。但没关系,我想我有一个想法。 – Valentin 2013-05-07 15:16:16

回答

1

创建一维顶点数组,并按照您喜欢的顺序放置它们(尽管对于性能来说,更好地将它们排序为条状示例......)。创建一个索引数组(例如一个短阵列),索引数组中的每个元素应该指向顶点数组顶点的索引。将它们构建为一维数组的原因在于,这是OpenGL内部处理事物的方式。

如果你的问题是你没有一个元素数组,而只是一组你想绘制的网格点,你首先需要生成这样的数组。首先了解三角形拓扑的基本知识:http://gamma.cs.unc.edu/COMP770/LECTURES/11trimesh.pdf,然后想办法从一组点生成网格。

+1

第二个链接似乎很方便,谢谢。 – Valentin 2013-05-07 15:19:32

+0

不客气! – Trax 2013-05-07 15:22:13

1

当涉及到三维顶点时,没有标准的顺序。您可以订购它们,无论您喜欢或适合您与他们合作的方式。