1
0
Fork 0
mirror of https://github.com/AquariaOSE/Aquaria.git synced 2025-07-03 14:34:34 +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();
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);
}
}

View file

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

View file

@ -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;
}

View file

@ -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();

View file

@ -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;
}
}

View file

@ -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)
{
}