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:148
Definition VertexBuffer.h:156
Definition RenderTarget.h:38
Definition Renderer.h:205
virtual ~MatrixTicket()
Definition Renderer.h:218
MatrixTicket(const MatrixTicket &)=delete
MatrixTicket(Renderer *r)
Definition Renderer.h:207
MatrixTicket & operator=(const MatrixTicket &)=delete
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
virtual const char * GetName() const =0
virtual int GetMaximumNumberAASamples() const =0
const Color & GetAmbientColor() const
Definition Renderer.h:115
virtual MeshObject * CreateMeshObjectFromArray(const VertexArray *vertexArray, IndexBuffer *indexBuffer=nullptr, BufferUsage usage=BUFFER_USAGE_STATIC)=0
virtual bool DrawBufferDynamic(VertexBuffer *v, uint32_t vtxOffset, IndexBuffer *i, uint32_t idxOffset, uint32_t numElems, Material *m)=0
virtual VertexBuffer * CreateVertexBuffer(const VertexBufferDesc &)=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 bool SetPerspectiveProjection(float fov, float aspect, float near_, float far_)=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 Texture * CreateTexture(const TextureDescriptor &descriptor)=0
virtual bool SetLights(Uint32 numlights, const Light *l)=0
virtual bool SetScissor(ViewportExtents scissor)=0
float GetDisplayAspect() const
Definition Renderer.h:65
Stats m_stats
Definition Renderer.h:244
Stats & GetStats()
Definition Renderer.h:234
const TextureCache & GetTextureCache()
Definition Renderer.h:168
virtual Material * CloneMaterial(const Material *mat, const MaterialDescriptor &descriptor, const RenderStateDesc &stateDescriptor)=0
virtual bool FlushCommandBuffers()=0
static constexpr size_t GetName(std::string_view s)
Definition Renderer.h:237
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
SDL_Window * m_window
Definition Renderer.h:245
virtual UniformBuffer * CreateUniformBuffer(Uint32 size, BufferUsage)=0
virtual bool BeginFrame()=0
virtual RenderTarget * CreateRenderTarget(const RenderTargetDesc &)=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 void WriteRendererInfo(std::ostream &out) const
Definition Renderer.h:58
virtual bool ClearDepthBuffer()=0
virtual InstanceBuffer * CreateInstanceBuffer(Uint32 size, BufferUsage)=0
SDL_Window * GetSDLWindow() const
Definition Renderer.h:64
virtual const RenderStateDesc & GetMaterialRenderState(const Material *mat)=0
virtual matrix4x4f GetTransform() const =0
virtual matrix4x4f GetProjection() const =0
virtual RendererType GetRendererType() const =0
virtual IndexBuffer * CreateIndexBuffer(Uint32 size, BufferUsage, IndexBufferSize=INDEX_BUFFER_32BIT)=0
virtual bool SetViewport(ViewportExtents vp)=0
const Light & GetLight(const Uint32 idx) const
Definition Renderer.h:108
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
virtual bool SetRenderTarget(RenderTarget *)=0
virtual bool GetNearFarRange(float &near_, float &far_) const =0
virtual MeshObject * CreateMeshObject(VertexBuffer *vertexBuffer, IndexBuffer *indexBuffer=nullptr)=0
virtual Material * CreateMaterial(const std::string &shader, const MaterialDescriptor &descriptor, const RenderStateDesc &stateDescriptor)=0
int m_height
Definition Renderer.h:241
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