请教下 QT 画上千个 多边形的 效率问题,
本帖最后由 孤独的猫 于 2019-2-15 12:50 编辑咨询下大佬,用QT在一个固定大小方框里画N(几千,到几万个,矢量地图)个多边形。 部分多边形的坐标位置,已经超出了BMP大小,等于不显示。
1 :可以直接画,QT自己会处理,不知道QT怎么处理。
2 :我自己判断,那些多边形不需要画,那些多边形只画部分。
请教大佬,1方法和2方法,那个的速度更快呀? 好奇你要干啥 类似网页那种粒子特效? qtechzdh 发表于 2019-2-15 11:27
好奇你要干啥
画矢量地图呀,矢量地图,就是很多边形组成的。 huangqi412 发表于 2019-2-15 12:41
类似网页那种粒子特效?
不是的,是矢量地图的多边形。 当然是用QT更方便了,否则需要剪切画图,还需要4叉树优化。QT都为你做好了。
QT里有个Example就是n多个小图片显示在一个QtGraphicView里,专门就是干这个的。里面有个scene和view的概念。scene可以很大,而view就是你实际显示的窗口,超出view边框的内容都看不见,移动内容,view就更新显示 nanfang2000 发表于 2019-2-15 13:13
当然是用QT更方便了,否则需要剪切画图,还需要4叉树优化。QT都为你做好了。
QT里有个Example就是n多个小图 ...
效率效率。目前qt画图可能以opengl为主,但是整体给我的感受是,qt相当卡。 wye11083 发表于 2019-2-15 13:39
效率效率。目前qt画图可能以opengl为主,但是整体给我的感受是,qt相当卡。 ...
qt看是什么画, qtquick才是opengl。我觉得效率还可以,开intel集显的硬件加速画10w个点的散点图都是秒画。 flamma 发表于 2019-2-15 15:05
qt看是什么画, qtquick才是opengl。我觉得效率还可以,开intel集显的硬件加速画10w个点的散点图都是秒画 ...
widget 如果用 sgh 或者 qgriphicsview 的话 是可以以用opengl做后端的 本帖最后由 孤独的猫 于 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:} flamma 发表于 2019-2-15 15:05
qt看是什么画, qtquick才是opengl。我觉得效率还可以,开intel集显的硬件加速画10w个点的散点图都是秒画 ...
现在用的就是qtquick ,但不知道怎么它是调用GPU的,画多边形,也是GPU完成的? 孤独的猫 发表于 2019-2-15 15:54
现在用的就是qtquick ,但不知道怎么它是调用GPU的,画多边形,也是GPU完成的? ...
它是调用opengl接口的,这个可以是软实现的,也可以是显卡GPU实现的。比如QQuickWindow::setSceneGraphBackend可以指定用什么。 不要想自己实现了除非是大公司。这里头涉及的知识和工作量还是蛮大的。QT实现一万个三角形应该是没问题的,不行的话你按楼上的方法用opengl后端。
还有一个库,比QT简单,nanovg,纯opengl实现矢量图,效率非常高
https://github.com/memononen/nanovg flamma 发表于 2019-2-15 16:41
它是调用opengl接口的,这个可以是软实现的,也可以是显卡GPU实现的。比如QQuickWindow::setSceneGraphBa ...
好的,谢谢了,我研究研究下。 nanfang2000 发表于 2019-2-15 16:58
不要想自己实现了除非是大公司。这里头涉及的知识和工作量还是蛮大的。QT实现一万个三角形应该是没问题的, ...
好的,我看下,谢谢了!{:handshake:}
页:
[1]