summaryrefslogtreecommitdiffstats
path: root/src/viewer/Qt3DSViewerApp.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/viewer/Qt3DSViewerApp.cpp')
-rw-r--r--src/viewer/Qt3DSViewerApp.cpp59
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)
{