diff options
Diffstat (limited to 'src/viewer/Qt3DSViewerApp.cpp')
-rw-r--r-- | src/viewer/Qt3DSViewerApp.cpp | 59 |
1 files changed, 55 insertions, 4 deletions
diff --git a/src/viewer/Qt3DSViewerApp.cpp b/src/viewer/Qt3DSViewerApp.cpp index a4cec7f..9b5eb8b 100644 --- a/src/viewer/Qt3DSViewerApp.cpp +++ b/src/viewer/Qt3DSViewerApp.cpp @@ -427,10 +427,13 @@ bool Q3DSViewerApp::InitializeApp(int winWidth, int winHeight, const QSurfaceFor qCritical() << m_Impl.m_error; return false; } - + QString errors; bool success = m_Impl.m_view->InitializeGraphics(format, delayedLoading, initInRenderThread, - shaderCache); + shaderCache, errors); + if (!errors.isEmpty()) + Q_EMIT SigLoadShaderCacheErrors(errors); + if (!success) { m_Impl.m_error = QObject::tr("Viewer launch failure! Failed to load: '%1'").arg(source); m_Impl.m_error.append("\n"); @@ -476,6 +479,8 @@ void Q3DSViewerApp::connectSignals() &Q3DSViewerApp::SigElementsCreated); connect(m_Impl.m_view->signalProxy(), &QRuntimeViewSignalProxy::SigMaterialsCreated, this, &Q3DSViewerApp::SigMaterialsCreated); + connect(m_Impl.m_view->signalProxy(), &QRuntimeViewSignalProxy::SigFrameDraw, this, + &Q3DSViewerApp::SigFrameDraw); } void Q3DSViewerApp::finishAsyncInit() @@ -522,8 +527,9 @@ void Q3DSViewerApp::setupSearchPath(std::vector<std::string> &cmdLineArgs) //NvFAppendSearchPath(theModuleDirectory.c_str()); } -void Q3DSViewerApp::Render() +bool Q3DSViewerApp::Render() { + bool ret = true; if (m_Impl.m_view && m_Impl.m_view->GetTegraRenderEngine()) { if (m_Impl.m_appInitSuccessful) { for (QEvent *e : m_Impl.m_pendingEvents) { @@ -535,9 +541,10 @@ void Q3DSViewerApp::Render() HandleController(*m_Impl.m_view); #endif - m_Impl.m_view->Render(); + ret = m_Impl.m_view->Render(); } } + return ret; } void Q3DSViewerApp::SaveState() @@ -867,6 +874,40 @@ double Q3DSViewerApp::GetStereoEyeSeparation() const return 0; } +void Q3DSViewerApp::SetStereoEyeRotation(double rotation) +{ + if (m_Impl.m_view && m_Impl.m_view->GetTegraRenderEngine()) + m_Impl.m_view->GetTegraRenderEngine()->SetStereoEyeRotation(rotation); +} + +double Q3DSViewerApp::GetStereoEyeRotation() const +{ + if (m_Impl.m_view && m_Impl.m_view->GetTegraRenderEngine()) + return m_Impl.m_view->GetTegraRenderEngine()->GetStereoEyeRotation(); + + return 0; +} + +void Q3DSViewerApp::SetStereoProgressiveEnabled(bool enabled) +{ + if (m_Impl.m_view && m_Impl.m_view->GetTegraRenderEngine()) + m_Impl.m_view->GetTegraRenderEngine()->SetStereoProgressiveEnabled(enabled); +} + +bool Q3DSViewerApp::GetStereoProgressiveEnabled() const +{ + if (m_Impl.m_view && m_Impl.m_view->GetTegraRenderEngine()) + return m_Impl.m_view->GetTegraRenderEngine()->GetStereoProgressiveEnabled(); + + return 0; +} + +void Q3DSViewerApp::SetSkipFramesInterval(int interval) +{ + if (m_Impl.m_view && m_Impl.m_view->GetTegraRenderEngine()) + m_Impl.m_view->GetTegraRenderEngine()->SetSkipFramesInterval(interval); +} + void Q3DSViewerApp::setMatteColor(const QColor &color) { if (m_Impl.m_view && m_Impl.m_view->GetTegraRenderEngine()) { @@ -1059,6 +1100,16 @@ uint Q3DSViewerApp::textureId(const QString &elementPath) return m_Impl.m_view->textureId(elementPath); } +uint Q3DSViewerApp::textureId(const QString &elementPath, QSize &size, GLenum &format) +{ + if (!m_Impl.m_view) { + size = {}; + format = GL_INVALID_ENUM; + return 0; + } + return m_Impl.m_view->textureId(elementPath, size, format); +} + Q3DSViewerApp &Q3DSViewerApp::Create(void *glContext, Q3DStudio::IAudioPlayer *inAudioPlayer, QElapsedTimer *startupTimer) { |