SleakEngine 1.0.0
C++23 multi-backend game engine
Loading...
Searching...
No Matches
Sleak::RenderEngine::RenderContext Class Referenceabstract

Abstract interface for high-level graphics command execution and resource management. More...

#include <RenderContext.hpp>

Inheritance diagram for Sleak::RenderEngine::RenderContext:

Public Member Functions

virtual void BeginCustomFormatPass (VertexFormatHandle format)
 Binds the pipeline built for a registered vertex layout in the active render pass.
virtual void BeginDebugLinePass ()
virtual void BeginForwardTransparentPass ()
virtual void BeginShadowPass ()
virtual void BeginSkinnedPass ()
virtual void BeginSkyboxPass ()
virtual void BindBoneBuffer (RefPtr< BufferBase > buffer)
virtual void BindConstantBuffer (RefPtr< BufferBase > buffer, uint32_t slot=0)=0
virtual void BindGBufferShader ()
virtual void BindIndexBuffer (RefPtr< BufferBase > buffer, uint32_t slot=0)=0
virtual void BindPBRMaterial (Sleak::Material *material)
virtual void BindTexture (RefPtr< Sleak::Texture > texture, uint32_t slot=0)
virtual void BindTextureRaw (Sleak::Texture *texture, uint32_t slot=0)
virtual void BindVertexBuffer (RefPtr< BufferBase > buffer, uint32_t slot=0)=0
virtual void ClearDepthStencil (bool clearDepth, bool clearStencil, float depth, uint8_t stencil)=0
virtual void ClearRenderTarget (float r, float g, float b, float a)=0
virtual BufferBaseCreateBuffer (BufferType Type, uint32_t size, void *data)=0
 Allocates a backend buffer, optionally seeded with initial data.
virtual ShaderCreateShader (const std::string &shaderSource)=0
 Compiles a shader program from source or a source-file path.
virtual TextureCreateTexture (const std::string &TexturePath)=0
 Loads a texture from disk.
virtual TextureCreateTextureFromData (uint32_t width, uint32_t height, void *data)=0
 Creates a texture from an in-memory pixel buffer.
virtual void Draw (uint32_t vertexCount)=0
 Non-indexed draw from the currently bound vertex buffer.
virtual void DrawIndexed (uint32_t indexCount)=0
 Indexed draw from the currently bound vertex/index buffers.
virtual void DrawIndexedInstance (uint32_t instanceCount, uint32_t indexPerInstance)=0
 Indexed instanced draw.
virtual void DrawInstance (uint32_t instanceCount, uint32_t vertexPerInstance)=0
 Non-indexed instanced draw.
virtual void EndCustomFormatPass ()
 Restores the pipeline that was active before the custom format draws.
virtual void EndDebugLinePass ()
virtual void EndForwardTransparentPass ()
virtual void EndShadowPass ()
virtual void EndSkinnedPass ()
virtual void EndSkyboxPass ()
virtual void ExecuteDeferredLightingPass ()
virtual bool IsDeferredEnabled () const
virtual bool IsInGeometryPass () const
virtual bool IsShadowPassActive () const
virtual void SetCullEnabled (bool enabled)
virtual void SetDepthCompare (DepthCompare compare)
virtual void SetDepthWrite (bool enabled)
virtual void SetRenderFace (RenderFace face)=0
virtual void SetRenderMode (RenderMode mode)=0
virtual void SetViewport (float x, float y, float width, float height, float minDepth=0.0f, float maxDepth=1.0f)=0
 Sets the active viewport rect and depth range in pixel/NDC units.
virtual void UpdateDeferredCB (const void *data, uint32_t size)

Detailed Description

Abstract interface for high-level graphics command execution and resource management.

  • The RenderContext acts as the primary bridge between the Sleak Engine's logic and the underlying Graphics API (Vulkan, DX11, etc.). It provides a unified set of commands for:
  • Command Dispatch: Executing non-indexed, indexed, and instanced draw calls.
  • State Management: Configuring the pipeline state (Viewports, Culling, Rasterization).
  • Resource Creation: Serving as a Factory for API-specific buffers, shaders, and textures.
  • Resource Binding: Mapping hardware buffers to specific pipeline slots.
  • Note
    This is a pure virtual interface. Implementations (e.g., VulkanRenderContext) must handle the specific synchronization and driver-level requirements of their respective APIs.

Definition at line 55 of file RenderContext.hpp.

Member Function Documentation

◆ BeginCustomFormatPass()

virtual void Sleak::RenderEngine::RenderContext::BeginCustomFormatPass ( VertexFormatHandle format)
inlinevirtual

Binds the pipeline built for a registered vertex layout in the active render pass.

Reimplemented in Sleak::RenderEngine::VulkanRenderer.

Definition at line 95 of file RenderContext.hpp.

◆ BeginDebugLinePass()

virtual void Sleak::RenderEngine::RenderContext::BeginDebugLinePass ( )
inlinevirtual

◆ BeginForwardTransparentPass()

virtual void Sleak::RenderEngine::RenderContext::BeginForwardTransparentPass ( )
inlinevirtual

Reimplemented in Sleak::RenderEngine::VulkanRenderer.

Definition at line 122 of file RenderContext.hpp.

◆ BeginShadowPass()

virtual void Sleak::RenderEngine::RenderContext::BeginShadowPass ( )
inlinevirtual

Reimplemented in Sleak::RenderEngine::VulkanRenderer.

Definition at line 104 of file RenderContext.hpp.

◆ BeginSkinnedPass()

virtual void Sleak::RenderEngine::RenderContext::BeginSkinnedPass ( )
inlinevirtual

Reimplemented in Sleak::RenderEngine::VulkanRenderer.

Definition at line 90 of file RenderContext.hpp.

◆ BeginSkyboxPass()

virtual void Sleak::RenderEngine::RenderContext::BeginSkyboxPass ( )
inlinevirtual

Reimplemented in Sleak::RenderEngine::VulkanRenderer.

Definition at line 83 of file RenderContext.hpp.

◆ BindBoneBuffer()

virtual void Sleak::RenderEngine::RenderContext::BindBoneBuffer ( RefPtr< BufferBase > buffer)
inlinevirtual

◆ BindConstantBuffer()

virtual void Sleak::RenderEngine::RenderContext::BindConstantBuffer ( RefPtr< BufferBase > buffer,
uint32_t slot = 0 )
pure virtual

◆ BindGBufferShader()

virtual void Sleak::RenderEngine::RenderContext::BindGBufferShader ( )
inlinevirtual

Reimplemented in Sleak::RenderEngine::VulkanRenderer.

Definition at line 114 of file RenderContext.hpp.

◆ BindIndexBuffer()

virtual void Sleak::RenderEngine::RenderContext::BindIndexBuffer ( RefPtr< BufferBase > buffer,
uint32_t slot = 0 )
pure virtual

◆ BindPBRMaterial()

virtual void Sleak::RenderEngine::RenderContext::BindPBRMaterial ( Sleak::Material * material)
inlinevirtual

Reimplemented in Sleak::RenderEngine::VulkanRenderer.

Definition at line 117 of file RenderContext.hpp.

◆ BindTexture()

virtual void Sleak::RenderEngine::RenderContext::BindTexture ( RefPtr< Sleak::Texture > texture,
uint32_t slot = 0 )
inlinevirtual

◆ BindTextureRaw()

virtual void Sleak::RenderEngine::RenderContext::BindTextureRaw ( Sleak::Texture * texture,
uint32_t slot = 0 )
inlinevirtual

Reimplemented in Sleak::RenderEngine::VulkanRenderer.

Definition at line 80 of file RenderContext.hpp.

◆ BindVertexBuffer()

virtual void Sleak::RenderEngine::RenderContext::BindVertexBuffer ( RefPtr< BufferBase > buffer,
uint32_t slot = 0 )
pure virtual

◆ ClearDepthStencil()

virtual void Sleak::RenderEngine::RenderContext::ClearDepthStencil ( bool clearDepth,
bool clearStencil,
float depth,
uint8_t stencil )
pure virtual

◆ ClearRenderTarget()

virtual void Sleak::RenderEngine::RenderContext::ClearRenderTarget ( float r,
float g,
float b,
float a )
pure virtual

◆ CreateBuffer()

virtual BufferBase * Sleak::RenderEngine::RenderContext::CreateBuffer ( BufferType Type,
uint32_t size,
void * data )
pure virtual

Allocates a backend buffer, optionally seeded with initial data.

Implemented in Sleak::RenderEngine::OpenGLRenderer, and Sleak::RenderEngine::VulkanRenderer.

◆ CreateShader()

virtual Shader * Sleak::RenderEngine::RenderContext::CreateShader ( const std::string & shaderSource)
pure virtual

Compiles a shader program from source or a source-file path.

Implemented in Sleak::RenderEngine::OpenGLRenderer, and Sleak::RenderEngine::VulkanRenderer.

◆ CreateTexture()

virtual Texture * Sleak::RenderEngine::RenderContext::CreateTexture ( const std::string & TexturePath)
pure virtual

Loads a texture from disk.

Implemented in Sleak::RenderEngine::OpenGLRenderer, and Sleak::RenderEngine::VulkanRenderer.

◆ CreateTextureFromData()

virtual Texture * Sleak::RenderEngine::RenderContext::CreateTextureFromData ( uint32_t width,
uint32_t height,
void * data )
pure virtual

Creates a texture from an in-memory pixel buffer.

Implemented in Sleak::RenderEngine::OpenGLRenderer, and Sleak::RenderEngine::VulkanRenderer.

◆ Draw()

virtual void Sleak::RenderEngine::RenderContext::Draw ( uint32_t vertexCount)
pure virtual

Non-indexed draw from the currently bound vertex buffer.

Implemented in Sleak::RenderEngine::OpenGLRenderer, and Sleak::RenderEngine::VulkanRenderer.

◆ DrawIndexed()

virtual void Sleak::RenderEngine::RenderContext::DrawIndexed ( uint32_t indexCount)
pure virtual

Indexed draw from the currently bound vertex/index buffers.

Implemented in Sleak::RenderEngine::OpenGLRenderer, and Sleak::RenderEngine::VulkanRenderer.

◆ DrawIndexedInstance()

virtual void Sleak::RenderEngine::RenderContext::DrawIndexedInstance ( uint32_t instanceCount,
uint32_t indexPerInstance )
pure virtual

Indexed instanced draw.

Implemented in Sleak::RenderEngine::OpenGLRenderer, and Sleak::RenderEngine::VulkanRenderer.

◆ DrawInstance()

virtual void Sleak::RenderEngine::RenderContext::DrawInstance ( uint32_t instanceCount,
uint32_t vertexPerInstance )
pure virtual

Non-indexed instanced draw.

Implemented in Sleak::RenderEngine::OpenGLRenderer, and Sleak::RenderEngine::VulkanRenderer.

◆ EndCustomFormatPass()

virtual void Sleak::RenderEngine::RenderContext::EndCustomFormatPass ( )
inlinevirtual

Restores the pipeline that was active before the custom format draws.

Reimplemented in Sleak::RenderEngine::VulkanRenderer.

Definition at line 97 of file RenderContext.hpp.

◆ EndDebugLinePass()

virtual void Sleak::RenderEngine::RenderContext::EndDebugLinePass ( )
inlinevirtual

◆ EndForwardTransparentPass()

virtual void Sleak::RenderEngine::RenderContext::EndForwardTransparentPass ( )
inlinevirtual

Reimplemented in Sleak::RenderEngine::VulkanRenderer.

Definition at line 124 of file RenderContext.hpp.

◆ EndShadowPass()

virtual void Sleak::RenderEngine::RenderContext::EndShadowPass ( )
inlinevirtual

Reimplemented in Sleak::RenderEngine::VulkanRenderer.

Definition at line 105 of file RenderContext.hpp.

◆ EndSkinnedPass()

virtual void Sleak::RenderEngine::RenderContext::EndSkinnedPass ( )
inlinevirtual

Reimplemented in Sleak::RenderEngine::VulkanRenderer.

Definition at line 91 of file RenderContext.hpp.

◆ EndSkyboxPass()

virtual void Sleak::RenderEngine::RenderContext::EndSkyboxPass ( )
inlinevirtual

Reimplemented in Sleak::RenderEngine::VulkanRenderer.

Definition at line 84 of file RenderContext.hpp.

◆ ExecuteDeferredLightingPass()

virtual void Sleak::RenderEngine::RenderContext::ExecuteDeferredLightingPass ( )
inlinevirtual

Reimplemented in Sleak::RenderEngine::VulkanRenderer.

Definition at line 120 of file RenderContext.hpp.

◆ IsDeferredEnabled()

virtual bool Sleak::RenderEngine::RenderContext::IsDeferredEnabled ( ) const
inlinevirtual

Reimplemented in Sleak::RenderEngine::VulkanRenderer.

Definition at line 112 of file RenderContext.hpp.

◆ IsInGeometryPass()

virtual bool Sleak::RenderEngine::RenderContext::IsInGeometryPass ( ) const
inlinevirtual

Reimplemented in Sleak::RenderEngine::VulkanRenderer.

Definition at line 110 of file RenderContext.hpp.

◆ IsShadowPassActive()

virtual bool Sleak::RenderEngine::RenderContext::IsShadowPassActive ( ) const
inlinevirtual

Reimplemented in Sleak::RenderEngine::VulkanRenderer.

Definition at line 106 of file RenderContext.hpp.

◆ SetCullEnabled()

virtual void Sleak::RenderEngine::RenderContext::SetCullEnabled ( bool enabled)
inlinevirtual

Reimplemented in Sleak::RenderEngine::OpenGLRenderer.

Definition at line 78 of file RenderContext.hpp.

◆ SetDepthCompare()

virtual void Sleak::RenderEngine::RenderContext::SetDepthCompare ( DepthCompare compare)
inlinevirtual

Reimplemented in Sleak::RenderEngine::OpenGLRenderer.

Definition at line 77 of file RenderContext.hpp.

◆ SetDepthWrite()

virtual void Sleak::RenderEngine::RenderContext::SetDepthWrite ( bool enabled)
inlinevirtual

Reimplemented in Sleak::RenderEngine::OpenGLRenderer.

Definition at line 76 of file RenderContext.hpp.

◆ SetRenderFace()

virtual void Sleak::RenderEngine::RenderContext::SetRenderFace ( RenderFace face)
pure virtual

◆ SetRenderMode()

virtual void Sleak::RenderEngine::RenderContext::SetRenderMode ( RenderMode mode)
pure virtual

◆ SetViewport()

virtual void Sleak::RenderEngine::RenderContext::SetViewport ( float x,
float y,
float width,
float height,
float minDepth = 0.0f,
float maxDepth = 1.0f )
pure virtual

Sets the active viewport rect and depth range in pixel/NDC units.

Implemented in Sleak::RenderEngine::OpenGLRenderer, and Sleak::RenderEngine::VulkanRenderer.

◆ UpdateDeferredCB()

virtual void Sleak::RenderEngine::RenderContext::UpdateDeferredCB ( const void * data,
uint32_t size )
inlinevirtual

Reimplemented in Sleak::RenderEngine::VulkanRenderer.

Definition at line 126 of file RenderContext.hpp.