mirror of
https://github.com/AquariaOSE/Aquaria.git
synced 2024-11-29 03:33:48 +00:00
50 lines
961 B
C++
50 lines
961 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;
|
|
Vector scale;
|
|
float alpha;
|
|
int pass;
|
|
|
|
bool forceRenderBorder;
|
|
bool forceRenderCenter;
|
|
Vector renderBorderColor;
|
|
float renderBorderAlpha;
|
|
|
|
protected:
|
|
RenderState(GPUState& gpu);
|
|
};
|
|
|
|
struct CombinedRenderAndGPUState : public RenderState
|
|
{
|
|
GPUState gpu;
|
|
CombinedRenderAndGPUState() : RenderState(gpu) {}
|
|
};
|
|
|
|
|
|
|
|
#endif
|