1
0
Fork 0
mirror of https://github.com/AquariaOSE/Aquaria.git synced 2025-07-03 06:24:32 +00:00

Move CombinedRenderAndGPUState up one level

This commit is contained in:
fgenesis 2023-08-25 00:39:35 +02:00
parent d31d320719
commit f9a91e87e4
6 changed files with 14 additions and 12 deletions

View file

@ -1792,6 +1792,8 @@ void Core::render(int startLayer, int endLayer, bool useFrameBufferIfAvail)
setupRenderPositionAndScale(); setupRenderPositionAndScale();
CombinedRenderAndGPUState rs;
for (size_t c = 0; c < renderObjectLayerOrder.size(); c++) 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) if (afterEffectManager && afterEffectManager->active && i == afterEffectManagerLayer)
{ {
afterEffectManager->render(); afterEffectManager->render(rs);
} }
RenderObjectLayer *r = &renderObjectLayers[i]; RenderObjectLayer *r = &renderObjectLayers[i];
if(!r->visible) if(!r->visible)
continue; continue;
r->render(); r->render(rs);
} }
} }

View file

@ -126,7 +126,7 @@ public:
void reloadDevice(); void reloadDevice();
void prepareRender(); void prepareRender();
void render() const; void render(const RenderState& rs) const;
inline bool empty() inline bool empty()
{ {

View file

@ -223,7 +223,7 @@ void Quad::renderGrid(const RenderState& rs) const
if (RenderObject::renderCollisionShape) if (RenderObject::renderCollisionShape)
{ {
glBindTexture(GL_TEXTURE_2D, 0); glBindTexture(GL_TEXTURE_2D, 0);
grid->renderDebugPoints(rx); grid->renderDebugPoints(rs);
RenderObject::lastTextureApplied = 0; RenderObject::lastTextureApplied = 0;
} }

View file

@ -127,8 +127,7 @@ void RenderGrid::render(const RenderState& rs) const
void RenderGrid::renderDebugPoints(const RenderState& rs) const void RenderGrid::renderDebugPoints(const RenderState& rs) const
{ {
(void)rs; // unused (void)rs; // unused yet
glPointSize(2); glPointSize(2);
glColor3f(1,0,0); glColor3f(1,0,0);
vbo.apply(); vbo.apply();

View file

@ -240,17 +240,16 @@ void RenderObjectLayer::prepareRender()
} }
} }
void RenderObjectLayer::render() const void RenderObjectLayer::render(const RenderState& rs) const
{ {
if(toRender.size() <= 1) if(toRender.size() <= 1)
return; return;
size_t proc = 0; size_t proc = 0;
CombinedRenderAndGPUState rs;
if (startPass == endPass) 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 const RenderObject * const * rlist = &toRender[0]; // known to have at least one element
while(const RenderObject *ro = *rlist++) while(const RenderObject *ro = *rlist++)
ro->render(rs); ro->render(rs);
@ -258,14 +257,15 @@ void RenderObjectLayer::render() const
} }
else else
{ {
RenderState rx(rs);
for (int pass = startPass; pass <= endPass; pass++) 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 const RenderObject * const * rlist = &toRender[0]; // known to have at least one element
while(const RenderObject *ro = *rlist++) while(const RenderObject *ro = *rlist++)
if(ro->isVisibleInPass(pass)) if(ro->isVisibleInPass(pass))
{ {
ro->render(rs); ro->render(rx);
++proc; ++proc;
} }
} }

View file

@ -1,10 +1,11 @@
#include "RenderState.h" #include "RenderState.h"
#include "Base.h" #include "Base.h"
#include "RenderBase.h" #include "RenderBase.h"
#include "RenderObject.h"
RenderState::RenderState(GPUState &gpu) 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) , forceRenderBorder(false), forceRenderCenter(false), renderBorderAlpha(1)
{ {
} }