OpenGL:用 VBO 画线

Posted

技术标签:

【中文标题】OpenGL:用 VBO 画线【英文标题】:OpenGL: Draw lines with VBO 【发布时间】:2011-04-28 15:24:44 【问题描述】:

如何使用单个 VBO 绘制多条单独的线?

【问题讨论】:

【参考方案1】:

glDrawElements(GL_LINES, ..., ..., ...);

【讨论】:

是的。真的没有别的了。这是正确的答案。每对点形成一条线。因此,您可以在一个巨大的 VBO 中存储无限的行。【参考方案2】:

在 OpenGL-3.1 及更高版本中,有一个称为原始重启的功能。它通过指定一个特殊的顶点数组元素索引来工作,该索引导致当前图元重新启动。这样一个元素数组就可以绘制多个 GL_LINE_STRIP、GL_LINE_LOOP、GL_TRIANGLE_FAN、GL_TRIANGLE_STRIP、GL_QUAD_STRIP。

http://www.opengl.org/sdk/docs/man4/xhtml/glPrimitiveRestartIndex.xml

这主要基于 NV_primitive_restart 扩展:http://www.opengl.org/registry/specs/NV/primitive_restart.txt

除此之外,您还可以使用不共享顶点的原始类型并稍微放大元素索引数组。

【讨论】:

glDrawElements 应该足够了 - 再加上你所说的原始重启并非在所有版本中都可用。

以上是关于OpenGL:用 VBO 画线的主要内容,如果未能解决你的问题,请参考以下文章

慢跑。 OpenGL。如何更新 VBO?

在OpenGL中将纹理映射到VBO的问题

带和不带着色器的 VBO OpenGL C++

OpenGL ES:一个 VBO 中的多个网格

OpenGL画好的线条,怎么用鼠标拾取

[转]OpenGL图形渲染管线VBOVAOEBO概念及用例