All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
HgiGLGraphicsCmds Class Referencefinal

OpenGL implementation of HgiGraphicsCmds. More...

+ Inheritance diagram for HgiGLGraphicsCmds:

Public Member Functions

HGIGL_API void InsertFunctionOp (std::function< void(void)> const &fn)
 XXX This function is exposed temporarily for Hgi transition. More...
 
HGIGL_API void PushDebugGroup (const char *label) override
 Push a debug marker. More...
 
HGIGL_API void PopDebugGroup () override
 Pop the last debug marker. More...
 
HGIGL_API void SetViewport (GfVec4i const &vp) override
 Set viewport [left, BOTTOM, width, height] - OpenGL coords. More...
 
HGIGL_API void SetScissor (GfVec4i const &sc) override
 Only pixels that lie within the scissor box are modified by drawing commands. More...
 
HGIGL_API void BindPipeline (HgiGraphicsPipelineHandle pipeline) override
 Bind a pipeline state object. More...
 
HGIGL_API void BindResources (HgiResourceBindingsHandle resources) override
 Bind resources such as textures and uniform buffers. More...
 
HGIGL_API void SetConstantValues (HgiGraphicsPipelineHandle pipeline, HgiShaderStage stages, uint32_t bindIndex, uint32_t byteSize, const void *data) override
 Set Push / Function constants. More...
 
HGIGL_API void BindVertexBuffers (uint32_t firstBinding, HgiBufferHandleVector const &buffers, std::vector< uint32_t > const &byteOffsets) override
 Binds the vertex buffer(s) that describe the vertex attributes. More...
 
HGIGL_API void Draw (uint32_t vertexCount, uint32_t firstVertex, uint32_t instanceCount) override
 Records a draw command that renders one or more instances of primitives using the number of vertices provided. More...
 
HGIGL_API void DrawIndirect (HgiBufferHandle const &drawParameterBuffer, uint32_t drawBufferOffset, uint32_t drawCount, uint32_t stride) override
 Records a multi-draw command that reads the draw parameters from a provided drawParameterBuffer. More...
 
HGIGL_API void DrawIndexed (HgiBufferHandle const &indexBuffer, uint32_t indexCount, uint32_t indexBufferByteOffset, uint32_t vertexOffset, uint32_t instanceCount) override
 Records a draw command that renders one or more instances of primitives using an indexBuffer starting from the base vertex. More...
 
HGIGL_API void DrawIndexedIndirect (HgiBufferHandle const &indexBuffer, HgiBufferHandle const &drawParameterBuffer, uint32_t drawBufferOffset, uint32_t drawCount, uint32_t stride) override
 Records a indexed multi-draw command that reads the draw parameters from a provided drawParameterBuffer, and indices from indexBuffer. More...
 
HGIGL_API void MemoryBarrier (HgiMemoryBarrier barrier) override
 Inserts a barrier so that data written to memory by commands before the barrier is available to commands after the barrier. More...
 
- Public Member Functions inherited from HgiCmds
HGI_API bool IsSubmitted () const
 Returns true if the HgiCmds object has been submitted to GPU. More...
 

Protected Member Functions

HGIGL_API HgiGLGraphicsCmds (HgiGLDevice *device, HgiGraphicsCmdsDesc const &desc)
 
HGIGL_API bool _Submit (Hgi *hgi, HgiSubmitWaitType wait) override
 
- Protected Member Functions inherited from HgiCmds
HGI_API void _SetSubmitted ()
 

Friends

class HgiGL
 

Detailed Description

OpenGL implementation of HgiGraphicsCmds.

Definition at line 43 of file graphicsCmds.h.

Member Function Documentation

HGIGL_API void BindPipeline ( HgiGraphicsPipelineHandle  pipeline)
overridevirtual

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().

Implements HgiGraphicsCmds.

HGIGL_API void BindResources ( HgiResourceBindingsHandle  resources)
overridevirtual

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.

Implements HgiGraphicsCmds.

HGIGL_API void BindVertexBuffers ( uint32_t  firstBinding,
HgiBufferHandleVector const &  buffers,
std::vector< uint32_t > const &  byteOffsets 
)
overridevirtual

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.

Implements HgiGraphicsCmds.

HGIGL_API void Draw ( uint32_t  vertexCount,
uint32_t  firstVertex,
uint32_t  instanceCount 
)
overridevirtual

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. firstVertex: The index of the first vertex to draw. instanceCount: Number of instances to draw.

Implements HgiGraphicsCmds.

HGIGL_API void DrawIndexed ( HgiBufferHandle const &  indexBuffer,
uint32_t  indexCount,
uint32_t  indexBufferByteOffset,
uint32_t  vertexOffset,
uint32_t  instanceCount 
)
overridevirtual

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. vertexOffset: The value added to the vertex index before indexing into the vertex buffer (baseVertex). instanceCount: Number of instances to draw.

Implements HgiGraphicsCmds.

HGIGL_API void DrawIndexedIndirect ( HgiBufferHandle const &  indexBuffer,
HgiBufferHandle const &  drawParameterBuffer,
uint32_t  drawBufferOffset,
uint32_t  drawCount,
uint32_t  stride 
)
overridevirtual

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: drawBufferOffset: Byte offset where the draw parameters begin. drawCount: The number of draws to execute. stride: byte stride between successive sets of draw parameters.

Implements HgiGraphicsCmds.

HGIGL_API void DrawIndirect ( HgiBufferHandle const &  drawParameterBuffer,
uint32_t  drawBufferOffset,
uint32_t  drawCount,
uint32_t  stride 
)
overridevirtual

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: drawBufferOffset: Byte offset where the draw parameters begin. drawCount: The number of draws to execute. stride: byte stride between successive sets of draw parameters.

Implements HgiGraphicsCmds.

HGIGL_API void InsertFunctionOp ( std::function< void(void)> const &  fn)

XXX This function is exposed temporarily for Hgi transition.

It allows code that is not yet converted to Hgi (e.g. HdSt) to insert its opengl calls into the ops-stack of HgiGL to ensure that all commands execute in the correct order. Once HdSt has transition fully to Hgi we should remove this function.

HGIGL_API void MemoryBarrier ( HgiMemoryBarrier  barrier)
overridevirtual

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

Implements HgiGraphicsCmds.

HGIGL_API void PopDebugGroup ( )
overridevirtual

Pop the last debug marker.

Implements HgiGraphicsCmds.

HGIGL_API void PushDebugGroup ( const char *  label)
overridevirtual

Push a debug marker.

Implements HgiGraphicsCmds.

HGIGL_API void SetConstantValues ( HgiGraphicsPipelineHandle  pipeline,
HgiShaderStage  stages,
uint32_t  bindIndex,
uint32_t  byteSize,
const void *  data 
)
overridevirtual

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.

Implements HgiGraphicsCmds.

HGIGL_API void SetScissor ( GfVec4i const &  sc)
overridevirtual

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

Implements HgiGraphicsCmds.

HGIGL_API void SetViewport ( GfVec4i const &  vp)
overridevirtual

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

Implements HgiGraphicsCmds.


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