CeresEngine 0.2.0
A game development framework
Loading...
Searching...
No Matches
CeresEngine::VKGraphicsPipeline Class Referencefinal

#include <CeresEngine/RenderAPI/Vulkan/VKGraphicsPipeline.hpp>

Inheritance diagram for CeresEngine::VKGraphicsPipeline:
CeresEngine::GPUGraphicsPipeline CeresEngine::VKDeviceObject< VKGraphicsPipeline, GPUGraphicsPipeline > CeresEngine::TDeviceObject< GPUGraphicsPipelineDescriptor > CeresEngine::VKObject< ChildTypeName, ParentType > CeresEngine::VKDeviceObjectBase CeresEngine::GPUDeviceObject CeresEngine::VKObjectBase CeresEngine::GPUObject

Public Types

using Allocator = VKObjectAllocator
 An allocator type used to allocate new VKGraphicsPipeline instances from a memory pool.
 
- Public Types inherited from CeresEngine::TDeviceObject< GPUGraphicsPipelineDescriptor >
using Descriptor = GPUGraphicsPipelineDescriptor
 An type-alias to the descriptor struct type.
 

Public Member Functions

 VKGraphicsPipeline (VKDevice &device, const GPUGraphicsPipelineDescriptor &descriptor)
 
 ~VKGraphicsPipeline () final
 
void destroy () noexcept final
 
 operator VkPipeline () const noexcept
 The pipeline object.
 
GPUResourceSetPtr createResourceSet (const GPUResourceSetDescriptor &descriptor, UInt32 setIndex=0) final
 
void begin (GPUCommandBuffer &commandBuffer) final
 
void end (GPUCommandBuffer &commandBuffer) final
 
- Public Member Functions inherited from CeresEngine::GPUGraphicsPipeline
 GPUGraphicsPipeline (const GPUGraphicsPipeline &)=delete
 Deleted copy constructor.
 
GPUGraphicsPipelineoperator= (const GPUGraphicsPipeline &)=delete
 
 GPUGraphicsPipeline (GPUGraphicsPipeline &&)=delete
 Deleted move constructor.
 
GPUGraphicsPipelineoperator= (GPUGraphicsPipeline &&)=delete
 
template<typename Func , typename... Args>
decltype(autowith (GPUCommandBuffer &commandBuffer, Func &&func)
 Prepares the pipeline for execution.
 
 TDeviceObject (GPUDevice &device, const Descriptor &descriptor)
 Inherited constructors.
 
 TDeviceObject (const TDeviceObject &)=delete
 Inherited constructors.
 
 TDeviceObject (TDeviceObject &&)=delete
 Inherited constructors.
 
- Public Member Functions inherited from CeresEngine::TDeviceObject< GPUGraphicsPipelineDescriptor >
 TDeviceObject (GPUDevice &device, const Descriptor &descriptor)
 Initializes a new RenderAPI device object instance.
 
 TDeviceObject (const TDeviceObject &)=delete
 
 TDeviceObject (TDeviceObject &&)=delete
 
 ~TDeviceObject () override=default
 
TDeviceObjectoperator= (const TDeviceObject &)=delete
 
TDeviceObjectoperator= (TDeviceObject &&)=delete
 
- Public Member Functions inherited from CeresEngine::GPUDeviceObject
 GPUDeviceObject (GPUDevice &device)
 
 ~GPUDeviceObject () override
 
- Public Member Functions inherited from CeresEngine::GPUObject
 GPUObject ()=default
 
virtual ~GPUObject ()=default
 
 GPUObject (const GPUObject &)=delete
 
GPUObjectoperator= (const GPUObject &)=delete
 
 GPUObject (GPUObject &&)=delete
 
GPUObjectoperator= (GPUObject &&)=delete
 
void retain () noexcept
 Retains the object by increment it's reference count by one.
 
bool release () noexcept
 Releases the object by decrementing it's reference count by one.
 
- Public Member Functions inherited from CeresEngine::VKDeviceObjectBase
 VKDeviceObjectBase (VKDevice &device) noexcept
 Creates a new VKDeviceObjectBase from the given device.
 
 ~VKDeviceObjectBase () noexcept
 Destroys the VKDeviceObjectBase.
 

Static Public Member Functions

static AllocatorgetAllocator () noexcept
 Returns the allocator for VKGraphicsPipeline.
 
static voidoperator new (size_t size) noexcept
 Allocates memory for a new instance of VKGraphicsPipeline.
 
static void operator delete (void *p, std::size_t size) noexcept
 Deletes memory for an instance of VKGraphicsPipeline.
 
- Static Public Member Functions inherited from CeresEngine::VKObject< ChildTypeName, ParentType >
static RC< ChildTypeNamecast (const RC< ParentType > &ptr)
 Casts a RC containing a ParentType pointer to a pointer to a pointer to a ChildTypeName.
 
static ChildTypeNamecast (ParentType &object)
 Casts a object of type ParentType to a object of type ChildTypeName.
 
static const ChildTypeNamecast (const ParentType &object)
 Casts a object of type ParentType to a object of type ChildTypeName.
 
static ChildTypeNamecast (ParentType *object)
 Casts a object of type ParentType to a object of type ChildTypeName.
 
static const ChildTypeNamecast (const ParentType *object)
 Casts a object of type ParentType to a object of type ChildTypeName.
 
- Static Public Member Functions inherited from CeresEngine::VKObjectBase
static voidoperator new (size_t size) noexcept
 
static void operator delete (void *p, std::size_t sz) noexcept
 

Private Attributes

const GPUGraphicsPipelineDescriptor descriptorVK
 A structure that describes the graphics pipeline and it's properties.
 
VkPipeline mPipeline = VK_NULL_HANDLE
 The pipeline object.
 
VKShaderProgramPtr mShaderProgram
 The Vulkan shader program.
 
VKPipelineLayoutPtr mPipelineLayout
 A reference to the pipeline layout object.
 
VKRenderPassPtr mRenderPass
 The Vulkan render pass.
 
Vector< Viewport, VKAllocatormViewports
 Specifies an optional list of viewports.
 
Vector< Scissor, VKAllocatormScissors
 Specifies an optional list of scissor rectangles.
 

Additional Inherited Members

- Public Attributes inherited from CeresEngine::TDeviceObject< GPUGraphicsPipelineDescriptor >
const Descriptordescriptor
 A structure that describes the object and it's properties.
 
- Public Attributes inherited from CeresEngine::GPUDeviceObject
GPUDevicedevice
 The owning device this object was created from.
 
- Public Attributes inherited from CeresEngine::VKDeviceObjectBase
VKDevicedeviceVK
 The owning VKDevice instance.
 
- Protected Member Functions inherited from CeresEngine::VKDeviceObject< VKGraphicsPipeline, GPUGraphicsPipeline >
 VKDeviceObject (VKDevice &device) noexcept
 Creates a new VKDeviceObject from the given device.
 

Member Typedef Documentation

◆ Allocator

An allocator type used to allocate new VKGraphicsPipeline instances from a memory pool.

Constructor & Destructor Documentation

◆ VKGraphicsPipeline()

CeresEngine::VKGraphicsPipeline::VKGraphicsPipeline ( VKDevice device,
const GPUGraphicsPipelineDescriptor descriptor 
)

◆ ~VKGraphicsPipeline()

CeresEngine::VKGraphicsPipeline::~VKGraphicsPipeline ( )
final

Member Function Documentation

◆ begin()

void CeresEngine::VKGraphicsPipeline::begin ( GPUCommandBuffer commandBuffer)
finalvirtual

◆ createResourceSet()

GPUResourceSetPtr CeresEngine::VKGraphicsPipeline::createResourceSet ( const GPUResourceSetDescriptor descriptor,
UInt32  setIndex = 0 
)
finalvirtual

◆ destroy()

void CeresEngine::VKGraphicsPipeline::destroy ( )
finalvirtualnoexcept

Reimplemented from CeresEngine::GPUObject.

◆ end()

void CeresEngine::VKGraphicsPipeline::end ( GPUCommandBuffer commandBuffer)
finalvirtual

◆ getAllocator()

static Allocator & CeresEngine::VKGraphicsPipeline::getAllocator ( )
staticnoexcept

Returns the allocator for VKGraphicsPipeline.

◆ operator delete()

static void CeresEngine::VKGraphicsPipeline::operator delete ( void p,
std::size_t  size 
)
staticnoexcept

Deletes memory for an instance of VKGraphicsPipeline.

◆ operator new()

static void * CeresEngine::VKGraphicsPipeline::operator new ( size_t  size)
staticnoexcept

Allocates memory for a new instance of VKGraphicsPipeline.

◆ operator VkPipeline()

CeresEngine::VKGraphicsPipeline::operator VkPipeline ( ) const
inlinenoexcept

The pipeline object.

Member Data Documentation

◆ descriptorVK

const GPUGraphicsPipelineDescriptor CeresEngine::VKGraphicsPipeline::descriptorVK
private

A structure that describes the graphics pipeline and it's properties.

◆ mPipeline

VkPipeline CeresEngine::VKGraphicsPipeline::mPipeline = VK_NULL_HANDLE
private

The pipeline object.

◆ mPipelineLayout

VKPipelineLayoutPtr CeresEngine::VKGraphicsPipeline::mPipelineLayout
private

A reference to the pipeline layout object.

◆ mRenderPass

VKRenderPassPtr CeresEngine::VKGraphicsPipeline::mRenderPass
private

The Vulkan render pass.

◆ mScissors

Vector<Scissor, VKAllocator> CeresEngine::VKGraphicsPipeline::mScissors
private

Specifies an optional list of scissor rectangles.

If empty, the scissors must be set dynamically with the command buffer.

Remarks
This list must have the same number of entries as viewports, unless one of the lists is empty.

◆ mShaderProgram

VKShaderProgramPtr CeresEngine::VKGraphicsPipeline::mShaderProgram
private

The Vulkan shader program.

◆ mViewports

Vector<Viewport, VKAllocator> CeresEngine::VKGraphicsPipeline::mViewports
private

Specifies an optional list of viewports.

If empty, the viewports must be set dynamically with the command buffer.


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