void checkSyncFrustumCullingExecution() { // GIVEN Qt3DRender::QViewport *viewport = new Qt3DRender::QViewport(); Qt3DRender::QClearBuffers *clearBuffer = new Qt3DRender::QClearBuffers(viewport); Qt3DRender::QFrustumCulling *frustumCulling = new Qt3DRender::QFrustumCulling(clearBuffer); Qt3DRender::QCameraSelector *cameraSelector = new Qt3DRender::QCameraSelector(frustumCulling); Qt3DRender::QCamera *camera = new Qt3DRender::QCamera(); cameraSelector->setCamera(camera); Qt3DRender::TestAspect testAspect(buildSimpleScene(viewport)); // THEN Qt3DRender::Render::FrameGraphNode *leafNode = testAspect.nodeManagers()->frameGraphManager()->lookupNode(cameraSelector->id()); QVERIFY(leafNode != nullptr); // WHEN Qt3DRender::Render::RenderViewBuilder renderViewBuilder(leafNode, 0, testAspect.renderer()); renderViewBuilder.prepareJobs(); renderViewBuilder.buildJobHierachy(); // THEN QCOMPARE(renderViewBuilder.frustumCullingJob()->viewProjection(), QMatrix4x4()); // WHEN renderViewBuilder.renderViewJob()->run(); renderViewBuilder.syncFrustumCullingJob()->run(); // THEN QCOMPARE(renderViewBuilder.frustumCullingJob()->viewProjection(), camera->projectionMatrix() * camera->viewMatrix()); }
QgsChunkedEntity::SceneState _sceneState( QgsCameraController *cameraController ) { Qt3DRender::QCamera *camera = cameraController->camera(); QgsChunkedEntity::SceneState state; state.cameraFov = camera->fieldOfView(); state.cameraPos = camera->position(); QRect rect = cameraController->viewport(); state.screenSizePx = std::max( rect.width(), rect.height() ); // TODO: is this correct? state.viewProjectionMatrix = camera->projectionMatrix() * camera->viewMatrix(); return state; }