mirror of
https://github.com/AquariaOSE/Aquaria.git
synced 2024-11-29 03:33:48 +00:00
44 lines
813 B
C
44 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
|