Added configuration switch "DisableRenderingOnMaster" to disable rendering on the master node

This commit is contained in:
Alexander Bock
2015-02-24 13:41:42 +01:00
parent d7203688b1
commit df71f97943
4 changed files with 34 additions and 17 deletions

View File

@@ -78,6 +78,8 @@ public:
void setGlobalOpacity(float opacity);
void setSGCTRenderStatistics(bool visible);
void setDisableRenderingOnMaster(bool enabled);
/**
* Returns the Lua library that contains all Lua functions available to affect the
@@ -120,6 +122,8 @@ private:
bool _visualizeABuffer;
ABufferVisualizer* _visualizer;
bool _disableMasterRendering = false;
};
} // namespace openspace

View File

@@ -55,6 +55,7 @@ namespace configurationmanager {
const std::string keyLogLevel = "Logging.LogLevel";
const std::string keyLogImmediateFlush = "Logging.ImmediateFlush";
const std::string keyLogs = "Logging.Logs";
const std::string keyDisableMasterRendering = "DisableRenderingOnMaster";
} // namespace configurationmanager
namespace scenegraph {

View File

@@ -288,6 +288,11 @@ bool OpenSpaceEngine::initialize() {
_scriptEngine->writeDocumentation(luaDocumentationFile, luaDocumentationType);
}
bool disableMasterRendering = false;
configurationManager()->getValue(
constants::configurationmanager::keyDisableMasterRendering, disableMasterRendering);
_renderEngine->setDisableRenderingOnMaster(disableMasterRendering);
// Load scenegraph
SceneGraph* sceneGraph = new SceneGraph;

View File

@@ -470,24 +470,27 @@ namespace openspace {
//Is this really necessary to store? @JK
_mainCamera->setViewProjectionMatrix(projectionMatrix * viewMatrix);
// render the scene starting from the root node
if (!_visualizeABuffer) {
_abuffer->preRender();
_sceneGraph->render({
*_mainCamera,
psc(),
_doPerformanceMeasurements
});
_abuffer->postRender();
// We only want to skip the rendering if we are the master and we want to
// disable the rendering for the master
if (!(OsEng.isMaster() && _disableMasterRendering)) {
if (!_visualizeABuffer) {
_abuffer->preRender();
_sceneGraph->render({
*_mainCamera,
psc(),
_doPerformanceMeasurements
});
_abuffer->postRender();
glEnable(GL_BLEND);
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
_abuffer->resolve();
glDisable(GL_BLEND);
}
else {
_visualizer->render();
}
glEnable(GL_BLEND);
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
_abuffer->resolve();
glDisable(GL_BLEND);
}
else {
_visualizer->render();
}
}
#if 1
@@ -923,4 +926,8 @@ void RenderEngine::setSGCTRenderStatistics(bool visible) {
_sgctRenderStatisticsVisible = visible;
}
void RenderEngine::setDisableRenderingOnMaster(bool enabled) {
_disableMasterRendering = enabled;
}
}// namespace openspace