1
0
Fork 0
mirror of https://github.com/AquariaOSE/Aquaria.git synced 2024-11-25 17:53:47 +00:00
Aquaria/BBGE/RenderState.h
fgenesis 68b3c61852 Add RenderState to be passed through the scene graph
This will eventually handle all mutable state during rendering
2022-05-20 01:04:19 +02:00

43 lines
813 B
C++

#ifndef BBGE_RENDERSTATE_H
#define BBGE_RENDERSTATE_H
#include "Vector.h"
#include "EngineEnums.h"
struct CombinedRenderAndGPUState;
// Only once of these exists at any time.
// It stores the known GPU state so that we don't need so many futile state changes
struct GPUState
{
friend struct CombinedRenderAndGPUState;
GPUState();
void setBlend(BlendType bt);
private:
BlendType _blendType;
};
// The RenderState is passed through the scene graph as each layer is rendered
// TODO: what needs to end up here? matrix stack too?
struct RenderState
{
GPUState& gpu;
Vector color;
float alpha;
protected:
RenderState(GPUState& gpu);
};
struct CombinedRenderAndGPUState : public RenderState
{
GPUState gpu;
CombinedRenderAndGPUState() : RenderState(gpu) {}
};
#endif