Qt quick 下 GPU图像处理的技术方案选择

你好,拜读了很多文章,特来请教:

目标是用qt quick 实现一款跨android、ios/mac、windows的图像处理app。
需要用GPU加速提高图像处理速度。
我这目前了解到的方案:
c++端使用GPU的途径:
1、使用Qt3D的c++api;(略了解些,各平台抽象过的API,略麻烦,好像简单的渲染都要遵从ECS模型)
2、使用Quick3d的c++api;(在qt文档中查到的资料也比较少)
3、使用QRhi的c++api;(这个在qt文档中比较少查到,是不是就是Qt3d改的)
4、直接使用opengl/metal的api;(这个比较熟悉,资料多谢,直接写,担忧quick界面也是gpu渲染,会不会相互影响)
qml端展示texture或3d场景的途径:
1、继承QuickItem,改QSGNode等,展示texture;
2、直接quick3d的view3d显示Quad呈现texture;
3、使用Qt3D显示Quad呈现texture;

总得想法是后端c++用GPU处理好texture,前端实时更新texture。qml端只负责展示,减少js逻辑,主体在c++端。
目前困难是对以上几种途径方案不深入了解,无法选择方案。
请专家赐教一二!

如果为了开发的功能严谨,在技术调研的时候,写死很多代码,进行最快速的demo验证
分别使用Qt3D、Quick3d、QRhi快速做一个demo出来
然后比较一下效果,然后选择一个方向深入研究和开发

希望对你有帮助

用QtQuick写GUI方便,同时能写一些漂亮的动画效果。 其实用QtWidget写GUI也很简单的,复杂的可以自己绘制封装出来。
音视频图像处理软件,比如视频剪辑,直播,特效之类,或者3D设计类软件,工具属性多一些。工具软件,界面设计个人建议偏向效率与生产力,对
提高用户的工作效率,工作流,以及易用性方面多考虑一些。
所以个人建议用纯C++ OpenGL构建你的大部分核心业务。比如FFmpeg OpenGL OpenCV,网络通讯,这些都可以做到跨平台。然后上层界面,可以
用Qt,也可以用手机上原生的,做到随时可以替换。目前我们的软件大部分都这样的。
目前OpenGL/ES,可以在所有平台上跑,虽然苹果上推Metal,但依然在支持OpenGL/ES。 说白了Metal推了块10年,依然推不动。
QtQuick,Qt3D,QRHI这些框架,在做一些比较简单通用的程序的时候,能给你带来一些方便。但图像处理这些需要深度结合GL/Metal API写的项目,
用纯c++构建,相反还单纯很多。多种开发语言揉到一起,最后反而难以维护。
Qt最方便的地方,在于它在PC/Mac上能够跨平台开发商业软件。而不用维护两套界面。 至于移动端,有很多地方反而会更麻烦。需要去揉一些native代码达到效果。即使PC/Mac,也有一些差异,这需要长期做跨平台开发的经验,而仅仅是一套代码,到处跑无差异。
我们的做法是,纯c++构建所有的核心代码,做到跨平台。然后上层界面,PC/Mac上可以用QtWidget。 如果硬要在移动上用Qt,QtWidget都能用,QML也行。一般用原生UI界面较多。
学习QtOpenGL QtRHI这些框架,你会发现它很多时候在各个平台,依然还有很多问题,但是我们可以去学习它的一些设计理念,然后最终的目的是封装一套自己的东西,代码在自己手里,同时能在所有的平台上保持的灵活性,而不受制于Qt框架本身,如果它有什么问题,还得去看/改源码. 所以我就建议我们群里一些同学,比如qt的模版库很好用,你就去照着搞一套自己的类似的,然后在所有平台跑。而不依赖Qt,我觉得这是我一直使用学习qt,并喜欢它的原因。
时间有限,只能回复这点内容,希望对你有小帮助。

说得好,也是一种靠谱的方法,实践是最好的检验!拿不准的时候,还是要动动手对比下。