14#include <unordered_map>
24 class CachedVertexBuffer;
31 class RenderStateCache;
35 class UniformLinearBuffer;
46 virtual const char *
GetName() const override final {
return "OpenGL 3.1, with extensions, renderer"; }
52 static void CheckErrors(
const char *func =
nullptr,
const int line = -1);
57 virtual
bool GetNearFarRange(
float &near_,
float &far_) const override final;
62 virtual
bool EndFrame() override final;
82 virtual bool SetOrthographicProjection(
float xmin,
float xmax,
float ymin,
float ymax,
float zmin,
float zmax)
override final;
88 virtual bool SetLightIntensity(Uint32 numlights,
const float *intensity)
override final;
89 virtual bool SetLights(Uint32 numlights,
const Light *l)
override final;
139 std::vector<std::pair<std::string, OGL::Shader *>>
m_shaders;
154 struct DynamicBufferData {
160 using DynamicBufferMap = std::vector<DynamicBufferData>;
161 static DynamicBufferMap s_DynamicDrawBufferMap;
165#define CHECKERRORS() RendererOGL::CheckErrors(__FUNCTION__, __LINE__)
void * SDL_GLContext
Definition: RendererGL.h:16
Definition: VertexBuffer.h:102
Definition: VertexBuffer.h:127
Definition: Material.h:60
Definition: Material.h:148
Definition: VertexBuffer.h:156
Definition: VertexBufferGL.h:41
Definition: RenderTargetGL.h:22
Definition: RenderTarget.h:38
Definition: RendererGL.h:39
virtual matrix4x4f GetProjection() const override final
Definition: RendererGL.h:84
virtual bool SetAmbientColor(const Color &c) override final
Definition: RendererGL.cpp:779
std::unique_ptr< OGL::RenderStateCache > m_renderStateCache
Definition: RendererGL.h:141
virtual bool BeginFrame() override final
Definition: RendererGL.cpp:473
virtual void SetVSyncEnabled(bool) override
Definition: RendererGL.cpp:468
virtual bool SetWireFrameMode(bool enabled) override final
Definition: RendererGL.cpp:687
OGL::RenderStateCache * GetStateCache()
Definition: RendererGL.h:115
virtual RenderTarget * CreateRenderTarget(const RenderTargetDesc &) override final
Definition: RendererGL.cpp:1047
bool DrawMeshDynamicInternal(BufferBinding< OGL::VertexBuffer > vtxBind, BufferBinding< OGL::IndexBuffer > idxBind, PrimitiveType type)
Definition: RendererGL.cpp:960
virtual bool ReloadShaders() override final
Definition: RendererGL.cpp:1028
virtual ~RendererOGL() override final
Definition: RendererGL.cpp:279
virtual bool SetViewport(ViewportExtents v) override final
Definition: RendererGL.cpp:694
virtual int GetMaximumNumberAASamples() const override final
Definition: RendererGL.cpp:454
RefCountedPtr< OGL::UniformBuffer > m_lightUniformBuffer
Definition: RendererGL.h:142
virtual bool SupportsInstancing() override final
Definition: RendererGL.h:54
OGL::UniformBuffer * GetLightUniformBuffer()
Definition: RendererGL.cpp:1146
bool m_useNVDepthRanged
Definition: RendererGL.h:143
virtual bool EndFrame() override final
Definition: RendererGL.cpp:483
virtual bool DrawMeshInstanced(MeshObject *, Material *, InstanceBuffer *) override final
Definition: RendererGL.cpp:848
virtual Material * CloneMaterial(const Material *, const MaterialDescriptor &, const RenderStateDesc &) override final
Definition: RendererGL.cpp:1013
static void RegisterRenderer()
Definition: RendererGL.cpp:143
virtual bool SetLights(Uint32 numlights, const Light *l) override final
Definition: RendererGL.cpp:740
std::unique_ptr< OGL::CommandList > m_drawCommandList
Definition: RendererGL.h:145
virtual const char * GetName() const override final
Definition: RendererGL.h:46
std::vector< std::unique_ptr< OGL::UniformLinearBuffer > > m_drawUniformBuffers
Definition: RendererGL.h:140
virtual InstanceBuffer * CreateInstanceBuffer(Uint32 size, BufferUsage) override final
Definition: RendererGL.cpp:1116
bool m_useAnisotropicFiltering
Definition: RendererGL.h:136
bool DrawMeshInstancedInternal(OGL::MeshObject *, OGL::InstanceBuffer *, PrimitiveType type)
Definition: RendererGL.cpp:939
virtual bool Screendump(ScreendumpState &sd) override final
Definition: RendererGL.cpp:1167
virtual const RenderStateDesc & GetMaterialRenderState(const Graphics::Material *m) override final
Definition: RendererGL.cpp:1162
Uint32 m_numLights
Definition: RendererGL.h:131
virtual bool DrawMesh(MeshObject *, Material *) override final
Definition: RendererGL.cpp:842
virtual RenderTarget * GetRenderTarget() override final
Definition: RendererGL.cpp:624
virtual bool SetProjection(const matrix4x4f &m) override final
Definition: RendererGL.cpp:724
Uint32 m_numDirLights
Definition: RendererGL.h:132
virtual bool SetPerspectiveProjection(float fov, float aspect, float near_, float far_) override final
Definition: RendererGL.cpp:707
matrix4x4f m_projectionMat
Definition: RendererGL.h:148
virtual VertexBuffer * CreateVertexBuffer(const VertexBufferDesc &) override final
Definition: RendererGL.cpp:1103
virtual bool ClearDepthBuffer() override final
Definition: RendererGL.cpp:681
virtual IndexBuffer * CreateIndexBuffer(Uint32 size, BufferUsage, IndexBufferSize) override final
Definition: RendererGL.cpp:1110
virtual bool SwapBuffers() override final
Definition: RendererGL.cpp:600
bool m_useCompressedTextures
Definition: RendererGL.h:135
virtual bool DrawBuffer(const VertexArray *v, Material *m) override final
Definition: RendererGL.cpp:787
virtual matrix4x4f GetTransform() const override final
Definition: RendererGL.h:79
virtual bool SetOrthographicProjection(float xmin, float xmax, float ymin, float ymax, float zmin, float zmax) override final
Definition: RendererGL.cpp:716
float m_minZNear
Definition: RendererGL.h:133
virtual bool SetLightIntensity(Uint32 numlights, const float *intensity) override final
Definition: RendererGL.cpp:730
matrix4x4f m_modelViewMat
Definition: RendererGL.h:147
virtual UniformBuffer * CreateUniformBuffer(Uint32 size, BufferUsage) override final
Definition: RendererGL.cpp:1122
OGL::UniformLinearBuffer * GetDrawUniformBuffer(Uint32 size)
Definition: RendererGL.cpp:1151
virtual void PushState() override final
Definition: RendererGL.h:126
static void CheckErrors(const char *func=nullptr, const int line=-1)
Definition: RendererGL.cpp:563
virtual void WriteRendererInfo(std::ostream &out) const override final
Definition: RendererGL.cpp:368
virtual MeshObject * CreateMeshObject(VertexBuffer *v, IndexBuffer *i) override final
Definition: RendererGL.cpp:1128
std::vector< std::pair< std::string, OGL::Shader * > > m_shaders
Definition: RendererGL.h:139
virtual Texture * CreateTexture(const TextureDescriptor &descriptor) override final
Definition: RendererGL.cpp:1041
virtual bool ClearScreen(const Color &c, bool) override final
Definition: RendererGL.cpp:675
virtual ViewportExtents GetViewport() const override final
Definition: RendererGL.h:76
virtual void CopyRenderTarget(RenderTarget *, RenderTarget *, ViewportExtents, ViewportExtents, bool) override final
Definition: RendererGL.cpp:641
virtual bool SetTransform(const matrix4x4f &m) override final
Definition: RendererGL.cpp:701
OGL::RenderTarget * m_activeRenderTarget
Definition: RendererGL.h:144
virtual void CheckRenderErrors(const char *func=nullptr, const int line=-1) const override final
Definition: RendererGL.h:51
float m_maxZFar
Definition: RendererGL.h:134
virtual void PopState() override final
Definition: RendererGL.h:127
ViewportExtents m_viewport
Definition: RendererGL.h:149
virtual RendererType GetRendererType() const override final
Definition: RendererGL.h:47
virtual bool SetRenderTarget(RenderTarget *) override final
Definition: RendererGL.cpp:629
virtual bool FlushCommandBuffers() override final
Definition: RendererGL.cpp:854
virtual bool DrawBufferDynamic(VertexBuffer *v, uint32_t vtxOffset, IndexBuffer *i, uint32_t idxOffset, uint32_t numElems, Material *m) override final
Definition: RendererGL.cpp:828
bool DrawMeshInternal(OGL::MeshObject *, PrimitiveType type)
Definition: RendererGL.cpp:919
size_t m_frameNum
Definition: RendererGL.h:129
virtual bool SetScissor(ViewportExtents) override final
Definition: RendererGL.cpp:669
virtual Uint32 GetNumLights() const override final
Definition: RendererGL.h:90
virtual MeshObject * CreateMeshObjectFromArray(const VertexArray *v, IndexBuffer *i=nullptr, BufferUsage u=BUFFER_USAGE_STATIC) override final
Definition: RendererGL.cpp:1134
virtual void ResolveRenderTarget(RenderTarget *, RenderTarget *, ViewportExtents) override final
Definition: RendererGL.cpp:647
virtual Material * CreateMaterial(const std::string &, const MaterialDescriptor &, const RenderStateDesc &) override final
Definition: RendererGL.cpp:979
virtual bool GetNearFarRange(float &near_, float &far_) const override final
Definition: RendererGL.cpp:461
Definition: Renderer.h:45
Definition: Texture.h:103
Definition: VertexArray.h:22
Definition: VertexBuffer.h:65
Definition: RefCounted.h:36
Definition: Background.h:14
RendererType
Definition: Graphics.h:18
@ RENDERER_OPENGL_3x
Definition: Graphics.h:20
IndexBufferSize
Definition: Types.h:76
PrimitiveType
Definition: Types.h:82
BufferUsage
Definition: Types.h:65
@ BUFFER_USAGE_STATIC
Definition: Types.h:66
Definition: BufferCommon.h:63
Definition: RenderState.h:10
Definition: RenderTarget.h:20
Definition: Graphics.h:134
Definition: Graphics.h:27
Definition: VertexBuffer.h:43
Definition: Graphics.h:59