【问题标题】:drawing time series of millions of vertices using OpenGL使用 OpenGL 绘制数百万个顶点的时间序列
【发布时间】:2020-09-28 04:06:09
【问题描述】:

我正在开发一个数据可视化应用程序,我需要在其中绘制大约 20 个不同的二维时间序列,每个时间序列由几百万个数据点组成。我需要能够左右缩放和平移数据以查看它,并且需要能够将光标放在数据上以测量时间间隔并检查数据点。非常重要的是,当一直缩小时,我可以轻松地发现数据中的异常值并放大以查看它们。因此,对数据进行平均可能会有问题。

我有一个在 linux 上使用标准 GUI 框架的幼稚实现,这太慢了,不实用。我正在考虑使用正交投影代替 OpenGL(在 Radeon RX480 GPU 上测试)。我四处搜索,似乎画线条的 VBO 可能会起作用,但我不知道这是否是最好的解决方案(会给我最好的帧速率)。

什么是发送由数百万个顶点组成的数据集到GPU的最佳方式,假设数据没有改变,并且每次用户与之交互时都会重新绘制(平移/缩放/点击它)?

【问题讨论】:

    标签: opengl gpu drawing data-visualization vbo


    【解决方案1】:

    在现代 OpenGL(版本 3/4 核心配置文件)中,VBO 是将几何/非图像数据传输到 GPU 的标准方式,所以是的,您几乎肯定会最终使用 VBO。

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

    最大的加速将来自将所有数据点存储在 GPU 上,而不是像 2D GUI 那样在每一帧上复制。所以做最简单的事情,然后担心速度。

    如果您是 OpenGL 新手,我推荐《OpenGL SuperBible》第 6 或第 7 版一书。有许多优秀的在线 OpenGL 指南和参考资料,请确保避免使用为 OpenGL 1/2 编写的较旧的指南和参考资料。

    希望这会有所帮助。

    【讨论】:

      猜你喜欢
      • 2021-01-22
      • 2015-03-03
      • 1970-01-01
      • 2023-04-03
      • 2016-04-26
      • 1970-01-01
      • 1970-01-01
      • 2017-01-11
      • 2011-06-18
      相关资源
      最近更新 更多