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:
parent
d31d320719
commit
f9a91e87e4
6 changed files with 14 additions and 12 deletions
|
@ -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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -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()
|
||||||
{
|
{
|
||||||
|
|
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -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();
|
||||||
|
|
|
@ -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;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -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)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue