【问题标题】:Pairwise vertex attributes in OpenGLOpenGL中的成对顶点属性
【发布时间】:2012-10-16 06:30:39
【问题描述】:

我正在尝试使用 OpenGL 可视化图形。我有 3D 空间中带有点的顶点缓冲区,以及指定顶点之间的线的索引缓冲区。我使用 glDrawElements 来绘制图形。一切正常。问题是我需要可视化边缘权重。我的问题是边缘权重是成对属性,我不知道如何将这些信息放入我的着色器中。我能想到的唯一解决方案是使用 DrawRangeElements 单独绘制每条边,并在每次调用之间设置边权重。有更好的方法吗?

【问题讨论】:

  • 什么是“成对属性”?
  • 给定顶点 A 和 B,我想要一些方法来访问描述它们之间的边/线的属性。在这种情况下重量。我基本上想为我绘制的每一行访问缓冲区中的一个属性(同时仍然使用索引缓冲区)。我希望有某种方法可以在几何着色器中做到这一点。
  • 2D 纹理中的邻接矩阵会起作用吗?每个 x/y 点的像素值将是节点 x 和节点 y 之间的边权重。
  • 如果我的图表很小的话。不幸的是,我构建的图最多可以有 700 万个顶点。 :|谢谢你的建议:)

标签: opengl


【解决方案1】:

无需使用几何着色器。只需将它们渲染为GL_LINES,根据需要复制位置,并为一行上的每对顶点提供相同的“权重”属性。这最终与渲染立方体没有什么不同,每个面都需要自己的法线。

如果(且仅当)您绝对必须恢复该内存,并且您不能简单地压缩顶点数据(使用标准化短裤、非标准化短裤或其他任何东西),这里是some techniques you can use。请注意:这是内存与性能的权衡。因此,除非您有真正的内存压力,否则只需复制您的顶点数据并完成它。

【讨论】:

  • 是的。使用 glDrawElements 没有意义,因为每一行都将使用独立的顶点索引。
  • 有没有办法避免额外的内存开销?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多