【问题标题】:Drawing a 3D polygon from vertices (OpenGL/C++)从顶点绘制 3D 多边形 (OpenGL/C++)
【发布时间】:2023-03-14 14:17:01
【问题描述】:

好的,这已经让我发疯了 4 天了。我在生成顶点/点方面没有问题,但是如何以合理有效/优雅的方式从它们制作一个封闭的多边形或线框?

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

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

【问题讨论】:

  • 立即模式怎么样:glBegin(GL_POLYGON); glVertex(a); glVertex(b); glVertex(c); glEnd();
  • 你应该添加一些细节。你尝试了什么,什么没有奏效?或者你为什么觉得它不够优雅?我看不出这四天的其中一天在谷歌上搜索对你有多大帮助。
  • 说真的,为什么投反对票?而且我不是要使用什么代码。我正在寻求算法或方法的提示。不过没关系,我想我有个主意。

标签: c++ opengl graphics 3d vertices


【解决方案1】:

创建一个 1D 顶点数组,并将它们按您喜欢的顺序排列(尽管对于性能而言,将它们排序为带状示例会更好......)。创建一个索引数组(例如一个短裤数组),索引数组中的每个元素都应该指向顶点数组中的一个 index 顶点。将它们构建为一维数组的原因是这是 OpenGL 在内部处理事物的方式。

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

【讨论】:

    【解决方案2】:

    3d 顶点没有标准顺序。您可以根据自己的喜好或适合您的工作方式来订购它们。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-03-14
      • 2018-09-29
      • 1970-01-01
      • 1970-01-01
      • 2023-03-27
      • 2016-02-10
      相关资源
      最近更新 更多