Feature/globals handling (#1352)

* Cleaner handling of global state
* Prevent Lua memory corruption (closes #982)
* Initialize glfw first thing to prevent weird joystick loading bug during startup
This commit is contained in:
Alexander Bock
2020-10-21 22:30:05 +02:00
committed by GitHub
parent 1525a0490d
commit efffc25ce0
164 changed files with 1484 additions and 1390 deletions

View File

@@ -401,8 +401,8 @@ void FramebufferRenderer::initialize() {
DownscaledVolumeUniformNames
);
global::raycasterManager.addListener(*this);
global::deferredcasterManager.addListener(*this);
global::raycasterManager->addListener(*this);
global::deferredcasterManager->addListener(*this);
// Set Default Rendering OpenGL State
glGetIntegerv(GL_FRAMEBUFFER_BINDING, &_defaultFBO);
@@ -418,7 +418,7 @@ void FramebufferRenderer::initialize() {
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
// Save State in Cache
global::renderEngine.openglStateCache().loadCurrentGLState();
global::renderEngine->openglStateCache().loadCurrentGLState();
}
void FramebufferRenderer::deinitialize() {
@@ -452,8 +452,8 @@ void FramebufferRenderer::deinitialize() {
glDeleteBuffers(1, &_vertexPositionBuffer);
glDeleteVertexArrays(1, &_screenQuad);
global::raycasterManager.removeListener(*this);
global::deferredcasterManager.removeListener(*this);
global::raycasterManager->removeListener(*this);
global::deferredcasterManager->removeListener(*this);
}
void FramebufferRenderer::raycastersChanged(VolumeRaycaster&,
@@ -992,7 +992,7 @@ void FramebufferRenderer::updateRaycastData() {
_insideRaycastPrograms.clear();
const std::vector<VolumeRaycaster*>& raycasters =
global::raycasterManager.raycasters();
global::raycasterManager->raycasters();
int nextId = 0;
for (VolumeRaycaster* raycaster : raycasters) {
@@ -1064,7 +1064,7 @@ void FramebufferRenderer::updateDeferredcastData() {
_deferredcastPrograms.clear();
const std::vector<Deferredcaster*>& deferredcasters =
global::deferredcasterManager.deferredcasters();
global::deferredcasterManager->deferredcasters();
int nextId = 0;
for (Deferredcaster* caster : deferredcasters) {
DeferredcastData data = { nextId++, "HELPER" };
@@ -1148,10 +1148,10 @@ void FramebufferRenderer::render(Scene* scene, Camera* camera, float blackoutFac
glGetIntegerv(GL_FRAMEBUFFER_BINDING, &_defaultFBO);
GLint viewport[4] = { 0 };
global::renderEngine.openglStateCache().viewport(viewport);
global::renderEngine->openglStateCache().viewport(viewport);
// Reset Render Pipeline State
global::renderEngine.openglStateCache().resetCachedStates();
global::renderEngine->openglStateCache().resetCachedStates();
_pingPongIndex = 0;
@@ -1165,13 +1165,13 @@ void FramebufferRenderer::render(Scene* scene, Camera* camera, float blackoutFac
TracyGpuZone("Deferred G-Buffer")
GLint vp[4] = {viewport[0], viewport[1], _resolution.x, _resolution.y};
global::renderEngine.openglStateCache().setViewportState(vp);
global::renderEngine->openglStateCache().setViewportState(vp);
glBindFramebuffer(GL_FRAMEBUFFER, _gBuffers.framebuffer);
glDrawBuffers(3, ColorAttachmentArray);
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
}
Time time = global::timeManager.time();
Time time = global::timeManager->time();
RenderData data = {
*camera,
@@ -1287,7 +1287,7 @@ void FramebufferRenderer::performRaycasterTasks(const std::vector<RaycasterTask>
glBindFramebuffer(GL_FRAMEBUFFER, _exitFramebuffer);
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
GLint viewport[4] = { 0 };
global::renderEngine.openglStateCache().viewport(viewport);
global::renderEngine->openglStateCache().viewport(viewport);
ghoul::opengl::ProgramObject* exitProgram = _exitPrograms[raycaster].get();
if (exitProgram) {
@@ -1305,7 +1305,7 @@ void FramebufferRenderer::performRaycasterTasks(const std::vector<RaycasterTask>
static_cast<GLsizei>(viewport[2] * s),
static_cast<GLsizei>(viewport[3] * s)
};
global::renderEngine.openglStateCache().setViewportState(newVP);
global::renderEngine->openglStateCache().setViewportState(newVP);
if (_downscaleVolumeRendering.currentDownscaleFactor != s) {
_downscaleVolumeRendering.currentDownscaleFactor = s;
@@ -1402,7 +1402,7 @@ void FramebufferRenderer::performRaycasterTasks(const std::vector<RaycasterTask>
}
if (raycaster->downscaleRender() < 1.f) {
global::renderEngine.openglStateCache().setViewportState(viewport);
global::renderEngine->openglStateCache().setViewportState(viewport);
glBindFramebuffer(GL_DRAW_FRAMEBUFFER, _gBuffers.framebuffer);
writeDownscaledVolume();
}
@@ -1540,7 +1540,7 @@ void FramebufferRenderer::updateRendererData() {
dict.setValue("hdrExposure", std::to_string(_hdrExposure));
dict.setValue("disableHDR", std::to_string(_disableHDR));
_rendererData = dict;
global::renderEngine.setRendererData(dict);
global::renderEngine->setRendererData(dict);
}
} // namespace openspace