28 class MaterialDescriptor;
33 class TextureDescriptor;
38 struct VertexBufferDesc;
40 struct RenderTargetDesc;
46 typedef std::pair<std::string, std::string> TextureCacheKey;
47 typedef std::map<TextureCacheKey, RefCountedPtr<Texture> *> TextureCacheMap;
52 Renderer(SDL_Window *win,
int width,
int height);
251 TextureCacheMap m_textureCache;
constexpr uint64_t hash_64_fnv1a(const char *const data, size_t len)
Definition: FNV1a.h:29
Definition: VertexBuffer.h:102
Definition: VertexBuffer.h:127
Definition: Material.h:60
Definition: Material.h:148
Definition: VertexBuffer.h:156
Definition: RenderTarget.h:38
Definition: Renderer.h:205
virtual ~MatrixTicket()
Definition: Renderer.h:218
MatrixTicket(const MatrixTicket &)=delete
MatrixTicket & operator=(const MatrixTicket &)=delete
MatrixTicket(Renderer *r)
Definition: Renderer.h:207
MatrixTicket(Renderer *r, const matrix4x4f &newMat)
Definition: Renderer.h:211
Definition: Renderer.h:175
StateTicket & operator=(const StateTicket &)=delete
StateTicket(Renderer *r)
Definition: Renderer.h:177
StateTicket(const StateTicket &)=delete
virtual ~StateTicket()
Definition: Renderer.h:186
Definition: Renderer.h:44
Renderer(SDL_Window *win, int width, int height)
Definition: Renderer.cpp:10
virtual int GetMaximumNumberAASamples() const =0
virtual Material * CreateMaterial(const std::string &shader, const MaterialDescriptor &descriptor, const RenderStateDesc &stateDescriptor)=0
virtual bool DrawBufferDynamic(VertexBuffer *v, uint32_t vtxOffset, IndexBuffer *i, uint32_t idxOffset, uint32_t numElems, Material *m)=0
virtual bool SetClearColor(const Color &c)=0
virtual bool SetProjection(const matrix4x4f &m)=0
Light m_lights[4]
Definition: Renderer.h:243
virtual bool SetOrthographicProjection(float xmin, float xmax, float ymin, float ymax, float zmin, float zmax)=0
virtual bool ReloadShaders()=0
virtual bool SetWireFrameMode(bool enabled)=0
virtual Material * CloneMaterial(const Material *mat, const MaterialDescriptor &descriptor, const RenderStateDesc &stateDescriptor)=0
virtual bool SetPerspectiveProjection(float fov, float aspect, float near_, float far_)=0
virtual IndexBuffer * CreateIndexBuffer(Uint32 size, BufferUsage, IndexBufferSize=INDEX_BUFFER_32BIT)=0
virtual const char * GetName() const =0
virtual void PushState()=0
virtual bool SetLightIntensity(Uint32 numlights, const float *intensity)=0
virtual bool SupportsInstancing()=0
virtual ViewportExtents GetViewport() const =0
virtual bool FrameGrab(ScreendumpState &sd)
Definition: Renderer.h:232
virtual bool SetLights(Uint32 numlights, const Light *l)=0
virtual bool SetScissor(ViewportExtents scissor)=0
const Light & GetLight(const Uint32 idx) const
Definition: Renderer.h:108
float GetDisplayAspect() const
Definition: Renderer.h:65
virtual InstanceBuffer * CreateInstanceBuffer(Uint32 size, BufferUsage)=0
Stats m_stats
Definition: Renderer.h:244
virtual UniformBuffer * CreateUniformBuffer(Uint32 size, BufferUsage)=0
virtual bool FlushCommandBuffers()=0
virtual RenderTarget * CreateRenderTarget(const RenderTargetDesc &)=0
const Color & GetAmbientColor() const
Definition: Renderer.h:115
static constexpr size_t GetName(std::string_view s)
Definition: Renderer.h:237
SDL_Window * GetSDLWindow() const
Definition: Renderer.h:64
virtual const RenderStateDesc & GetMaterialRenderState(const Material *mat)=0
Texture * GetCachedTexture(const std::string &type, const std::string &name)
Definition: Renderer.cpp:24
virtual bool SwapBuffers()=0
int GetWindowHeight() const
Definition: Renderer.h:67
void AddCachedTexture(const std::string &type, const std::string &name, Texture *texture)
Definition: Renderer.cpp:31
virtual bool Screendump(ScreendumpState &sd)
Definition: Renderer.h:231
virtual bool SetTransform(const matrix4x4f &m)=0
int m_width
Definition: Renderer.h:240
virtual bool DrawMesh(MeshObject *, Material *)=0
void RemoveCachedTexture(const std::string &type, const std::string &name)
Definition: Renderer.cpp:37
void RemoveAllCachedTextures()
Definition: Renderer.cpp:45
virtual void PopState()=0
Color m_ambient
Definition: Renderer.h:242
virtual Texture * CreateTexture(const TextureDescriptor &descriptor)=0
SDL_Window * m_window
Definition: Renderer.h:245
virtual bool BeginFrame()=0
virtual bool DrawMeshInstanced(MeshObject *, Material *, InstanceBuffer *)=0
virtual bool DrawBuffer(const VertexArray *v, Material *m)=0
virtual Uint32 GetNumLights() const
Definition: Renderer.h:113
TextureCacheMap TextureCache
Definition: Renderer.h:50
virtual void CheckRenderErrors(const char *func=nullptr, const int line=-1) const
Definition: Renderer.h:60
virtual MeshObject * CreateMeshObjectFromArray(const VertexArray *vertexArray, IndexBuffer *indexBuffer=nullptr, BufferUsage usage=BUFFER_USAGE_STATIC)=0
virtual void WriteRendererInfo(std::ostream &out) const
Definition: Renderer.h:58
virtual bool ClearDepthBuffer()=0
virtual MeshObject * CreateMeshObject(VertexBuffer *vertexBuffer, IndexBuffer *indexBuffer=nullptr)=0
virtual VertexBuffer * CreateVertexBuffer(const VertexBufferDesc &)=0
const TextureCache & GetTextureCache()
Definition: Renderer.h:168
virtual matrix4x4f GetTransform() const =0
virtual matrix4x4f GetProjection() const =0
virtual RendererType GetRendererType() const =0
virtual bool SetViewport(ViewportExtents vp)=0
int GetWindowWidth() const
Definition: Renderer.h:66
virtual bool SetAmbientColor(const Color &c)=0
virtual bool ClearScreen()=0
virtual ~Renderer()
Definition: Renderer.cpp:18
virtual bool EndFrame()=0
Stats & GetStats()
Definition: Renderer.h:234
virtual bool SetRenderTarget(RenderTarget *)=0
virtual bool GetNearFarRange(float &near_, float &far_) const =0
int m_height
Definition: Renderer.h:241
Definition: Texture.h:106
Definition: VertexArray.h:19
Definition: VertexBuffer.h:65
Definition: Background.h:14
RendererType
Definition: Graphics.h:18
IndexBufferSize
Definition: Types.h:76
@ INDEX_BUFFER_32BIT
Definition: Types.h:78
BufferUsage
Definition: Types.h:65
@ BUFFER_USAGE_STATIC
Definition: Types.h:66
Definition: RenderState.h:10
Definition: RenderTarget.h:20
Definition: Graphics.h:134
Definition: VertexBuffer.h:43
Definition: Graphics.h:59