2

请参阅视频

在我的应用程序中,我使用使用 GL_LINE_STRIP 创建的 DisplayList 显示轮廓堆栈。

用户可以使用鼠标选择轮廓线。为此,在渲染 DisplayList 之前,我使用独特的颜色渲染所有轮廓并读取鼠标下的像素颜色。(如此处所述)。渲染是使用“立即模式”完成的。

用户还可以移动、删除选定的轮廓。在这种情况下,我会重新生成 DisplayList。

我的问题是:

1)我正在使用旧的 OpenGL 技术。(固定管道架构。)有没有办法使用新的 OpenGL 技术来提高性能?(使用GPU,着色器...等)因为对于大量的轮廓,操作并不流畅。

2)我认为为轮廓选择完成的“立即模式”渲染也是一个性能面板。有没有更好的方法来做到这一点?

3) 我需要将轮廓节点显示为点云,使用 GL_POINTS。在此,我应该使用 GL_POINTS 创建另一个 DisplayList?(这意味着有两个 DisplayLists;一个用于显示线,另一个用于显示点)?

4

1 回答 1

2

远离显示列表并切换到顶点数组 (VA)顶点缓冲区对象 (VBO)应该会给您带来不错的加速。

通过将第一个参数更改为 ,您可以非常轻松地在GL_LINE_STRIP和之间切换。不需要您的几何图形的两个副本。GL_POINTSglDrawArrays()

于 2011-08-25T06:15:02.300 回答