gpt4 book ai didi

c++ - 在 QQuickItem 中绘制多个不同颜色的点

转载 作者:行者123 更新时间:2023-11-28 00:21:46 24 4
gpt4 key购买 nike

我想在自定义 QQuickItem 中渲染具有很多点 (>1.000.000) 和不同颜色的绘图。

稍后我想为这些点设置动画(在坐标和颜色之间淡入淡出),所以我认为 QQuickPaintedItem 对此不够快,我必须使用 updatePaintNode 接口(interface)QQuickItem.

问题是为每个点设置颜色。我必须为每个 Point 创建一个 QSGGeometryNode 并添加 Geometry 和 ColorMaterial 吗?还是有更快的解决方案?

最好的问候

最佳答案

200 万个元素很多,我相信 GUI 卡住是因为 updatePaintNode 中的循环(GUI 线程在 updatePaintNode 执行期间被阻塞,如 documentation states )。

想法 #1

如果您不经常更改整个点数组,您可以在 updatePaintNode 中仅更新那些自上次绘制以来发生更改的顶点,而不是每次都运行巨大的 2kk 循环。但是据我所知,在调整直方图大小时,您仍然需要更新所有顶点。

想法 #2

另一个潜在的优化可能是在 updatePaintNode 之前准备顶点数据数组,然后在内部使用 memcpystd::copy 复制整个数组更新绘画节点。整体复制连续内存阵列tends to be much faster而不是按元素复制,并且由于您正在使用访问器函数填充数组,所以我不确定它是否已被编译器优化。

想法#3

200 万个点似乎太多了,无法在一张图表上呈现。一次呈现如此多的数据会损害用户体验,因为不同颜色的点会重叠,用户可能会错过有值(value)的信息。

您可以通过将相同颜色的点合并在一起并可视化这些簇而不是单独的点来降低细节级别。但是,这种方法需要付出很大的努力,所以我建议在不太复杂的解决方案不起作用时尝试这种方法。

关于c++ - 在 QQuickItem 中绘制多个不同颜色的点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27161751/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com