孤独的猫 发表于 2019-2-15 10:50:13

请教下 QT 画上千个 多边形的 效率问题,

本帖最后由 孤独的猫 于 2019-2-15 12:50 编辑

咨询下大佬,用QT在一个固定大小方框里画N(几千,到几万个,矢量地图)个多边形。 部分多边形的坐标位置,已经超出了BMP大小,等于不显示。
1 :可以直接画,QT自己会处理,不知道QT怎么处理。
2 :我自己判断,那些多边形不需要画,那些多边形只画部分。

请教大佬,1方法和2方法,那个的速度更快呀?

qtechzdh 发表于 2019-2-15 11:27:44

好奇你要干啥

huangqi412 发表于 2019-2-15 12:41:37

类似网页那种粒子特效?

孤独的猫 发表于 2019-2-15 12:46:53

qtechzdh 发表于 2019-2-15 11:27
好奇你要干啥

画矢量地图呀,矢量地图,就是很多边形组成的。

孤独的猫 发表于 2019-2-15 12:47:13

huangqi412 发表于 2019-2-15 12:41
类似网页那种粒子特效?

不是的,是矢量地图的多边形。

nanfang2000 发表于 2019-2-15 13:13:51

当然是用QT更方便了,否则需要剪切画图,还需要4叉树优化。QT都为你做好了。
QT里有个Example就是n多个小图片显示在一个QtGraphicView里,专门就是干这个的。里面有个scene和view的概念。scene可以很大,而view就是你实际显示的窗口,超出view边框的内容都看不见,移动内容,view就更新显示

wye11083 发表于 2019-2-15 13:39:26

nanfang2000 发表于 2019-2-15 13:13
当然是用QT更方便了,否则需要剪切画图,还需要4叉树优化。QT都为你做好了。
QT里有个Example就是n多个小图 ...

效率效率。目前qt画图可能以opengl为主,但是整体给我的感受是,qt相当卡。

flamma 发表于 2019-2-15 15:05:48

wye11083 发表于 2019-2-15 13:39
效率效率。目前qt画图可能以opengl为主,但是整体给我的感受是,qt相当卡。 ...

qt看是什么画, qtquick才是opengl。我觉得效率还可以,开intel集显的硬件加速画10w个点的散点图都是秒画。

richards 发表于 2019-2-15 15:25:15

flamma 发表于 2019-2-15 15:05
qt看是什么画, qtquick才是opengl。我觉得效率还可以,开intel集显的硬件加速画10w个点的散点图都是秒画 ...

widget 如果用 sgh 或者 qgriphicsview 的话 是可以以用opengl做后端的

孤独的猫 发表于 2019-2-15 15:53:20

本帖最后由 孤独的猫 于 2019-2-15 16:19 编辑

nanfang2000 发表于 2019-2-15 13:13
当然是用QT更方便了,否则需要剪切画图,还需要4叉树优化。QT都为你做好了。
QT里有个Example就是n多个小图 ...

嗯嗯,我得到是 很多多边形的坐标数据,比如有1万个多边形, 但当前显示只要其中的100个。
我是先判断,找出需要的100个,然后去绘制显示,还是直接把1000个全画了,让QT 自己去显示,效果更高呢?
现在用的是QT Quick画图是用 QQuickPaintedItem   实现的。qt quick 好像也是类似QtGraphicView这样的?
{:funk:}至于 4叉树优化 的完全不懂了就。{:mad:}

孤独的猫 发表于 2019-2-15 15:54:24

flamma 发表于 2019-2-15 15:05
qt看是什么画, qtquick才是opengl。我觉得效率还可以,开intel集显的硬件加速画10w个点的散点图都是秒画 ...

现在用的就是qtquick ,但不知道怎么它是调用GPU的,画多边形,也是GPU完成的?

flamma 发表于 2019-2-15 16:41:53

孤独的猫 发表于 2019-2-15 15:54
现在用的就是qtquick ,但不知道怎么它是调用GPU的,画多边形,也是GPU完成的? ...

它是调用opengl接口的,这个可以是软实现的,也可以是显卡GPU实现的。比如QQuickWindow::setSceneGraphBackend可以指定用什么。

nanfang2000 发表于 2019-2-15 16:58:27

不要想自己实现了除非是大公司。这里头涉及的知识和工作量还是蛮大的。QT实现一万个三角形应该是没问题的,不行的话你按楼上的方法用opengl后端。

还有一个库,比QT简单,nanovg,纯opengl实现矢量图,效率非常高
https://github.com/memononen/nanovg

孤独的猫 发表于 2019-2-15 17:16:20

flamma 发表于 2019-2-15 16:41
它是调用opengl接口的,这个可以是软实现的,也可以是显卡GPU实现的。比如QQuickWindow::setSceneGraphBa ...

好的,谢谢了,我研究研究下。

孤独的猫 发表于 2019-2-15 17:16:55

nanfang2000 发表于 2019-2-15 16:58
不要想自己实现了除非是大公司。这里头涉及的知识和工作量还是蛮大的。QT实现一万个三角形应该是没问题的, ...

好的,我看下,谢谢了!{:handshake:}
页: [1]
查看完整版本: 请教下 QT 画上千个 多边形的 效率问题,