通过借鉴 大神代码 ,简化VTK和QML的使用,
QQuickVtkRenderer QQuickVtk 分别工作在不同的线程当中,QT中的坑是鼠标信号位于主线程(GUI), Renderer位于渲染线程,线程交互要通过Renderer的synchronize函数进行,这个用起来真是很难受.
QML只是用来显示3D模型,后台逻辑全部换成C++,这样使用资源会很小,OpenGL部分还不太熟悉,看过QOpenGLWindow方法,好像不能作为窗口小部件来实现,只能通过继承 QQuickFramebufferObject部分来实现了
看了VTK的很多源码,还有一些QT的例子终于把这部分搞定了,遗憾的是VTK设置背景色在QVTKOpenGLWidget 直接使用renderer->SetBackground的方式不行,只好同通过设置渐变色 上下颜色一样的方式
renderer->SetBackground(.1, .2, .3);
renderer->SetBackground2(.1, .2, .3);
renderer->GradientBackgroundOn();
项目github地址
vtk-8.2.0 QT.5.10.1
vk 9.1.0版本之后 VTK正式支持qml,以上代码仅供参考