HDK
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
HgiGraphicsCmds Class Referenceabstract

#include <graphicsCmds.h>

+ Inheritance diagram for HgiGraphicsCmds:

Public Member Functions

HGI_API ~HgiGraphicsCmds () override
 
virtual HGI_API void PushDebugGroup (const char *label)=0
 Push a debug marker. More...
 
virtual HGI_API void PopDebugGroup ()=0
 Pop the last debug marker. More...
 
virtual HGI_API void SetViewport (GfVec4i const &vp)=0
 Set viewport [left, BOTTOM, width, height] - OpenGL coords. More...
 
virtual HGI_API void SetScissor (GfVec4i const &sc)=0
 
virtual HGI_API void BindPipeline (HgiGraphicsPipelineHandle pipeline)=0
 
virtual HGI_API void BindResources (HgiResourceBindingsHandle resources)=0
 
virtual HGI_API void SetConstantValues (HgiGraphicsPipelineHandle pipeline, HgiShaderStage stages, uint32_t bindIndex, uint32_t byteSize, const void *data)=0
 
virtual HGI_API void BindVertexBuffers (uint32_t firstBinding, HgiBufferHandleVector const &buffers, std::vector< uint32_t > const &byteOffsets)=0
 
virtual HGI_API void Draw (uint32_t vertexCount, uint32_t baseVertex, uint32_t instanceCount, uint32_t baseInstance)=0
 
virtual HGI_API void DrawIndirect (HgiBufferHandle const &drawParameterBuffer, uint32_t drawBufferByteOffset, uint32_t drawCount, uint32_t stride)=0
 
virtual HGI_API void DrawIndexed (HgiBufferHandle const &indexBuffer, uint32_t indexCount, uint32_t indexBufferByteOffset, uint32_t baseVertex, uint32_t instanceCount, uint32_t baseInstance)=0
 
virtual HGI_API void DrawIndexedIndirect (HgiBufferHandle const &indexBuffer, HgiBufferHandle const &drawParameterBuffer, uint32_t drawBufferByteOffset, uint32_t drawCount, uint32_t stride, std::vector< uint32_t > const &drawParameterBufferUInt32, uint32_t patchBaseVertexByteOffset)=0
 
virtual HGI_API void MemoryBarrier (HgiMemoryBarrier barrier)=0
 
- Public Member Functions inherited from HgiCmds
virtual HGI_API ~HgiCmds ()
 
HGI_API bool IsSubmitted () const
 Returns true if the HgiCmds object has been submitted to GPU. More...
 

Protected Member Functions

HGI_API HgiGraphicsCmds ()
 
- Protected Member Functions inherited from HgiCmds
HGI_API HgiCmds ()
 
virtual HGI_API bool _Submit (Hgi *hgi, HgiSubmitWaitType wait)
 
HGI_API void _SetSubmitted ()
 

Detailed Description

A graphics API independent abstraction of graphics commands. HgiGraphicsCmds is a lightweight object that cannot be re-used after it has been submitted. A new cmds object should be acquired for each frame.

Definition at line 47 of file graphicsCmds.h.

Constructor & Destructor Documentation

HGI_API HgiGraphicsCmds::~HgiGraphicsCmds ( )
override
HGI_API HgiGraphicsCmds::HgiGraphicsCmds ( )
protected

Member Function Documentation

virtual HGI_API void HgiGraphicsCmds::BindPipeline ( HgiGraphicsPipelineHandle  pipeline)
pure virtual

Bind a pipeline state object. Usually you call this right after calling CreateGraphicsCmds to set the graphics pipeline state. The resource bindings used when creating the pipeline must be compatible with the resources bound via BindResources().

Implemented in HgiGLGraphicsCmds.

virtual HGI_API void HgiGraphicsCmds::BindResources ( HgiResourceBindingsHandle  resources)
pure virtual

Bind resources such as textures and uniform buffers. Usually you call this right after BindPipeline() and the resources bound must be compatible with the bound pipeline.

Implemented in HgiGLGraphicsCmds.

virtual HGI_API void HgiGraphicsCmds::BindVertexBuffers ( uint32_t  firstBinding,
HgiBufferHandleVector const buffers,
std::vector< uint32_t > const byteOffsets 
)
pure virtual

Binds the vertex buffer(s) that describe the vertex attributes. firstBinding the first index to which buffers are bound (usually 0). byteOffsets offset to where the data of each buffer starts, in bytes. strides the size of a vertex in each of the buffers.

Implemented in HgiGLGraphicsCmds.

virtual HGI_API void HgiGraphicsCmds::Draw ( uint32_t  vertexCount,
uint32_t  baseVertex,
uint32_t  instanceCount,
uint32_t  baseInstance 
)
pure virtual

Records a draw command that renders one or more instances of primitives using the number of vertices provided. The 'primitive type' (eg. Lines, Triangles, etc) can be acquired from the bound HgiPipeline. vertexCount: The number of vertices to draw. baseVertex: The index of the first vertex to draw. instanceCount: Number of instances to draw. baseInstance: The first instance to draw.

Implemented in HgiGLGraphicsCmds.

virtual HGI_API void HgiGraphicsCmds::DrawIndexed ( HgiBufferHandle const indexBuffer,
uint32_t  indexCount,
uint32_t  indexBufferByteOffset,
uint32_t  baseVertex,
uint32_t  instanceCount,
uint32_t  baseInstance 
)
pure virtual

Records a draw command that renders one or more instances of primitives using an indexBuffer starting from the base vertex. The 'primitive type' (eg. Lines, Triangles, etc) can be acquired from the bound HgiPipeline. indexCount: The number of indices in the index buffer (num vertices). indexBufferByteOffset: Byte offset within index buffer to start reading the indices from. baseVertex: The value added to the vertex index before indexing into the vertex buffer (baseVertex). instanceCount: Number of instances to draw. baseInstance: The first instance to draw.

Implemented in HgiGLGraphicsCmds.

virtual HGI_API void HgiGraphicsCmds::DrawIndexedIndirect ( HgiBufferHandle const indexBuffer,
HgiBufferHandle const drawParameterBuffer,
uint32_t  drawBufferByteOffset,
uint32_t  drawCount,
uint32_t  stride,
std::vector< uint32_t > const drawParameterBufferUInt32,
uint32_t  patchBaseVertexByteOffset 
)
pure virtual

Records a indexed multi-draw command that reads the draw parameters from a provided drawParameterBuffer, and indices from indexBuffer. The 'primitive type' (eg. Lines, Triangles, etc) can be acquired from the bound HgiPipeline. drawParameterBuffer: an array of structures (Metal has a different encoding of indirect commands for tessellated patches): drawBufferByteOffset: Byte offset where the draw parameters begin. drawCount: The number of draws to execute. stride: byte stride between successive sets of draw parameters. drawParameterBufferUInt32: CPU addressable drawParameterBuffer which contains the baseVertex offset needed for each patch draw for Metal. patchBaseVertexByteOffset: Byte offset to the uint32_t value in drawParameterBufferUint32 which is the baseVertex value which must be applied to each HgiVertexBufferPerPatchControlPoint vertex buffer for each patch draw for Metal.

Implemented in HgiGLGraphicsCmds.

virtual HGI_API void HgiGraphicsCmds::DrawIndirect ( HgiBufferHandle const drawParameterBuffer,
uint32_t  drawBufferByteOffset,
uint32_t  drawCount,
uint32_t  stride 
)
pure virtual

Records a multi-draw command that reads the draw parameters from a provided drawParameterBuffer. The 'primitive type' (eg. Lines, Triangles, etc) can be acquired from the bound HgiPipeline. drawParameterBuffer: an array of structures: drawBufferByteOffset: Byte offset where the draw parameters begin. drawCount: The number of draws to execute. stride: byte stride between successive sets of draw parameters.

Implemented in HgiGLGraphicsCmds.

virtual HGI_API void HgiGraphicsCmds::MemoryBarrier ( HgiMemoryBarrier  barrier)
pure virtual

Inserts a barrier so that data written to memory by commands before the barrier is available to commands after the barrier.

Implemented in HgiGLGraphicsCmds.

virtual HGI_API void HgiGraphicsCmds::PopDebugGroup ( )
pure virtual

Pop the last debug marker.

Implemented in HgiGLGraphicsCmds.

virtual HGI_API void HgiGraphicsCmds::PushDebugGroup ( const char *  label)
pure virtual

Push a debug marker.

Implemented in HgiGLGraphicsCmds.

virtual HGI_API void HgiGraphicsCmds::SetConstantValues ( HgiGraphicsPipelineHandle  pipeline,
HgiShaderStage  stages,
uint32_t  bindIndex,
uint32_t  byteSize,
const void data 
)
pure virtual

Set Push / Function constants. pipeline is the pipeline that you are binding before the draw call. It contains the program used for the uniform buffer stages describes for what shader stage you are setting the push constant values for. Each stage can have its own (or none) binding and they must match what is described in the shader functions. bindIndex is the binding point index in the pipeline's shader to bind the data to. byteSize is the size of the data you are updating. data is the data you are copying into the push constants block.

Implemented in HgiGLGraphicsCmds.

virtual HGI_API void HgiGraphicsCmds::SetScissor ( GfVec4i const sc)
pure virtual

Only pixels that lie within the scissor box are modified by drawing commands.

Implemented in HgiGLGraphicsCmds.

virtual HGI_API void HgiGraphicsCmds::SetViewport ( GfVec4i const vp)
pure virtual

Set viewport [left, BOTTOM, width, height] - OpenGL coords.

Implemented in HgiGLGraphicsCmds.


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