Pioneer
Loading...
Searching...
No Matches
Classes | Public Member Functions | Static Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
Graphics::RendererOGL Class Referencefinal

#include <RendererGL.h>

Inheritance diagram for Graphics::RendererOGL:
Inheritance graph
[legend]
Collaboration diagram for Graphics::RendererOGL:
Collaboration graph
[legend]

Public Member Functions

 RendererOGL (SDL_Window *window, const Graphics::Settings &vs, SDL_GLContext &glContext)
 
virtual ~RendererOGL () override final
 
virtual const char * GetName () const override final
 
virtual RendererType GetRendererType () const override final
 
virtual void WriteRendererInfo (std::ostream &out) const override final
 
virtual void CheckRenderErrors (const char *func=nullptr, const int line=-1) const override final
 
virtual bool SupportsInstancing () override final
 
virtual int GetMaximumNumberAASamples () const override final
 
virtual bool GetNearFarRange (float &near_, float &far_) const override final
 
virtual bool BeginFrame () override final
 
virtual bool EndFrame () override final
 
virtual bool SwapBuffers () override final
 
virtual bool SetRenderTarget (RenderTarget *) override final
 
virtual bool SetScissor (ViewportExtents) override final
 
virtual bool ClearScreen () override final
 
virtual bool ClearDepthBuffer () override final
 
virtual bool SetClearColor (const Color &c) override final
 
virtual bool SetViewport (ViewportExtents v) override final
 
virtual ViewportExtents GetViewport () const override final
 
virtual bool SetTransform (const matrix4x4f &m) override final
 
virtual matrix4x4f GetTransform () const override final
 
virtual bool SetPerspectiveProjection (float fov, float aspect, float near_, float far_) override final
 
virtual bool SetOrthographicProjection (float xmin, float xmax, float ymin, float ymax, float zmin, float zmax) override final
 
virtual bool SetProjection (const matrix4x4f &m) override final
 
virtual matrix4x4f GetProjection () const override final
 
virtual bool SetWireFrameMode (bool enabled) override final
 
virtual bool SetLightIntensity (Uint32 numlights, const float *intensity) override final
 
virtual bool SetLights (Uint32 numlights, const Light *l) override final
 
virtual Uint32 GetNumLights () const override final
 
virtual bool SetAmbientColor (const Color &c) override final
 
virtual bool FlushCommandBuffers () override final
 
virtual bool DrawBuffer (const VertexArray *v, Material *m) override final
 
virtual bool DrawBufferDynamic (VertexBuffer *v, uint32_t vtxOffset, IndexBuffer *i, uint32_t idxOffset, uint32_t numElems, Material *m) override final
 
virtual bool DrawMesh (MeshObject *, Material *) override final
 
virtual bool DrawMeshInstanced (MeshObject *, Material *, InstanceBuffer *) override final
 
virtual MaterialCreateMaterial (const std::string &, const MaterialDescriptor &, const RenderStateDesc &) override final
 
virtual MaterialCloneMaterial (const Material *, const MaterialDescriptor &, const RenderStateDesc &) override final
 
virtual TextureCreateTexture (const TextureDescriptor &descriptor) override final
 
virtual RenderTargetCreateRenderTarget (const RenderTargetDesc &) override final
 
virtual VertexBufferCreateVertexBuffer (const VertexBufferDesc &) override final
 
virtual IndexBufferCreateIndexBuffer (Uint32 size, BufferUsage, IndexBufferSize) override final
 
virtual InstanceBufferCreateInstanceBuffer (Uint32 size, BufferUsage) override final
 
virtual UniformBufferCreateUniformBuffer (Uint32 size, BufferUsage) override final
 
virtual MeshObjectCreateMeshObject (VertexBuffer *v, IndexBuffer *i) override final
 
virtual MeshObjectCreateMeshObjectFromArray (const VertexArray *v, IndexBuffer *i=nullptr, BufferUsage u=BUFFER_USAGE_STATIC) override final
 
virtual const RenderStateDescGetMaterialRenderState (const Graphics::Material *m) override final
 
OGL::UniformBufferGetLightUniformBuffer ()
 
OGL::UniformLinearBufferGetDrawUniformBuffer (Uint32 size)
 
OGL::RenderStateCacheGetStateCache ()
 
virtual bool ReloadShaders () override final
 
virtual bool Screendump (ScreendumpState &sd) override final
 
virtual bool FrameGrab (ScreendumpState &sd) override final
 
bool DrawMeshInternal (OGL::MeshObject *, PrimitiveType type)
 
bool DrawMeshInstancedInternal (OGL::MeshObject *, OGL::InstanceBuffer *, PrimitiveType type)
 
bool DrawMeshDynamicInternal (BufferBinding< OGL::VertexBuffer > vtxBind, BufferBinding< OGL::IndexBuffer > idxBind, PrimitiveType type)
 
- Public Member Functions inherited from Graphics::Renderer
 Renderer (SDL_Window *win, int width, int height)
 
virtual ~Renderer ()
 
virtual const char * GetName () const =0
 
virtual RendererType GetRendererType () const =0
 
virtual void WriteRendererInfo (std::ostream &out) const
 
virtual void CheckRenderErrors (const char *func=nullptr, const int line=-1) const
 
virtual bool SupportsInstancing ()=0
 
SDL_Window * GetSDLWindow () const
 
float GetDisplayAspect () const
 
int GetWindowWidth () const
 
int GetWindowHeight () const
 
virtual int GetMaximumNumberAASamples () const =0
 
virtual bool GetNearFarRange (float &near_, float &far_) const =0
 
virtual bool BeginFrame ()=0
 
virtual bool EndFrame ()=0
 
virtual bool SwapBuffers ()=0
 
virtual bool SetRenderTarget (RenderTarget *)=0
 
virtual bool SetScissor (ViewportExtents scissor)=0
 
virtual bool ClearScreen ()=0
 
virtual bool ClearDepthBuffer ()=0
 
virtual bool SetClearColor (const Color &c)=0
 
virtual bool SetViewport (ViewportExtents vp)=0
 
virtual ViewportExtents GetViewport () const =0
 
virtual bool SetTransform (const matrix4x4f &m)=0
 
virtual matrix4x4f GetTransform () const =0
 
virtual bool SetPerspectiveProjection (float fov, float aspect, float near_, float far_)=0
 
virtual bool SetOrthographicProjection (float xmin, float xmax, float ymin, float ymax, float zmin, float zmax)=0
 
virtual bool SetProjection (const matrix4x4f &m)=0
 
virtual matrix4x4f GetProjection () const =0
 
virtual bool SetWireFrameMode (bool enabled)=0
 
virtual bool SetLightIntensity (Uint32 numlights, const float *intensity)=0
 
virtual bool SetLights (Uint32 numlights, const Light *l)=0
 
const LightGetLight (const Uint32 idx) const
 
virtual Uint32 GetNumLights () const
 
virtual bool SetAmbientColor (const Color &c)=0
 
const ColorGetAmbientColor () const
 
virtual bool FlushCommandBuffers ()=0
 
virtual bool DrawBuffer (const VertexArray *v, Material *m)=0
 
virtual bool DrawBufferDynamic (VertexBuffer *v, uint32_t vtxOffset, IndexBuffer *i, uint32_t idxOffset, uint32_t numElems, Material *m)=0
 
virtual bool DrawMesh (MeshObject *, Material *)=0
 
virtual bool DrawMeshInstanced (MeshObject *, Material *, InstanceBuffer *)=0
 
virtual MaterialCreateMaterial (const std::string &shader, const MaterialDescriptor &descriptor, const RenderStateDesc &stateDescriptor)=0
 
virtual MaterialCloneMaterial (const Material *mat, const MaterialDescriptor &descriptor, const RenderStateDesc &stateDescriptor)=0
 
virtual TextureCreateTexture (const TextureDescriptor &descriptor)=0
 
virtual RenderTargetCreateRenderTarget (const RenderTargetDesc &)=0
 
virtual VertexBufferCreateVertexBuffer (const VertexBufferDesc &)=0
 
virtual IndexBufferCreateIndexBuffer (Uint32 size, BufferUsage, IndexBufferSize=INDEX_BUFFER_32BIT)=0
 
virtual InstanceBufferCreateInstanceBuffer (Uint32 size, BufferUsage)=0
 
virtual UniformBufferCreateUniformBuffer (Uint32 size, BufferUsage)=0
 
virtual MeshObjectCreateMeshObject (VertexBuffer *vertexBuffer, IndexBuffer *indexBuffer=nullptr)=0
 
virtual MeshObjectCreateMeshObjectFromArray (const VertexArray *vertexArray, IndexBuffer *indexBuffer=nullptr, BufferUsage usage=BUFFER_USAGE_STATIC)=0
 
virtual const RenderStateDescGetMaterialRenderState (const Material *mat)=0
 
TextureGetCachedTexture (const std::string &type, const std::string &name)
 
void AddCachedTexture (const std::string &type, const std::string &name, Texture *texture)
 
void RemoveCachedTexture (const std::string &type, const std::string &name)
 
void RemoveAllCachedTextures ()
 
const TextureCacheGetTextureCache ()
 
virtual bool ReloadShaders ()=0
 
virtual bool Screendump (ScreendumpState &sd)
 
virtual bool FrameGrab (ScreendumpState &sd)
 
StatsGetStats ()
 

Static Public Member Functions

static void RegisterRenderer ()
 
static void CheckErrors (const char *func=nullptr, const int line=-1)
 
- Static Public Member Functions inherited from Graphics::Renderer
static constexpr size_t GetName (std::string_view s)
 

Protected Member Functions

virtual void PushState () override final
 
virtual void PopState () override final
 
virtual void PushState ()=0
 
virtual void PopState ()=0
 

Protected Attributes

size_t m_frameNum
 
Uint32 m_numLights
 
Uint32 m_numDirLights
 
float m_minZNear
 
float m_maxZFar
 
bool m_useCompressedTextures
 
bool m_useAnisotropicFiltering
 
std::vector< std::pair< std::string, OGL::Shader * > > m_shaders
 
std::vector< std::unique_ptr< OGL::UniformLinearBuffer > > m_drawUniformBuffers
 
std::unique_ptr< OGL::RenderStateCachem_renderStateCache
 
RefCountedPtr< OGL::UniformBufferm_lightUniformBuffer
 
bool m_useNVDepthRanged
 
OGL::RenderTargetm_activeRenderTarget = nullptr
 
OGL::RenderTargetm_windowRenderTarget = nullptr
 
std::unique_ptr< OGL::CommandListm_drawCommandList
 
matrix4x4f m_modelViewMat
 
matrix4x4f m_projectionMat
 
ViewportExtents m_viewport
 
Color m_clearColor
 
- Protected Attributes inherited from Graphics::Renderer
int m_width
 
int m_height
 
Color m_ambient
 
Light m_lights [4]
 
Stats m_stats
 
SDL_Window * m_window
 

Additional Inherited Members

- Public Types inherited from Graphics::Renderer
using TextureCache = TextureCacheMap
 

Constructor & Destructor Documentation

◆ RendererOGL()

Graphics::RendererOGL::RendererOGL ( SDL_Window *  window,
const Graphics::Settings vs,
SDL_GLContext &  glContext 
)
Here is the call graph for this function:

◆ ~RendererOGL()

Graphics::RendererOGL::~RendererOGL ( )
finaloverridevirtual
Here is the call graph for this function:

Member Function Documentation

◆ BeginFrame()

bool Graphics::RendererOGL::BeginFrame ( )
finaloverridevirtual

Implements Graphics::Renderer.

◆ CheckErrors()

void Graphics::RendererOGL::CheckErrors ( const char *  func = nullptr,
const int  line = -1 
)
static

◆ CheckRenderErrors()

virtual void Graphics::RendererOGL::CheckRenderErrors ( const char *  func = nullptr,
const int  line = -1 
) const
inlinefinaloverridevirtual

Reimplemented from Graphics::Renderer.

Here is the call graph for this function:

◆ ClearDepthBuffer()

bool Graphics::RendererOGL::ClearDepthBuffer ( )
finaloverridevirtual

Implements Graphics::Renderer.

◆ ClearScreen()

bool Graphics::RendererOGL::ClearScreen ( )
finaloverridevirtual

Implements Graphics::Renderer.

◆ CloneMaterial()

Material * Graphics::RendererOGL::CloneMaterial ( const Material old,
const MaterialDescriptor descriptor,
const RenderStateDesc stateDescriptor 
)
finaloverridevirtual

Implements Graphics::Renderer.

Here is the call graph for this function:

◆ CreateIndexBuffer()

IndexBuffer * Graphics::RendererOGL::CreateIndexBuffer ( Uint32  size,
BufferUsage  usage,
IndexBufferSize  el 
)
finaloverridevirtual

Implements Graphics::Renderer.

Here is the call graph for this function:

◆ CreateInstanceBuffer()

InstanceBuffer * Graphics::RendererOGL::CreateInstanceBuffer ( Uint32  size,
BufferUsage  usage 
)
finaloverridevirtual

Implements Graphics::Renderer.

Here is the call graph for this function:

◆ CreateMaterial()

Material * Graphics::RendererOGL::CreateMaterial ( const std::string &  shader,
const MaterialDescriptor d,
const RenderStateDesc stateDescriptor 
)
finaloverridevirtual

Implements Graphics::Renderer.

Here is the call graph for this function:

◆ CreateMeshObject()

MeshObject * Graphics::RendererOGL::CreateMeshObject ( VertexBuffer v,
IndexBuffer i 
)
finaloverridevirtual

Implements Graphics::Renderer.

Here is the call graph for this function:

◆ CreateMeshObjectFromArray()

MeshObject * Graphics::RendererOGL::CreateMeshObjectFromArray ( const VertexArray v,
IndexBuffer i = nullptr,
BufferUsage  u = BUFFER_USAGE_STATIC 
)
finaloverridevirtual

Implements Graphics::Renderer.

Here is the call graph for this function:

◆ CreateRenderTarget()

RenderTarget * Graphics::RendererOGL::CreateRenderTarget ( const RenderTargetDesc desc)
finaloverridevirtual

Implements Graphics::Renderer.

Here is the call graph for this function:

◆ CreateTexture()

Texture * Graphics::RendererOGL::CreateTexture ( const TextureDescriptor descriptor)
finaloverridevirtual

Implements Graphics::Renderer.

◆ CreateUniformBuffer()

UniformBuffer * Graphics::RendererOGL::CreateUniformBuffer ( Uint32  size,
BufferUsage  usage 
)
finaloverridevirtual

Implements Graphics::Renderer.

Here is the call graph for this function:

◆ CreateVertexBuffer()

VertexBuffer * Graphics::RendererOGL::CreateVertexBuffer ( const VertexBufferDesc desc)
finaloverridevirtual

Implements Graphics::Renderer.

Here is the call graph for this function:

◆ DrawBuffer()

bool Graphics::RendererOGL::DrawBuffer ( const VertexArray v,
Material m 
)
finaloverridevirtual

Implements Graphics::Renderer.

Here is the call graph for this function:

◆ DrawBufferDynamic()

bool Graphics::RendererOGL::DrawBufferDynamic ( VertexBuffer v,
uint32_t  vtxOffset,
IndexBuffer i,
uint32_t  idxOffset,
uint32_t  numElems,
Material m 
)
finaloverridevirtual

Implements Graphics::Renderer.

Here is the call graph for this function:

◆ DrawMesh()

bool Graphics::RendererOGL::DrawMesh ( MeshObject mesh,
Material material 
)
finaloverridevirtual

Implements Graphics::Renderer.

◆ DrawMeshDynamicInternal()

bool Graphics::RendererOGL::DrawMeshDynamicInternal ( BufferBinding< OGL::VertexBuffer vtxBind,
BufferBinding< OGL::IndexBuffer idxBind,
PrimitiveType  type 
)
Here is the call graph for this function:

◆ DrawMeshInstanced()

bool Graphics::RendererOGL::DrawMeshInstanced ( MeshObject mesh,
Material material,
InstanceBuffer inst 
)
finaloverridevirtual

Implements Graphics::Renderer.

◆ DrawMeshInstancedInternal()

bool Graphics::RendererOGL::DrawMeshInstancedInternal ( OGL::MeshObject mesh,
OGL::InstanceBuffer inst,
PrimitiveType  type 
)
Here is the call graph for this function:

◆ DrawMeshInternal()

bool Graphics::RendererOGL::DrawMeshInternal ( OGL::MeshObject mesh,
PrimitiveType  type 
)
Here is the call graph for this function:

◆ EndFrame()

bool Graphics::RendererOGL::EndFrame ( )
finaloverridevirtual

Implements Graphics::Renderer.

Here is the call graph for this function:

◆ FlushCommandBuffers()

bool Graphics::RendererOGL::FlushCommandBuffers ( )
finaloverridevirtual

Implements Graphics::Renderer.

Here is the call graph for this function:

◆ FrameGrab()

bool Graphics::RendererOGL::FrameGrab ( ScreendumpState sd)
finaloverridevirtual

Reimplemented from Graphics::Renderer.

◆ GetDrawUniformBuffer()

OGL::UniformLinearBuffer * Graphics::RendererOGL::GetDrawUniformBuffer ( Uint32  size)

◆ GetLightUniformBuffer()

OGL::UniformBuffer * Graphics::RendererOGL::GetLightUniformBuffer ( )

◆ GetMaterialRenderState()

const RenderStateDesc & Graphics::RendererOGL::GetMaterialRenderState ( const Graphics::Material m)
finaloverridevirtual

Implements Graphics::Renderer.

◆ GetMaximumNumberAASamples()

int Graphics::RendererOGL::GetMaximumNumberAASamples ( ) const
finaloverridevirtual

Implements Graphics::Renderer.

◆ GetName()

virtual const char * Graphics::RendererOGL::GetName ( ) const
inlinefinaloverridevirtual

Implements Graphics::Renderer.

◆ GetNearFarRange()

bool Graphics::RendererOGL::GetNearFarRange ( float &  near_,
float &  far_ 
) const
finaloverridevirtual

Implements Graphics::Renderer.

◆ GetNumLights()

virtual Uint32 Graphics::RendererOGL::GetNumLights ( ) const
inlinefinaloverridevirtual

Reimplemented from Graphics::Renderer.

◆ GetProjection()

virtual matrix4x4f Graphics::RendererOGL::GetProjection ( ) const
inlinefinaloverridevirtual

Implements Graphics::Renderer.

◆ GetRendererType()

virtual RendererType Graphics::RendererOGL::GetRendererType ( ) const
inlinefinaloverridevirtual

Implements Graphics::Renderer.

◆ GetStateCache()

OGL::RenderStateCache * Graphics::RendererOGL::GetStateCache ( )
inline

◆ GetTransform()

virtual matrix4x4f Graphics::RendererOGL::GetTransform ( ) const
inlinefinaloverridevirtual

Implements Graphics::Renderer.

◆ GetViewport()

virtual ViewportExtents Graphics::RendererOGL::GetViewport ( ) const
inlinefinaloverridevirtual

Implements Graphics::Renderer.

◆ PopState()

virtual void Graphics::RendererOGL::PopState ( )
inlinefinaloverrideprotectedvirtual

Implements Graphics::Renderer.

◆ PushState()

virtual void Graphics::RendererOGL::PushState ( )
inlinefinaloverrideprotectedvirtual

Implements Graphics::Renderer.

◆ RegisterRenderer()

void Graphics::RendererOGL::RegisterRenderer ( )
static
Here is the call graph for this function:

◆ ReloadShaders()

bool Graphics::RendererOGL::ReloadShaders ( )
finaloverridevirtual

Implements Graphics::Renderer.

◆ Screendump()

bool Graphics::RendererOGL::Screendump ( ScreendumpState sd)
finaloverridevirtual

Reimplemented from Graphics::Renderer.

◆ SetAmbientColor()

bool Graphics::RendererOGL::SetAmbientColor ( const Color c)
finaloverridevirtual

Implements Graphics::Renderer.

◆ SetClearColor()

bool Graphics::RendererOGL::SetClearColor ( const Color c)
finaloverridevirtual

Implements Graphics::Renderer.

◆ SetLightIntensity()

bool Graphics::RendererOGL::SetLightIntensity ( Uint32  numlights,
const float *  intensity 
)
finaloverridevirtual

Implements Graphics::Renderer.

Here is the call graph for this function:

◆ SetLights()

bool Graphics::RendererOGL::SetLights ( Uint32  numlights,
const Light l 
)
finaloverridevirtual

Implements Graphics::Renderer.

Here is the call graph for this function:

◆ SetOrthographicProjection()

bool Graphics::RendererOGL::SetOrthographicProjection ( float  xmin,
float  xmax,
float  ymin,
float  ymax,
float  zmin,
float  zmax 
)
finaloverridevirtual

Implements Graphics::Renderer.

Here is the call graph for this function:

◆ SetPerspectiveProjection()

bool Graphics::RendererOGL::SetPerspectiveProjection ( float  fov,
float  aspect,
float  near_,
float  far_ 
)
finaloverridevirtual

Implements Graphics::Renderer.

Here is the call graph for this function:

◆ SetProjection()

bool Graphics::RendererOGL::SetProjection ( const matrix4x4f m)
finaloverridevirtual

Implements Graphics::Renderer.

◆ SetRenderTarget()

bool Graphics::RendererOGL::SetRenderTarget ( RenderTarget rt)
finaloverridevirtual

Implements Graphics::Renderer.

Here is the call graph for this function:

◆ SetScissor()

bool Graphics::RendererOGL::SetScissor ( ViewportExtents  extents)
finaloverridevirtual

Implements Graphics::Renderer.

◆ SetTransform()

bool Graphics::RendererOGL::SetTransform ( const matrix4x4f m)
finaloverridevirtual

Implements Graphics::Renderer.

◆ SetViewport()

bool Graphics::RendererOGL::SetViewport ( ViewportExtents  v)
finaloverridevirtual

Implements Graphics::Renderer.

◆ SetWireFrameMode()

bool Graphics::RendererOGL::SetWireFrameMode ( bool  enabled)
finaloverridevirtual

Implements Graphics::Renderer.

Here is the call graph for this function:

◆ SupportsInstancing()

virtual bool Graphics::RendererOGL::SupportsInstancing ( )
inlinefinaloverridevirtual

Implements Graphics::Renderer.

◆ SwapBuffers()

bool Graphics::RendererOGL::SwapBuffers ( )
finaloverridevirtual

Implements Graphics::Renderer.

Here is the call graph for this function:

◆ WriteRendererInfo()

void Graphics::RendererOGL::WriteRendererInfo ( std::ostream &  out) const
finaloverridevirtual

Reimplemented from Graphics::Renderer.

Here is the call graph for this function:

Member Data Documentation

◆ m_activeRenderTarget

OGL::RenderTarget* Graphics::RendererOGL::m_activeRenderTarget = nullptr
protected

◆ m_clearColor

Color Graphics::RendererOGL::m_clearColor
protected

◆ m_drawCommandList

std::unique_ptr<OGL::CommandList> Graphics::RendererOGL::m_drawCommandList
protected

◆ m_drawUniformBuffers

std::vector<std::unique_ptr<OGL::UniformLinearBuffer> > Graphics::RendererOGL::m_drawUniformBuffers
protected

◆ m_frameNum

size_t Graphics::RendererOGL::m_frameNum
protected

◆ m_lightUniformBuffer

RefCountedPtr<OGL::UniformBuffer> Graphics::RendererOGL::m_lightUniformBuffer
protected

◆ m_maxZFar

float Graphics::RendererOGL::m_maxZFar
protected

◆ m_minZNear

float Graphics::RendererOGL::m_minZNear
protected

◆ m_modelViewMat

matrix4x4f Graphics::RendererOGL::m_modelViewMat
protected

◆ m_numDirLights

Uint32 Graphics::RendererOGL::m_numDirLights
protected

◆ m_numLights

Uint32 Graphics::RendererOGL::m_numLights
protected

◆ m_projectionMat

matrix4x4f Graphics::RendererOGL::m_projectionMat
protected

◆ m_renderStateCache

std::unique_ptr<OGL::RenderStateCache> Graphics::RendererOGL::m_renderStateCache
protected

◆ m_shaders

std::vector<std::pair<std::string, OGL::Shader *> > Graphics::RendererOGL::m_shaders
protected

◆ m_useAnisotropicFiltering

bool Graphics::RendererOGL::m_useAnisotropicFiltering
protected

◆ m_useCompressedTextures

bool Graphics::RendererOGL::m_useCompressedTextures
protected

◆ m_useNVDepthRanged

bool Graphics::RendererOGL::m_useNVDepthRanged
protected

◆ m_viewport

ViewportExtents Graphics::RendererOGL::m_viewport
protected

◆ m_windowRenderTarget

OGL::RenderTarget* Graphics::RendererOGL::m_windowRenderTarget = nullptr
protected

The documentation for this class was generated from the following files: