Diligent Engine
 
Loading...
Searching...
No Matches
Diligent::DeviceObjectBase< BaseInterface, RenderDeviceImplType, ObjectDescType > Class Template Reference

Template class implementing base functionality of the device object. More...

#include <DeviceObjectBase.hpp>

Inheritance diagram for Diligent::DeviceObjectBase< BaseInterface, RenderDeviceImplType, ObjectDescType >:
Diligent::ObjectBase< BaseInterface > Diligent::RefCountedObject< BaseInterface > Diligent::BottomLevelASBase< EngineD3D12ImplTraits > Diligent::BottomLevelASBase< EngineVkImplTraits > Diligent::BufferBase< EngineD3D11ImplTraits > Diligent::BufferBase< EngineD3D12ImplTraits > Diligent::BufferBase< EngineGLImplTraits > Diligent::BufferBase< EngineVkImplTraits > Diligent::BufferBase< EngineWebGPUImplTraits > Diligent::BufferViewBase< EngineD3D11ImplTraits > Diligent::BufferViewBase< EngineD3D12ImplTraits > Diligent::BufferViewBase< EngineGLImplTraits > Diligent::BufferViewBase< EngineVkImplTraits > Diligent::BufferViewBase< EngineWebGPUImplTraits > Diligent::CommandListBase< EngineD3D11ImplTraits > Diligent::CommandListBase< EngineD3D12ImplTraits > Diligent::CommandListBase< EngineVkImplTraits > Diligent::DeviceMemoryBase< EngineD3D11ImplTraits > Diligent::DeviceMemoryBase< EngineD3D12ImplTraits > Diligent::DeviceMemoryBase< EngineVkImplTraits > Diligent::FenceBase< EngineD3D11ImplTraits > Diligent::FenceBase< EngineD3D12ImplTraits > Diligent::FenceBase< EngineGLImplTraits > Diligent::FenceBase< EngineVkImplTraits > Diligent::FenceBase< EngineWebGPUImplTraits > Diligent::FramebufferBase< EngineD3D11ImplTraits > Diligent::FramebufferBase< EngineD3D12ImplTraits > Diligent::FramebufferBase< EngineGLImplTraits > Diligent::FramebufferBase< EngineVkImplTraits > Diligent::FramebufferBase< EngineWebGPUImplTraits > Diligent::PipelineResourceSignatureBase< EngineD3D11ImplTraits > Diligent::PipelineResourceSignatureBase< EngineD3D12ImplTraits > Diligent::PipelineResourceSignatureBase< EngineGLImplTraits > Diligent::PipelineResourceSignatureBase< EngineVkImplTraits > Diligent::PipelineResourceSignatureBase< EngineWebGPUImplTraits > Diligent::PipelineStateBase< EngineD3D11ImplTraits > Diligent::PipelineStateBase< EngineD3D12ImplTraits > Diligent::PipelineStateBase< EngineGLImplTraits > Diligent::PipelineStateBase< EngineVkImplTraits > Diligent::PipelineStateBase< EngineWebGPUImplTraits > Diligent::PipelineStateCacheBase< EngineD3D12ImplTraits > Diligent::PipelineStateCacheBase< EngineVkImplTraits > Diligent::QueryBase< EngineD3D11ImplTraits > Diligent::QueryBase< EngineD3D12ImplTraits > Diligent::QueryBase< EngineGLImplTraits > Diligent::QueryBase< EngineVkImplTraits > Diligent::QueryBase< EngineWebGPUImplTraits > Diligent::RenderPassBase< SerializationEngineImplTraits > Diligent::RenderPassBase< EngineD3D11ImplTraits > Diligent::RenderPassBase< EngineD3D12ImplTraits > Diligent::RenderPassBase< EngineGLImplTraits > Diligent::RenderPassBase< EngineVkImplTraits > Diligent::RenderPassBase< EngineWebGPUImplTraits > Diligent::SamplerBase< EngineD3D11ImplTraits > Diligent::SamplerBase< EngineD3D12ImplTraits > Diligent::SamplerBase< EngineGLImplTraits > Diligent::SamplerBase< EngineVkImplTraits > Diligent::SamplerBase< EngineWebGPUImplTraits > Diligent::ShaderBase< EngineGLImplTraits > Diligent::ShaderBase< EngineVkImplTraits > Diligent::ShaderBase< EngineWebGPUImplTraits > Diligent::ShaderBindingTableBase< EngineD3D12ImplTraits > Diligent::ShaderBindingTableBase< EngineVkImplTraits > Diligent::TextureBase< EngineD3D11ImplTraits > Diligent::TextureBase< EngineD3D12ImplTraits > Diligent::TextureBase< EngineGLImplTraits > Diligent::TextureBase< EngineVkImplTraits > Diligent::TextureBase< EngineWebGPUImplTraits > Diligent::TextureViewBase< EngineD3D11ImplTraits > Diligent::TextureViewBase< EngineD3D12ImplTraits > Diligent::TextureViewBase< EngineGLImplTraits > Diligent::TextureViewBase< EngineVkImplTraits > Diligent::TextureViewBase< EngineWebGPUImplTraits > Diligent::TopLevelASBase< EngineD3D12ImplTraits > Diligent::TopLevelASBase< EngineVkImplTraits >

Public Member Functions

 DeviceObjectBase (IReferenceCounters *pRefCounters, RenderDeviceImplType *pDevice, const ObjectDescType &ObjDesc, bool bIsDeviceInternal=false)
 
virtual Int32 DILIGENT_CALL_TYPE GetUniqueID () const override final
 Returns unique identifier.
 
virtual void DILIGENT_CALL_TYPE SetUserData (IObject *pUserData) override final
 Implementation of IDeviceObject::SetUserData.
 
virtual IObject *DILIGENT_CALL_TYPE GetUserData () const override final
 Implementation of IDeviceObject::GetUserData.
 

Protected Attributes

RenderDeviceImplType *const m_pDevice
 Pointer to the device.
 
ObjectDescType m_Desc
 Object description.
 

Detailed Description

template<class BaseInterface, typename RenderDeviceImplType, typename ObjectDescType>
class Diligent::DeviceObjectBase< BaseInterface, RenderDeviceImplType, ObjectDescType >

Template class implementing base functionality of the device object.

Constructor & Destructor Documentation

◆ DeviceObjectBase()

template<class BaseInterface, typename RenderDeviceImplType, typename ObjectDescType>
Diligent::DeviceObjectBase< BaseInterface, RenderDeviceImplType, ObjectDescType >::DeviceObjectBase ( IReferenceCounters * pRefCounters,
RenderDeviceImplType * pDevice,
const ObjectDescType & ObjDesc,
bool bIsDeviceInternal = false )
inline
Parameters
pRefCounters- Reference counters object that controls the lifetime of this device object
pDevice- Pointer to the render device.
ObjDesc- Object description.
bIsDeviceInternal- Flag indicating if the object is an internal device object and must not keep a strong reference to the device.

Member Function Documentation

◆ GetUniqueID()

template<class BaseInterface, typename RenderDeviceImplType, typename ObjectDescType>
virtual Int32 DILIGENT_CALL_TYPE Diligent::DeviceObjectBase< BaseInterface, RenderDeviceImplType, ObjectDescType >::GetUniqueID ( ) const
inlinefinaloverridevirtual

Returns unique identifier.

Remarks
This unique ID is used to unambiguously identify device object for tracking purposes within the device. Neither GL handle nor pointer could be safely used for this purpose as both GL reuses released handles and we pool device objects and reuse released ones.
Note
Objects created from different devices may have the same unique ID.