4#include <Foundation/Containers/HashTable.h>
5#include <Foundation/Containers/IdTable.h>
6#include <Foundation/Memory/CommonAllocators.h>
7#include <Foundation/Strings/HashedString.h>
8#include <RendererFoundation/Descriptors/Descriptors.h>
9#include <RendererFoundation/Device/DeviceCapabilities.h>
10#include <RendererFoundation/RendererFoundationDLL.h>
150 void BeginFrame(
const plUInt64 uiAppFrame = 0);
158 plUInt64 GetCurrentFrame()
const;
162 plUInt64 GetSafeFrame()
const;
168 template <
typename T>
171 return static_cast<const T*
>(GetSwapChainInternal(hSwapChain, plGetStaticRTTI<T>()));
194 static void SetDefaultDevice(
plGALDevice* pDefaultDevice);
196 static bool HasDefaultDevice();
219 template <
typename IdTableType,
typename ReturnType>
220 ReturnType* Get(
typename IdTableType::TypeOfId hHandle,
const IdTableType& IdTable)
const;
225 template <
typename HandleType>
226 void AddDeadObject(plUInt32 uiType, HandleType handle);
228 template <
typename HandleType>
229 void ReviveDeadObject(plUInt32 uiType, HandleType handle);
231 void DestroyDeadObjects();
234 void VerifyMultithreadedAccess()
const;
284 PL_DECLARE_POD_TYPE();
305 virtual plResult InitPlatform() = 0;
306 virtual plResult ShutdownPlatform() = 0;
321 virtual void DestroyBlendStatePlatform(
plGALBlendState* pBlendState) = 0;
335 virtual void DestroyShaderPlatform(
plGALShader* pShader) = 0;
338 virtual void DestroyBufferPlatform(
plGALBuffer* pBuffer) = 0;
341 virtual void DestroyTexturePlatform(
plGALTexture* pTexture) = 0;
344 virtual void DestroySharedTexturePlatform(
plGALTexture* pTexture) = 0;
377 virtual plUInt64 GetCurrentFramePlatform()
const = 0;
378 virtual plUInt64 GetSafeFramePlatform()
const = 0;
380 virtual void FillCapabilitiesPlatform() = 0;
382 virtual void FlushPlatform() = 0;
383 virtual void WaitIdlePlatform() = 0;
389 bool m_bBeginFrameCalled =
false;
391 bool m_bBeginPipelineCalled =
false;
392 bool m_bBeginCommandsCalled =
false;
395#include <RendererFoundation/Device/Implementation/Device_inl.h>
Base class for all memory allocators.
Definition Allocator.h:23
This class encapsulates an array and it's size. It is recommended to use this class instead of plain ...
Definition ArrayPtr.h:37
plColor represents an RGBA color in linear color space. Values are stored as float,...
Definition Color.h:44
Definition DynamicArray.h:81
Definition RendererFoundationDLL.h:467
Definition RendererFoundationDLL.h:418
Definition RendererFoundationDLL.h:432
Definition ResourceView.h:30
Definition RendererFoundationDLL.h:446
Definition UnorderedAccesView.h:28
Definition CommandEncoder.h:11
Definition RendererFoundationDLL.h:460
The plRenderDevice class is the primary interface for interactions with rendering APIs It contains a ...
Definition Device.h:19
Definition RendererFoundationDLL.h:474
Definition RendererFoundationDLL.h:453
Definition RenderTargetView.h:8
Definition RendererFoundationDLL.h:481
Definition RendererFoundationDLL.h:404
Optional interface for plGALTexture if it was created via plGALDevice::CreateSharedTexture....
Definition Texture.h:33
Definition RendererFoundationDLL.h:397
Definition SwapChain.h:11
Definition RendererFoundationDLL.h:411
Definition RendererFoundationDLL.h:425
Definition ResourceView.h:11
Definition RendererFoundationDLL.h:439
Definition UnorderedAccesView.h:11
Definition RendererFoundationDLL.h:488
Definition VertexDeclaration.h:8
Definition HashTable.h:333
A hybrid array uses in-place storage to handle the first few elements without any allocation....
Definition HybridArray.h:12
This class provides functions to work on raw memory.
Definition MemoryUtils.h:26
Provides a simple mechanism for mutual exclusion to prevent multiple threads from accessing a shared ...
Definition Mutex.h:13
This class holds information about reflected types. Each instance represents one type that is known t...
Definition RTTI.h:30
plStringView represent a read-only sub-string of a larger string, as it can store a dedicated string ...
Definition StringView.h:34
A generic delegate class which supports static functions and member functions.
Definition Delegate.h:76
A custom enum implementation that allows to define the underlying storage type to control its memory ...
Definition Enum.h:37
Definition Descriptors.h:70
Definition Descriptors.h:169
Definition Descriptors.h:211
Definition Descriptors.h:243
Definition Descriptors.h:88
This struct holds information about the rendering device capabilities (e.g. what shader stages are su...
Definition DeviceCapabilities.h:42
Definition Descriptors.h:39
Describes the settings for a new rasterizer state. See plGALDevice::CreateRasterizerState.
Definition Descriptors.h:105
Definition Descriptors.h:220
Definition Descriptors.h:118
Definition Descriptors.h:44
Definition Descriptors.h:177
Definition Descriptors.h:201
Definition Descriptors.h:234
Definition Descriptors.h:153
A generic id class that holds an id combined of an instance index and a generation counter.
Definition Id.h:52
Definition AllocatorWrapper.h:30
Default enum for returning failure or success, instead of using a bool.
Definition Types.h:54
The time class encapsulates a double value storing the time in seconds.
Definition Time.h:12
PL_ALWAYS_INLINE static constexpr plTime MakeZero()
Creates an instance of plTime that was initialized with zero.
Definition Time.h:42