33 #ifndef DC_Renderer_INTERFACE_H_INCLUDED
34 #define DC_Renderer_INTERFACE_H_INCLUDED
49 #include <Dynacoe/Util/Table.h>
50 #include <Dynacoe/Backends/Display/Display.h>
52 #include <unordered_map>
62 using RenderBufferID = Dynacoe::LookupID;
63 using ProgramID = Dynacoe::LookupID;
64 using LightID = Dynacoe::LookupID;
65 using DynamicTransformID = int;
68 class Renderer :
public Backend {
70 static const int MINIMUM_LIGHT_COUNT = 128;
71 static const int MINIMUM_TEXTURE_BINDING_COUNT = 64;
77 Vertex2D(
float x_,
float y_,
78 float r_,
float g_,
float b_,
float a_,
79 float tex,
float tx,
float ty)
81 r(r_), g(g_), b(b_), a(a_), useTex(tex), texX(tx), texY(ty) {}
82 Vertex2D(
float x_,
float y_,
83 float r_,
float g_,
float b_,
float a_)
85 r(r_), g(g_), b(b_), a(a_), useTex(-1) {}
87 Vertex2D(
float x_,
float y_,
88 float tex,
float tx,
float ty)
90 r(1.f), g(1.f), b(1.f), a(1.f),
91 useTex(tex), texX(tx), texY(ty) {}
100 struct StaticVertex {
102 StaticVertex(
float x_,
float y_,
float z_) :
104 normalX(0), normalY(0), normalZ(0),
106 userDefinedData{0, 0, 0, 0}
110 float x_,
float y_,
float z_,
111 float normalX_,
float normalY_,
float normalZ_,
112 float texX_,
float texY_,
119 normalX(normalX_), normalY(normalY_), normalZ(normalZ_),
120 texX(texX_), texY(texY_),
131 float normalX, normalY, normalZ;
133 float userDefinedData[4];
136 enum class TexFilter {
147 enum class Dimension {
153 enum class AlphaRule {
160 enum class Capability {
166 enum class BuiltInShaderMode {
181 enum class LightType {
188 struct Render2DStaticParameters {
192 float * contextTransform;
195 struct Render2DObjectParameters {
219 virtual void Queue2DVertices(
220 const uint32_t * indices,
224 virtual uint32_t Add2DObject() = 0;
226 virtual void Remove2DObject(uint32_t) = 0;
228 virtual uint32_t Add2DVertex() = 0;
230 virtual void Remove2DVertex(uint32_t
object) = 0;
232 virtual void Set2DVertex(uint32_t vertex, Vertex2D) = 0;
234 virtual Vertex2D Get2DVertex(uint32_t vertex) = 0;
236 virtual void Set2DObjectParameters(uint32_t
object, Render2DObjectParameters) = 0;
238 virtual void Render2DVertices(
const Render2DStaticParameters &) = 0;
241 virtual void Clear2DQueue() = 0;
256 virtual void RenderStatic(StaticState *) = 0;
259 virtual void ClearRenderedData() = 0;
265 virtual RenderBufferID GetStaticViewingMatrixID() = 0;
266 virtual RenderBufferID GetStaticProjectionMatrixID() = 0;
279 virtual int AddTexture(
int w,
int h,
const uint8_t * rgbaTextureData) = 0;
284 virtual void UpdateTexture(
int tex,
const uint8_t * newData) = 0;
289 virtual void RemoveTexture(
int tex) = 0;
294 virtual void GetTexture(
int tex, uint8_t *) = 0;
298 virtual void SetTextureFilter(TexFilter) = 0;
299 virtual TexFilter GetTextureFilter() = 0;
302 virtual int GetTextureWidth(
int tex) = 0;
303 virtual int GetTextureHeight(
int tex) = 0;
307 virtual int MaxSimultaneousTextures() = 0;
318 virtual RenderBufferID AddBuffer(
float * data,
int numElements) = 0;
323 virtual void UpdateBuffer(RenderBufferID bufferID,
float * newData,
int offset,
int numElements) = 0;
328 virtual void ReadBuffer(RenderBufferID bufferID,
float * ouputData,
int offset,
int numELements) = 0;
331 virtual int BufferSize(RenderBufferID bufferID) = 0;
334 virtual void RemoveBuffer(RenderBufferID bufferID) = 0;
346 virtual std::string ProgramGetLanguage() = 0;
351 virtual ProgramID ProgramAdd(
const std::string & vertexSrc,
const std::string & fragSrc, std::string & log) = 0;
354 virtual ProgramID ProgramGetBuiltIn(BuiltInShaderMode) = 0;
367 virtual LightID AddLight(LightType) = 0;
375 virtual void UpdateLightAttributes(LightID,
float *) = 0;
379 virtual void EnableLight(LightID,
bool doIt) = 0;
382 virtual void RemoveLight(LightID) = 0;
385 virtual int MaxEnabledLights() = 0;
388 virtual int NumLights() = 0;
406 virtual bool IsSupported(Capability) = 0;
412 virtual void SetDrawingMode (
419 virtual void GetDrawingMode (
421 Dimension * dimension,
430 virtual void AttachTarget(Framebuffer *) = 0;
441 virtual std::vector<Dynacoe::Framebuffer::Type> SupportedFramebuffers() = 0;
Contains a visual state.
Definition: Framebuffer.h:49