使用OpenGL绘制数百万个顶点的时间序列

问题描述 投票:1回答:1

我正在开发一个数据可视化应用程序,在该应用程序中,我需要绘制大约20个以2D叠加的不同时间序列,每个时间序列都包含几百万个数据点。我需要能够左右缩放数据以查看它,并且需要能够将光标放在数据上以测量时间间隔并检查数据点。非常重要的一点是,当完全缩小时,我可以轻松地发现数据中的异常值并进行放大以查看它们。因此,平均数据可能会出现问题。

我在Linux上使用标准GUI框架进行了幼稚的实现,这太慢了,无法实用。我正在考虑使用具有正交投影的OpenGL(在Radeon RX480 GPU上测试)。我四处搜寻,似乎VBO可以画线带,但是我不知道这是否是最好的解决方案(会给我最好的帧速率)。

将包含数百万个顶点的数据集发送到GPU的最佳方法是,假设数据不变,并且每次与用户进行交互(平移/缩放/单击)时都会重绘,该方法是什么?

opengl gpu drawing data-visualization vbo
1个回答
0
投票

[在现代OpenGL(3/4核心版本)中,VBO是将几何/非图像数据传输到GPU的标准方法,因此,您几乎肯定会最终使用VBO。

替代方案是统一缓冲区或纹理缓冲区对象,但是对于您正在描述的应用程序,使用它们时我看不到任何性能优势-甚至可能更糟-并使代码复杂化。

最大的加速来自将所有数据点存储在GPU上,而不是像2D GUI那样在每帧上复制。因此,最简单的方法起作用了,然后担心速度。

如果您是OpenGL的新手,我建议您参阅《 OpenGL SuperBible》第六版或第七版。在线上有很多不错的OpenGL指南和参考,只要确保避免使用为OpenGL 1/2编写的较旧的指南。

希望这会有所帮助。

© www.soinside.com 2019 - 2024. All rights reserved.