From f9a91e87e465f263843c2dc492a64d8f7d53106d Mon Sep 17 00:00:00 2001 From: fgenesis Date: Fri, 25 Aug 2023 00:39:35 +0200 Subject: [PATCH] Move CombinedRenderAndGPUState up one level --- BBGE/Core.cpp | 6 ++++-- BBGE/Core.h | 2 +- BBGE/Quad.cpp | 2 +- BBGE/RenderGrid.cpp | 3 +-- BBGE/RenderObjectLayer.cpp | 10 +++++----- BBGE/RenderState.cpp | 3 ++- 6 files changed, 14 insertions(+), 12 deletions(-) diff --git a/BBGE/Core.cpp b/BBGE/Core.cpp index 64715dd..958036e 100644 --- a/BBGE/Core.cpp +++ b/BBGE/Core.cpp @@ -1792,6 +1792,8 @@ void Core::render(int startLayer, int endLayer, bool useFrameBufferIfAvail) setupRenderPositionAndScale(); + CombinedRenderAndGPUState rs; + for (size_t c = 0; c < renderObjectLayerOrder.size(); c++) { @@ -1815,14 +1817,14 @@ void Core::render(int startLayer, int endLayer, bool useFrameBufferIfAvail) if (afterEffectManager && afterEffectManager->active && i == afterEffectManagerLayer) { - afterEffectManager->render(); + afterEffectManager->render(rs); } RenderObjectLayer *r = &renderObjectLayers[i]; if(!r->visible) continue; - r->render(); + r->render(rs); } } diff --git a/BBGE/Core.h b/BBGE/Core.h index 34bcf74..82c1888 100644 --- a/BBGE/Core.h +++ b/BBGE/Core.h @@ -126,7 +126,7 @@ public: void reloadDevice(); void prepareRender(); - void render() const; + void render(const RenderState& rs) const; inline bool empty() { diff --git a/BBGE/Quad.cpp b/BBGE/Quad.cpp index 8728fd2..a63515e 100644 --- a/BBGE/Quad.cpp +++ b/BBGE/Quad.cpp @@ -223,7 +223,7 @@ void Quad::renderGrid(const RenderState& rs) const if (RenderObject::renderCollisionShape) { glBindTexture(GL_TEXTURE_2D, 0); - grid->renderDebugPoints(rx); + grid->renderDebugPoints(rs); RenderObject::lastTextureApplied = 0; } diff --git a/BBGE/RenderGrid.cpp b/BBGE/RenderGrid.cpp index f2f0fa1..88adb22 100644 --- a/BBGE/RenderGrid.cpp +++ b/BBGE/RenderGrid.cpp @@ -127,8 +127,7 @@ void RenderGrid::render(const RenderState& rs) const void RenderGrid::renderDebugPoints(const RenderState& rs) const { - (void)rs; // unused - + (void)rs; // unused yet glPointSize(2); glColor3f(1,0,0); vbo.apply(); diff --git a/BBGE/RenderObjectLayer.cpp b/BBGE/RenderObjectLayer.cpp index 906f962..9d4c691 100644 --- a/BBGE/RenderObjectLayer.cpp +++ b/BBGE/RenderObjectLayer.cpp @@ -240,17 +240,16 @@ void RenderObjectLayer::prepareRender() } } -void RenderObjectLayer::render() const +void RenderObjectLayer::render(const RenderState& rs) const { if(toRender.size() <= 1) return; size_t proc = 0; - CombinedRenderAndGPUState rs; if (startPass == endPass) { - rs.pass = RenderObject::RENDER_ALL; + assert(rs.pass == RenderObject::RENDER_ALL); const RenderObject * const * rlist = &toRender[0]; // known to have at least one element while(const RenderObject *ro = *rlist++) ro->render(rs); @@ -258,14 +257,15 @@ void RenderObjectLayer::render() const } else { + RenderState rx(rs); for (int pass = startPass; pass <= endPass; pass++) { - rs.pass = pass; + rx.pass = pass; const RenderObject * const * rlist = &toRender[0]; // known to have at least one element while(const RenderObject *ro = *rlist++) if(ro->isVisibleInPass(pass)) { - ro->render(rs); + ro->render(rx); ++proc; } } diff --git a/BBGE/RenderState.cpp b/BBGE/RenderState.cpp index db50e78..cb0fe38 100644 --- a/BBGE/RenderState.cpp +++ b/BBGE/RenderState.cpp @@ -1,10 +1,11 @@ #include "RenderState.h" #include "Base.h" #include "RenderBase.h" +#include "RenderObject.h" RenderState::RenderState(GPUState &gpu) - : gpu(gpu), color(1,1,1), scale(1,1), alpha(1), pass(0) + : gpu(gpu), color(1,1,1), scale(1,1), alpha(1), pass(RenderObject::RENDER_ALL) , forceRenderBorder(false), forceRenderCenter(false), renderBorderAlpha(1) { }