29 class MaterialDescriptor;
34 class TextureDescriptor;
39 struct VertexBufferDesc;
41 struct RenderTargetDesc;
47 typedef std::pair<std::string, std::string> TextureCacheKey;
48 typedef std::map<TextureCacheKey, RefCountedPtr<Texture> *> TextureCacheMap;
53 Renderer(SDL_Window *win,
int width,
int height);
266 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:220
virtual ~MatrixTicket()
Definition: Renderer.h:234
MatrixTicket(const MatrixTicket &)=delete
MatrixTicket(Renderer *r)
Definition: Renderer.h:222
MatrixTicket & operator=(const MatrixTicket &)=delete
MatrixTicket(Renderer *r, const matrix4x4f &newMat)
Definition: Renderer.h:227
Definition: Renderer.h:187
StateTicket & operator=(const StateTicket &)=delete
StateTicket(Renderer *r)
Definition: Renderer.h:189
StateTicket(const StateTicket &)=delete
virtual ~StateTicket()
Definition: Renderer.h:199
Definition: Renderer.h:45
virtual const char * GetName() const =0
virtual int GetMaximumNumberAASamples() const =0
const Color & GetAmbientColor() const
Definition: Renderer.h:127
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 SetProjection(const matrix4x4f &m)=0
Light m_lights[4]
Definition: Renderer.h:258
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 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:66
Stats m_stats
Definition: Renderer.h:259
Stats & GetStats()
Definition: Renderer.h:249
const TextureCache & GetTextureCache()
Definition: Renderer.h:180
virtual Material * CloneMaterial(const Material *mat, const MaterialDescriptor &descriptor, const RenderStateDesc &stateDescriptor)=0
virtual void ResolveRenderTarget(RenderTarget *src, RenderTarget *dst, ViewportExtents rect)=0
virtual bool FlushCommandBuffers()=0
static constexpr size_t GetName(std::string_view s)
Definition: Renderer.h:252
Texture * GetCachedTexture(const std::string &type, const std::string &name)
Definition: Renderer.cpp:26
virtual bool SwapBuffers()=0
int GetWindowHeight() const
Definition: Renderer.h:68
void AddCachedTexture(const std::string &type, const std::string &name, Texture *texture)
Definition: Renderer.cpp:33
virtual bool Screendump(ScreendumpState &sd)
Definition: Renderer.h:247
virtual bool SetTransform(const matrix4x4f &m)=0
int m_width
Definition: Renderer.h:255
virtual bool DrawMesh(MeshObject *, Material *)=0
void RemoveCachedTexture(const std::string &type, const std::string &name)
Definition: Renderer.cpp:39
void RemoveAllCachedTextures()
Definition: Renderer.cpp:47
virtual void PopState()=0
virtual RenderTarget * GetRenderTarget()=0
Color m_ambient
Definition: Renderer.h:257
virtual bool ClearScreen(const Color &c=Color::BLACK, bool depthBuffer=true)=0
SDL_Window * m_window
Definition: Renderer.h:260
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:125
TextureCacheMap TextureCache
Definition: Renderer.h:51
virtual void CheckRenderErrors(const char *func=nullptr, const int line=-1) const
Definition: Renderer.h:61
virtual void SetVSyncEnabled(bool enabled)=0
virtual void WriteRendererInfo(std::ostream &out) const
Definition: Renderer.h:59
virtual bool ClearDepthBuffer()=0
virtual InstanceBuffer * CreateInstanceBuffer(Uint32 size, BufferUsage)=0
SDL_Window * GetSDLWindow() const
Definition: Renderer.h:65
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:120
int GetWindowWidth() const
Definition: Renderer.h:67
virtual bool SetAmbientColor(const Color &c)=0
virtual void CopyRenderTarget(RenderTarget *src, RenderTarget *dst, ViewportExtents srcRect, ViewportExtents dstRect, bool linearFilter=true)=0
virtual ~Renderer()
Definition: Renderer.cpp:20
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:256
Definition: Texture.h:103
Definition: VertexArray.h:22
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
static const Color4ub BLACK
Definition: Color.h:155
Definition: RenderState.h:10
Definition: RenderTarget.h:20
Definition: Graphics.h:134
Definition: VertexBuffer.h:43
Definition: Graphics.h:59