summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKaj Grönholm <kaj.gronholm@qt.io>2019-01-30 20:07:21 +0200
committerKaj Grönholm <kaj.gronholm@qt.io>2019-02-01 11:17:11 +0000
commit62b739e522585ffad3012d8e4d665c124f6928af (patch)
tree1fb1dd79b69cedeae14a31a0a3278c758bba09de
parent48e9aa661cdde56f3e463bb9d732685c8d6c5f52 (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.cpp10
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;