使用OpenGL提高Contour渲染的性能?

时间:2011-08-25 02:28:16

标签: performance opengl graphics rendering opengl-3

请参阅the video

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

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

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

我的问题是:

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

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

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

1 个答案:

答案 0 :(得分:2)

远离显示列表并切换到vertex arrays (VAs)vertex buffer objects (VBOs)应该可以为您带来不错的加速效果。

通过将第一个参数更改为glDrawArrays(),您可以非常GL_LINE_STRIPGL_POINTS之间轻松切换。不需要两个几何副本。