14#include <unordered_map>
22 class CachedVertexBuffer;
29 class RenderStateCache;
33 class UniformLinearBuffer;
44 virtual const char *
GetName() const override final {
return "OpenGL 3.1, with extensions, renderer"; }
50 static void CheckErrors(
const char *func =
nullptr,
const int line = -1);
55 virtual
bool GetNearFarRange(
float &near_,
float &far_) const override final;
58 virtual
bool EndFrame() override final;
75 virtual bool SetOrthographicProjection(
float xmin,
float xmax,
float ymin,
float ymax,
float zmin,
float zmax)
override final;
81 virtual bool SetLightIntensity(Uint32 numlights,
const float *intensity)
override final;
82 virtual bool SetLights(Uint32 numlights,
const Light *l)
override final;
133 std::vector<std::pair<std::string, OGL::Shader *>>
m_shaders;
150 struct DynamicBufferData {
156 using DynamicBufferMap = std::vector<DynamicBufferData>;
157 static DynamicBufferMap s_DynamicDrawBufferMap;
159 SDL_GLContext m_glContext;
161#define CHECKERRORS() RendererOGL::CheckErrors(__FUNCTION__, __LINE__)
Definition VertexBuffer.h:102
Definition VertexBuffer.h:127
Definition Material.h:148
Definition VertexBuffer.h:156
Definition VertexBufferGL.h:41
Definition RenderTargetGL.h:21
Definition RenderTarget.h:38
Definition RendererGL.h:37
virtual matrix4x4f GetProjection() const override final
Definition RendererGL.h:77
virtual bool SetAmbientColor(const Color &c) override final
Definition RendererGL.cpp:765
std::unique_ptr< OGL::RenderStateCache > m_renderStateCache
Definition RendererGL.h:135
virtual bool BeginFrame() override final
Definition RendererGL.cpp:483
OGL::RenderTarget * m_windowRenderTarget
Definition RendererGL.h:139
virtual bool SetWireFrameMode(bool enabled) override final
Definition RendererGL.cpp:673
OGL::RenderStateCache * GetStateCache()
Definition RendererGL.h:108
virtual RenderTarget * CreateRenderTarget(const RenderTargetDesc &) override final
Definition RendererGL.cpp:1031
bool DrawMeshDynamicInternal(BufferBinding< OGL::VertexBuffer > vtxBind, BufferBinding< OGL::IndexBuffer > idxBind, PrimitiveType type)
Definition RendererGL.cpp:944
virtual bool ReloadShaders() override final
Definition RendererGL.cpp:1012
virtual ~RendererOGL() override final
Definition RendererGL.cpp:290
virtual bool SetViewport(ViewportExtents v) override final
Definition RendererGL.cpp:680
virtual int GetMaximumNumberAASamples() const override final
Definition RendererGL.cpp:469
RefCountedPtr< OGL::UniformBuffer > m_lightUniformBuffer
Definition RendererGL.h:136
virtual bool SupportsInstancing() override final
Definition RendererGL.h:52
OGL::UniformBuffer * GetLightUniformBuffer()
Definition RendererGL.cpp:1124
bool m_useNVDepthRanged
Definition RendererGL.h:137
virtual bool EndFrame() override final
Definition RendererGL.cpp:495
virtual bool DrawMeshInstanced(MeshObject *, Material *, InstanceBuffer *) override final
Definition RendererGL.cpp:834
virtual Material * CloneMaterial(const Material *, const MaterialDescriptor &, const RenderStateDesc &) override final
Definition RendererGL.cpp:997
static void RegisterRenderer()
Definition RendererGL.cpp:135
virtual bool SetLights(Uint32 numlights, const Light *l) override final
Definition RendererGL.cpp:726
std::unique_ptr< OGL::CommandList > m_drawCommandList
Definition RendererGL.h:140
virtual const char * GetName() const override final
Definition RendererGL.h:44
std::vector< std::unique_ptr< OGL::UniformLinearBuffer > > m_drawUniformBuffers
Definition RendererGL.h:134
virtual InstanceBuffer * CreateInstanceBuffer(Uint32 size, BufferUsage) override final
Definition RendererGL.cpp:1094
bool m_useAnisotropicFiltering
Definition RendererGL.h:130
bool DrawMeshInstancedInternal(OGL::MeshObject *, OGL::InstanceBuffer *, PrimitiveType type)
Definition RendererGL.cpp:923
virtual bool Screendump(ScreendumpState &sd) override final
Definition RendererGL.cpp:1145
virtual const RenderStateDesc & GetMaterialRenderState(const Graphics::Material *m) override final
Definition RendererGL.cpp:1140
Uint32 m_numLights
Definition RendererGL.h:125
virtual bool DrawMesh(MeshObject *, Material *) override final
Definition RendererGL.cpp:828
virtual bool SetProjection(const matrix4x4f &m) override final
Definition RendererGL.cpp:710
Uint32 m_numDirLights
Definition RendererGL.h:126
virtual bool SetPerspectiveProjection(float fov, float aspect, float near_, float far_) override final
Definition RendererGL.cpp:693
matrix4x4f m_projectionMat
Definition RendererGL.h:143
virtual VertexBuffer * CreateVertexBuffer(const VertexBufferDesc &) override final
Definition RendererGL.cpp:1081
virtual bool ClearDepthBuffer() override final
Definition RendererGL.cpp:661
virtual IndexBuffer * CreateIndexBuffer(Uint32 size, BufferUsage, IndexBufferSize) override final
Definition RendererGL.cpp:1088
virtual bool SwapBuffers() override final
Definition RendererGL.cpp:612
virtual bool SetClearColor(const Color &c) override final
Definition RendererGL.cpp:667
bool m_useCompressedTextures
Definition RendererGL.h:129
virtual bool DrawBuffer(const VertexArray *v, Material *m) override final
Definition RendererGL.cpp:773
virtual matrix4x4f GetTransform() const override final
Definition RendererGL.h:72
virtual bool SetOrthographicProjection(float xmin, float xmax, float ymin, float ymax, float zmin, float zmax) override final
Definition RendererGL.cpp:702
virtual bool ClearScreen() override final
Definition RendererGL.cpp:655
float m_minZNear
Definition RendererGL.h:127
virtual bool FrameGrab(ScreendumpState &sd) override final
Definition RendererGL.cpp:1167
virtual bool SetLightIntensity(Uint32 numlights, const float *intensity) override final
Definition RendererGL.cpp:716
matrix4x4f m_modelViewMat
Definition RendererGL.h:142
virtual UniformBuffer * CreateUniformBuffer(Uint32 size, BufferUsage) override final
Definition RendererGL.cpp:1100
OGL::UniformLinearBuffer * GetDrawUniformBuffer(Uint32 size)
Definition RendererGL.cpp:1129
Color m_clearColor
Definition RendererGL.h:145
virtual void PushState() override final
Definition RendererGL.h:120
static void CheckErrors(const char *func=nullptr, const int line=-1)
Definition RendererGL.cpp:575
virtual void WriteRendererInfo(std::ostream &out) const override final
Definition RendererGL.cpp:383
virtual MeshObject * CreateMeshObject(VertexBuffer *v, IndexBuffer *i) override final
Definition RendererGL.cpp:1106
std::vector< std::pair< std::string, OGL::Shader * > > m_shaders
Definition RendererGL.h:133
virtual Texture * CreateTexture(const TextureDescriptor &descriptor) override final
Definition RendererGL.cpp:1025
virtual ViewportExtents GetViewport() const override final
Definition RendererGL.h:69
virtual bool SetTransform(const matrix4x4f &m) override final
Definition RendererGL.cpp:687
OGL::RenderTarget * m_activeRenderTarget
Definition RendererGL.h:138
virtual void CheckRenderErrors(const char *func=nullptr, const int line=-1) const override final
Definition RendererGL.h:49
float m_maxZFar
Definition RendererGL.h:128
virtual void PopState() override final
Definition RendererGL.h:121
ViewportExtents m_viewport
Definition RendererGL.h:144
virtual RendererType GetRendererType() const override final
Definition RendererGL.h:45
virtual bool SetRenderTarget(RenderTarget *) override final
Definition RendererGL.cpp:635
virtual bool FlushCommandBuffers() override final
Definition RendererGL.cpp:840
virtual bool DrawBufferDynamic(VertexBuffer *v, uint32_t vtxOffset, IndexBuffer *i, uint32_t idxOffset, uint32_t numElems, Material *m) override final
Definition RendererGL.cpp:814
bool DrawMeshInternal(OGL::MeshObject *, PrimitiveType type)
Definition RendererGL.cpp:903
size_t m_frameNum
Definition RendererGL.h:123
virtual bool SetScissor(ViewportExtents) override final
Definition RendererGL.cpp:649
virtual Uint32 GetNumLights() const override final
Definition RendererGL.h:83
virtual MeshObject * CreateMeshObjectFromArray(const VertexArray *v, IndexBuffer *i=nullptr, BufferUsage u=BUFFER_USAGE_STATIC) override final
Definition RendererGL.cpp:1112
virtual Material * CreateMaterial(const std::string &, const MaterialDescriptor &, const RenderStateDesc &) override final
Definition RendererGL.cpp:963
virtual bool GetNearFarRange(float &near_, float &far_) const override final
Definition RendererGL.cpp:476
Definition VertexArray.h:19
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 VertexBuffer.h:43