diff options
author | Kaj Grönholm <kaj.gronholm@qt.io> | 2019-01-30 20:07:21 +0200 |
---|---|---|
committer | Kaj Grönholm <kaj.gronholm@qt.io> | 2019-02-01 11:17:11 +0000 |
commit | 62b739e522585ffad3012d8e4d665c124f6928af (patch) | |
tree | 1fb1dd79b69cedeae14a31a0a3278c758bba09de | |
parent | 48e9aa661cdde56f3e463bb9d732685c8d6c5f52 (diff) |
Dragon: Reset OpenGL state correctly before frame
Expectation was that OpenGL state is correct at the beginning, as
applyStateSet() only sets changes. Instead force changing to
default state at the beginning of frames.
Task-number: QT3DS-2898
Change-Id: Ib0e9d34d0999359847b025db686cb0da4762b5a5
Reviewed-by: Miikka Heikkinen <miikka.heikkinen@qt.io>
Reviewed-by: Tomi Korpipää <tomi.korpipaa@qt.io>
Reviewed-by: Christian Strømme <christian.stromme@qt.io>
-rw-r--r-- | src/runtime/dragon/dragonrenderer.cpp | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/src/runtime/dragon/dragonrenderer.cpp b/src/runtime/dragon/dragonrenderer.cpp index 4b0301d..44ecea4 100644 --- a/src/runtime/dragon/dragonrenderer.cpp +++ b/src/runtime/dragon/dragonrenderer.cpp @@ -364,8 +364,8 @@ Renderer::Frame Renderer::doRender(Renderer::Frame frame) } } - // Assume that the frame starts with the default state set - RenderStateSet stateSet = RenderStateSet::defaultRenderStateSet(); + // Start with empty state, to force default state set + RenderStateSet stateSet; bool preparationsComplete = false; // TODO use an iterator for improved performance @@ -383,6 +383,9 @@ Renderer::Frame Renderer::doRender(Renderer::Frame frame) continue; } + // Make sure to reset to defaults before starting frame + stateSet = activeSurface.applyStateSet(stateSet, RenderStateSet::defaultRenderStateSet()); + const GLuint fboBeforeRender = activeSurface.glHelper()->boundFrameBufferObject(); // We only need to do preparations such as uploading textures for one surface @@ -687,9 +690,6 @@ Renderer::Frame Renderer::doRender(Renderer::Frame frame) // TODO consider blit framebuffer info // TODO bind framebuffer } - - // Make sure to reset to defaults before finishing frame - stateSet = activeSurface.applyStateSet(stateSet, RenderStateSet::defaultRenderStateSet()); } frame.number += 1; |