Exposes OpenGL-specific functionality of a device context. More...
#include <DeviceContextGL.h>
Public Member Functions | |
virtual Bool DILIGENT_CALL_TYPE | UpdateCurrentGLContext ()=0 |
Attaches to the active GL context in the thread. | |
virtual void DILIGENT_CALL_TYPE | PurgeCurrentGLContextCaches ()=0 |
Purges current OpenGL context caches (e.g. VAO, FBO). | |
virtual void DILIGENT_CALL_TYPE | SetSwapChain (struct ISwapChainGL *pSwapChain)=0 |
![]() | |
virtual const DeviceContextDesc &DILIGENT_CALL_TYPE | GetDesc () const =0 |
Returns the context description. | |
virtual void DILIGENT_CALL_TYPE | Begin (Uint32 ImmediateContextId)=0 |
Begins recording commands in the deferred context. | |
virtual void DILIGENT_CALL_TYPE | SetPipelineState (IPipelineState *pPipelineState)=0 |
Sets the pipeline state. | |
virtual void DILIGENT_CALL_TYPE | TransitionShaderResources (IShaderResourceBinding *pShaderResourceBinding)=0 |
virtual void DILIGENT_CALL_TYPE | CommitShaderResources (IShaderResourceBinding *pShaderResourceBinding, RESOURCE_STATE_TRANSITION_MODE StateTransitionMode)=0 |
Commits shader resources to the device context. | |
virtual void DILIGENT_CALL_TYPE | SetStencilRef (Uint32 StencilRef)=0 |
Sets the stencil reference value. | |
virtual void DILIGENT_CALL_TYPE | SetBlendFactors (const float *pBlendFactors=nullptr)=0 |
Sets the blend factors for alpha blending. | |
virtual void DILIGENT_CALL_TYPE | SetVertexBuffers (Uint32 StartSlot, Uint32 NumBuffersSet, IBuffer *const *ppBuffers, const Uint64 *pOffsets, RESOURCE_STATE_TRANSITION_MODE StateTransitionMode, SET_VERTEX_BUFFERS_FLAGS Flags=SET_VERTEX_BUFFERS_FLAG_NONE)=0 |
Binds vertex buffers to the pipeline. | |
virtual void DILIGENT_CALL_TYPE | InvalidateState ()=0 |
Invalidates the cached context state. | |
virtual void DILIGENT_CALL_TYPE | SetIndexBuffer (IBuffer *pIndexBuffer, Uint64 ByteOffset, RESOURCE_STATE_TRANSITION_MODE StateTransitionMode)=0 |
Binds an index buffer to the pipeline. | |
virtual void DILIGENT_CALL_TYPE | SetViewports (Uint32 NumViewports, const Viewport *pViewports, Uint32 RTWidth, Uint32 RTHeight)=0 |
Sets an array of viewports. | |
virtual void DILIGENT_CALL_TYPE | SetScissorRects (Uint32 NumRects, const Rect *pRects, Uint32 RTWidth, Uint32 RTHeight)=0 |
Sets active scissor rects. | |
virtual void DILIGENT_CALL_TYPE | SetRenderTargets (Uint32 NumRenderTargets, ITextureView *ppRenderTargets[], ITextureView *pDepthStencil, RESOURCE_STATE_TRANSITION_MODE StateTransitionMode)=0 |
virtual void DILIGENT_CALL_TYPE | SetRenderTargetsExt (const SetRenderTargetsAttribs &Attribs)=0 |
virtual void DILIGENT_CALL_TYPE | BeginRenderPass (const BeginRenderPassAttribs &Attribs)=0 |
Begins a new render pass. | |
virtual void DILIGENT_CALL_TYPE | NextSubpass ()=0 |
Transitions to the next subpass in the render pass instance. | |
virtual void DILIGENT_CALL_TYPE | EndRenderPass ()=0 |
Ends current render pass. | |
virtual void DILIGENT_CALL_TYPE | Draw (const DrawAttribs &Attribs)=0 |
Executes a draw command. | |
virtual void DILIGENT_CALL_TYPE | DrawIndexed (const DrawIndexedAttribs &Attribs)=0 |
Executes an indexed draw command. | |
virtual void DILIGENT_CALL_TYPE | DrawIndirect (const DrawIndirectAttribs &Attribs)=0 |
Executes an indirect draw command. | |
virtual void DILIGENT_CALL_TYPE | DrawIndexedIndirect (const DrawIndexedIndirectAttribs &Attribs)=0 |
Executes an indexed indirect draw command. | |
virtual void DILIGENT_CALL_TYPE | DrawMesh (const DrawMeshAttribs &Attribs)=0 |
Executes a mesh draw command. | |
virtual void DILIGENT_CALL_TYPE | DrawMeshIndirect (const DrawMeshIndirectAttribs &Attribs)=0 |
Executes an indirect mesh draw command. | |
virtual void DILIGENT_CALL_TYPE | MultiDraw (const MultiDrawAttribs &Attribs)=0 |
Executes a multi-draw command. | |
virtual void DILIGENT_CALL_TYPE | MultiDrawIndexed (const MultiDrawIndexedAttribs &Attribs)=0 |
Executes an indexed multi-draw command. | |
virtual void DILIGENT_CALL_TYPE | DispatchCompute (const DispatchComputeAttribs &Attribs)=0 |
Executes a dispatch compute command. | |
virtual void DILIGENT_CALL_TYPE | DispatchComputeIndirect (const DispatchComputeIndirectAttribs &Attribs)=0 |
Executes an indirect dispatch compute command. | |
virtual void DILIGENT_CALL_TYPE | DispatchTile (const DispatchTileAttribs &Attribs)=0 |
Executes a dispatch tile command. | |
virtual void DILIGENT_CALL_TYPE | GetTileSize (Uint32 &TileSizeX, Uint32 &TileSizeY)=0 |
Returns current render pass tile size. | |
virtual void DILIGENT_CALL_TYPE | ClearDepthStencil (ITextureView *pView, CLEAR_DEPTH_STENCIL_FLAGS ClearFlags, float fDepth, Uint8 Stencil, RESOURCE_STATE_TRANSITION_MODE StateTransitionMode)=0 |
Clears a depth-stencil view. | |
virtual void DILIGENT_CALL_TYPE | ClearRenderTarget (ITextureView *pView, const void *RGBA, RESOURCE_STATE_TRANSITION_MODE StateTransitionMode)=0 |
Clears a render target view. | |
virtual void DILIGENT_CALL_TYPE | FinishCommandList (ICommandList **ppCommandList)=0 |
Finishes recording commands and generates a command list. | |
virtual void DILIGENT_CALL_TYPE | ExecuteCommandLists (Uint32 NumCommandLists, ICommandList *const *ppCommandLists)=0 |
Submits an array of recorded command lists for execution. | |
virtual void DILIGENT_CALL_TYPE | EnqueueSignal (IFence *pFence, Uint64 Value)=0 |
Tells the GPU to set a fence to a specified value after all previous work has completed. | |
virtual void DILIGENT_CALL_TYPE | DeviceWaitForFence (IFence *pFence, Uint64 Value)=0 |
Waits until the specified fence reaches or exceeds the specified value, on the device. | |
virtual void DILIGENT_CALL_TYPE | WaitForIdle ()=0 |
Submits all outstanding commands for execution to the GPU and waits until they are complete. | |
virtual void DILIGENT_CALL_TYPE | BeginQuery (IQuery *pQuery)=0 |
Marks the beginning of a query. | |
virtual void DILIGENT_CALL_TYPE | EndQuery (IQuery *pQuery)=0 |
Marks the end of a query. | |
virtual void DILIGENT_CALL_TYPE | Flush ()=0 |
Submits all pending commands in the context for execution to the command queue. | |
virtual void DILIGENT_CALL_TYPE | UpdateBuffer (IBuffer *pBuffer, Uint64 Offset, Uint64 Size, const void *pData, RESOURCE_STATE_TRANSITION_MODE StateTransitionMode)=0 |
Updates the data in the buffer. | |
virtual void DILIGENT_CALL_TYPE | CopyBuffer (IBuffer *pSrcBuffer, Uint64 SrcOffset, RESOURCE_STATE_TRANSITION_MODE SrcBufferTransitionMode, IBuffer *pDstBuffer, Uint64 DstOffset, Uint64 Size, RESOURCE_STATE_TRANSITION_MODE DstBufferTransitionMode)=0 |
Copies the data from one buffer to another. | |
virtual void DILIGENT_CALL_TYPE | MapBuffer (IBuffer *pBuffer, MAP_TYPE MapType, MAP_FLAGS MapFlags, PVoid &pMappedData)=0 |
Maps the buffer. | |
virtual void DILIGENT_CALL_TYPE | UnmapBuffer (IBuffer *pBuffer, MAP_TYPE MapType)=0 |
Unmaps the previously mapped buffer. | |
virtual void DILIGENT_CALL_TYPE | UpdateTexture (ITexture *pTexture, Uint32 MipLevel, Uint32 Slice, const Box &DstBox, const TextureSubResData &SubresData, RESOURCE_STATE_TRANSITION_MODE SrcBufferTransitionMode, RESOURCE_STATE_TRANSITION_MODE TextureTransitionMode)=0 |
Updates the data in the texture. | |
virtual void DILIGENT_CALL_TYPE | CopyTexture (const CopyTextureAttribs &CopyAttribs)=0 |
Copies data from one texture to another. | |
virtual void DILIGENT_CALL_TYPE | MapTextureSubresource (ITexture *pTexture, Uint32 MipLevel, Uint32 ArraySlice, MAP_TYPE MapType, MAP_FLAGS MapFlags, const Box *pMapRegion, MappedTextureSubresource &MappedData)=0 |
Maps the texture subresource. | |
virtual void DILIGENT_CALL_TYPE | UnmapTextureSubresource (ITexture *pTexture, Uint32 MipLevel, Uint32 ArraySlice)=0 |
Unmaps the texture subresource. | |
virtual void DILIGENT_CALL_TYPE | GenerateMips (ITextureView *pTextureView)=0 |
Generates a mipmap chain. | |
virtual void DILIGENT_CALL_TYPE | FinishFrame ()=0 |
Finishes the current frame and releases dynamic resources allocated by the context. | |
virtual Uint64 DILIGENT_CALL_TYPE | GetFrameNumber () const =0 |
Returns the current frame number. | |
virtual void DILIGENT_CALL_TYPE | TransitionResourceStates (Uint32 BarrierCount, const StateTransitionDesc *pResourceBarriers)=0 |
Transitions resource states. | |
virtual void DILIGENT_CALL_TYPE | ResolveTextureSubresource (ITexture *pSrcTexture, ITexture *pDstTexture, const ResolveTextureSubresourceAttribs &ResolveAttribs)=0 |
Resolves a multi-sampled texture subresource into a non-multi-sampled texture subresource. | |
virtual void DILIGENT_CALL_TYPE | BuildBLAS (const BuildBLASAttribs &Attribs)=0 |
Builds a bottom-level acceleration structure with the specified geometries. | |
virtual void DILIGENT_CALL_TYPE | BuildTLAS (const BuildTLASAttribs &Attribs)=0 |
Builds a top-level acceleration structure with the specified instances. | |
virtual void DILIGENT_CALL_TYPE | CopyBLAS (const CopyBLASAttribs &Attribs)=0 |
Copies data from one acceleration structure to another. | |
virtual void DILIGENT_CALL_TYPE | CopyTLAS (const CopyTLASAttribs &Attribs)=0 |
Copies data from one acceleration structure to another. | |
virtual void DILIGENT_CALL_TYPE | WriteBLASCompactedSize (const WriteBLASCompactedSizeAttribs &Attribs)=0 |
Writes a bottom-level acceleration structure memory size required for compacting operation to a buffer. | |
virtual void DILIGENT_CALL_TYPE | WriteTLASCompactedSize (const WriteTLASCompactedSizeAttribs &Attribs)=0 |
Writes a top-level acceleration structure memory size required for compacting operation to a buffer. | |
virtual void DILIGENT_CALL_TYPE | TraceRays (const TraceRaysAttribs &Attribs)=0 |
Executes a trace rays command. | |
virtual void DILIGENT_CALL_TYPE | TraceRaysIndirect (const TraceRaysIndirectAttribs &Attribs)=0 |
Executes an indirect trace rays command. | |
virtual void DILIGENT_CALL_TYPE | UpdateSBT (IShaderBindingTable *pSBT, const UpdateIndirectRTBufferAttribs *pUpdateIndirectBufferAttribs=nullptr)=0 |
Updates SBT with the pending data that were recorded in IShaderBindingTable::Bind*** calls. | |
virtual void DILIGENT_CALL_TYPE | SetUserData (IObject *pUserData)=0 |
Stores a pointer to the user-provided data object. | |
virtual IObject *DILIGENT_CALL_TYPE | GetUserData () const =0 |
Returns a pointer to the user data object previously. | |
virtual void DILIGENT_CALL_TYPE | BeginDebugGroup (const Char *Name, const float *pColor=nullptr)=0 |
Begins a debug group with name and color. | |
virtual void DILIGENT_CALL_TYPE | EndDebugGroup ()=0 |
Ends a debug group that was previously started with BeginDebugGroup(). | |
virtual void DILIGENT_CALL_TYPE | InsertDebugLabel (const Char *Label, const float *pColor=nullptr)=0 |
Inserts a debug label with name and color. | |
virtual ICommandQueue *DILIGENT_CALL_TYPE | LockCommandQueue ()=0 |
Locks the internal mutex and returns a pointer to the command queue that is associated with this device context. | |
virtual void DILIGENT_CALL_TYPE | UnlockCommandQueue ()=0 |
Unlocks the command queue that was previously locked by LockCommandQueue(). | |
virtual void DILIGENT_CALL_TYPE | SetShadingRate (SHADING_RATE BaseRate, SHADING_RATE_COMBINER PrimitiveCombiner, SHADING_RATE_COMBINER TextureCombiner)=0 |
Sets the shading base rate and combiners. | |
virtual void DILIGENT_CALL_TYPE | BindSparseResourceMemory (const BindSparseResourceMemoryAttribs &Attribs)=0 |
Binds or unbinds memory objects to sparse buffer and sparse textures. | |
virtual void DILIGENT_CALL_TYPE | ClearStats ()=0 |
Clears the device context statistics. | |
virtual const DeviceContextStats &DILIGENT_CALL_TYPE | GetStats () const =0 |
Returns the device context statistics, see Diligent::DeviceContextStats. | |
![]() | |
virtual void DILIGENT_CALL_TYPE | QueryInterface (const INTERFACE_ID &IID, IObject **ppInterface)=0 |
Queries the specific interface. | |
virtual ReferenceCounterValueType DILIGENT_CALL_TYPE | AddRef ()=0 |
Increments the number of strong references by 1. | |
virtual ReferenceCounterValueType DILIGENT_CALL_TYPE | Release ()=0 |
virtual IReferenceCounters *DILIGENT_CALL_TYPE | GetReferenceCounters () const =0 |
Exposes OpenGL-specific functionality of a device context.
|
pure virtual |
Purges current OpenGL context caches (e.g. VAO, FBO).
If an application uses multiple GL contexts, this method must be called before the current context is about to be released, to let the engine cleanup internal OpenGL object caches.
|
pure virtual |
Sets the swap in the device context. The swap chain is used by the device context to obtain the default FBO handle.
|
pure virtual |
Attaches to the active GL context in the thread.
If an application uses multiple GL contexts, this method must be called before any other command to let the engine update active context every time when control flow is passed over from the main application.