10

我有巨大的 - 大约 300 万对 - 二维点数组,我需要在基于 Qt 的应用程序中以合理的速度渲染它们。

我试过使用 QGraphicsScene,但即使在 400000 个基元上它也很慢,所以我改用 qwt 库。

它在其 sf 页面上有散点图示例屏幕截图,看起来正是我需要的,但我既找不到任何可用于此数据的实际代码,也找不到 qwt 文档中的 API - 它只提到了不同类型的曲线。

因此,最好获得一些关于散点图示例的指针和一些关于其性能的建议。也欢迎其他可以处理这种数据量的 c++ qt 兼容绘图库的建议。

4

4 回答 4

16

散点图包含在“实时”示例中:您想要的是IncrementalPlot类。我还建议绘制所有 300 万个点是不合理的,因为现代屏幕只有大约 200 万个像素:) 因此,通过将相邻点合并为一个阈值取决于缩放系数。

于 2011-07-07T14:30:09.533 回答
6

正如 viens 所指出的,生成具有 300 万个点的散点图可能不是一个好主意。

使用 OpenGL 生成 30.000 点的 3D 散点图时,我取得了良好的性能。OpenGL 速度很快,并且与 Qt 集成得很好。然而,它是一个低级 API,迫使您进行大量繁琐的编码。

VTK 可能是另一种选择。

于 2011-07-07T14:58:37.607 回答
3

MathGL是免费的 (GPL) 跨平台绘图库。它是用 C++ 编写的,并且有 Qt 小部件。它也相当快,但有 300 万个点……在我的笔记本电脑上绘图大约需要 30 秒。

于 2011-07-16T09:10:43.040 回答
1

你会建议像@vines 所说的那样使用 OpenGL,特别是利用或显示列表glGenList或顶点缓冲区。几百万个点作为基元顶点不应该那么困难。

于 2012-11-06T13:11:03.933 回答