[英]How do I set up multiple viewports using Qt3D without having to use QML
I'd like to set up a multiple view port scene akin to https://doc.qt.io/archives/qt-5.10/qt3d-multiviewport-example.html without having to use QML. 我想设置一个类似于https://doc.qt.io/archives/qt-5.10/qt3d-multiviewport-example.html的多视图端口场景,而不必使用QML。
At the moment I've got a single view working with: 目前,我只使用一个视图:
Qt3DExtras::Qt3DWindow* createView ( Qt3DCore::QEntity* rootEntity ) {
Qt3DExtras::Qt3DWindow* view = new Qt3DExtras::Qt3DWindow();
Qt3DRender::QCamera* camera = view->camera();
camera->lens()->setPerspectiveProjection ( 45.0f, 16.0f / 9.0f, 0.1f, 1000.0f );
camera->setPosition ( QVector3D ( 0, 0, 10.0f ) );
camera->setViewCenter ( QVector3D ( 0, 0, 0 ) );
Qt3DExtras::QOrbitCameraController* manipulator = new Qt3DExtras::QOrbitCameraController ( rootEntity );
manipulator->setLinearSpeed ( 5.0f );
manipulator->setLookSpeed ( 180.f );
manipulator->setZoomInLimit ( 5.0f );
manipulator->setCamera ( camera );
return view;
}
In essence, the question is how do I convert the QML code supplied in the example to C++. 本质上,问题是如何将示例中提供的QML代码转换为C ++。
You have to use QViewport
class and setNormalizedRect
function to specify with in [0.0, 0.0, 1.0, 1.0]. 您必须使用
QViewport
类和setNormalizedRect
函数在[ QViewport
进行指定。
Something like below. 像下面这样。
//DECLARE A FRAME GRAPH
Qt3DRender::QFrameGraph *frameGraph = new Qt3DRender::QFrameGraph();
Qt3DRender::QTechniqueFilter *techniqueFilter = new Qt3DRender::QTechniqueFilter();
Qt3DRender::QViewport *viewport1 = new Qt3DRender::QViewport(techniqueFilter);
Qt3DRender::QViewport *viewport2 = new Qt3DRender::QViewport(techniqueFilter);
Qt3DRender::QViewport *viewport3 = new Qt3DRender::QViewport(techniqueFilter);
Qt3DRender::QViewport *viewport4 = new Qt3DRender::QViewport(techniqueFilter);
viewport1->setNormalizedRect(QRectF(0, 0, 0.5, 0.5));
viewport2->setNormalizedRect(QRectF(0.5, 0, 0.5, 0.5));
viewport3->setNormalizedRect(QRectF(0, 0.5, 0.5, 0.5));
viewport4->setNormalizedRect(QRectF(0.5, 0.5, 0.5, 0.5));
//SET ACTIVE FRAME GRAPH NODE TO YOUR WINDOW
your_qt3d_wndObject->setActiveFrameGraph(frameGraph->activeFrameGraph());
https://doc-snapshots.qt.io/qt5-5.9/qt3drender-qviewport.html https://doc-snapshots.qt.io/qt5-5.9/qt3drender-qviewport.html
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.