Axmol Engine 2.4.0-258ceca
|
Store encoded commands for the GPU to execute. More...
#include <CommandBufferMTL.h>
Inherits CommandBuffer.
Public Member Functions | |
Constructor, Destructor and Initializers | |
CommandBufferMTL (DriverMTL *driver) | |
void | setDepthStencilState (DepthStencilState *depthStencilState) override |
Set depthStencil status. | |
void | setRenderPipeline (RenderPipeline *renderPipeline) override |
Sets the current render pipeline state object once. | |
void | setStencilReferenceValue (unsigned int value) |
Update both front and back stencil reference value. | |
void | setStencilReferenceValue (unsigned int frontRef, unsigned int backRef) |
Update stencil reference value. | |
![]() | |
void | retain () |
Retains the ownership. | |
void | release () |
Releases the ownership immediately. | |
Object * | autorelease () |
Releases the ownership sometime soon automatically. | |
unsigned int | getReferenceCount () const |
Returns the Object's current reference count. | |
virtual | ~Object () |
Destructor. | |
Setters & Getters | |
bool | beginFrame () override |
Indicate the begining of a frame Wait until the inflight command buffer has completed its work. | |
void | beginRenderPass (const RenderTarget *renderTarget, const RenderPassDescriptor &descriptor) override |
Create a MTLRenderCommandEncoder object for graphics rendering to an attachment in a RenderPassDescriptor. | |
void | updateDepthStencilState (const DepthStencilDescriptor &descriptor) override |
Update depthStencil status, improvment: for metal backend cache it. | |
void | updatePipelineState (const RenderTarget *rt, const PipelineDescriptor &descriptor) override |
Update render pipeline status Building a programmable pipeline involves an expensive evaluation of GPU state. | |
void | setViewport (int x, int y, unsigned int w, unsigned int h) override |
Fixed-function state. | |
void | setCullMode (CullMode mode) override |
Fixed-function state. | |
void | setWinding (Winding winding) override |
Fixed-function state. | |
void | setVertexBuffer (Buffer *buffer) override |
Set a global buffer for all vertex shaders at the given bind point index 0. | |
void | setProgramState (ProgramState *programState) override |
Set the uniform data at a given vertex and fragment buffer binding point 1 Set a global texture for all vertex and fragment shaders at the given bind location. | |
void | setIndexBuffer (Buffer *buffer) override |
Set indexes when drawing primitives with index list @ buffer A buffer object that the device will read indexes from. | |
void | setInstanceBuffer (Buffer *buffer) override |
Set matrix tranform when drawing instances of the same model @ buffer A buffer object that the device will read matrices from. | |
void | drawArrays (PrimitiveType primitiveType, std::size_t start, std::size_t count, bool wireframe) override |
Draw primitives without an index list. | |
void | drawElements (PrimitiveType primitiveType, IndexFormat indexType, std::size_t count, std::size_t offset, bool wireframe) override |
Draw primitives with an index list. | |
void | drawElementsInstanced (PrimitiveType primitiveType, IndexFormat indexType, std::size_t count, std::size_t offset, int instanceCount, bool wireframe=false) override |
Draw primitives with an index list instanced. | |
void | endRenderPass () override |
Do some resources release. | |
void | endFrame () override |
Present a drawable and commit a command buffer so it can be executed as soon as possible. | |
void | setScissorRect (bool isEnabled, float x, float y, float width, float height) override |
Fixed-function state. | |
void | readPixels (RenderTarget *rt, std::function< void(const PixelBufferDescriptor &)> callback) override |
Read pixels from RenderTarget. | |
Additional Inherited Members | |
![]() | |
unsigned int | _ID |
object id, ScriptSupport need public _ID | |
int | _luaID |
Lua reference id. | |
Store encoded commands for the GPU to execute.
A command buffer stores encoded commands until the buffer is committed for execution by the GPU
CommandBufferMTL | ( | DriverMTL * | driver | ) |
driver | The device for which MTLCommandQueue object was created. |
|
overridevirtual |
Set depthStencil status.
depthStencilState | Specifies the depth and stencil status |
Implements CommandBuffer.
|
overridevirtual |
Sets the current render pipeline state object once.
renderPipeline | An object that contains the graphics functions and configuration state used in a render pass. |
Implements CommandBuffer.
|
overridevirtual |
Indicate the begining of a frame Wait until the inflight command buffer has completed its work.
Then create MTLCommandBuffer and enqueue it to MTLCommandQueue. Then start schedule available MTLBuffer
Implements CommandBuffer.
|
overridevirtual |
Create a MTLRenderCommandEncoder object for graphics rendering to an attachment in a RenderPassDescriptor.
MTLRenderCommandEncoder is cached if current RenderPassDescriptor is identical to previous one.
descriptor | Specifies a group of render targets that hold the results of a render pass. |
Implements CommandBuffer.
|
overridevirtual |
Update depthStencil status, improvment: for metal backend cache it.
depthStencilState | Specifies the depth and stencil status |
Implements CommandBuffer.
|
overridevirtual |
Update render pipeline status Building a programmable pipeline involves an expensive evaluation of GPU state.
So a new render pipeline object will be created only if it hasn't been created before.
rt | Specifies the render target. |
pipelineDescriptor | Specifies the pipeline descriptor. |
Implements CommandBuffer.
|
overridevirtual |
Fixed-function state.
x | The x coordinate of the upper-left corner of the viewport. |
y | The y coordinate of the upper-left corner of the viewport. |
w | The width of the viewport, in pixels. |
h | The height of the viewport, in pixels. |
Implements CommandBuffer.
|
overridevirtual |
Fixed-function state.
mode | Controls if primitives are culled when front facing, back facing, or not culled at all. |
Implements CommandBuffer.
|
overridevirtual |
Fixed-function state.
winding | The winding order of front-facing primitives. |
Implements CommandBuffer.
|
overridevirtual |
Set a global buffer for all vertex shaders at the given bind point index 0.
buffer | The buffer to set in the buffer argument table. |
Implements CommandBuffer.
|
overridevirtual |
Set the uniform data at a given vertex and fragment buffer binding point 1 Set a global texture for all vertex and fragment shaders at the given bind location.
programState | A programState object that hold the uniform and texture data. |
Implements CommandBuffer.
|
overridevirtual |
Set indexes when drawing primitives with index list @ buffer A buffer object that the device will read indexes from.
@ see drawElements(PrimitiveType primitiveType, IndexFormat indexType, unsigned int count, unsigned int offset)
Implements CommandBuffer.
|
overridevirtual |
Draw primitives without an index list.
primitiveType | The type of primitives that elements are assembled into. |
start | For each instance, the first index to draw |
count | For each instance, the number of indexes to draw |
drawElements(PrimitiveType primitiveType, IndexFormat indexType, unsigned int count, unsigned int offset)
TODO: Implement a wireframe mode for METAL devices. Refer to: https://forums.ogre3d.org/viewtopic.php?t=95089
Implements CommandBuffer.
|
overridevirtual |
Draw primitives with an index list.
primitiveType | The type of primitives that elements are assembled into. |
indexType | The type if indexes, either 16 bit integer or 32 bit integer. |
count | The number of indexes to read from the index buffer for each instance. |
offset | Byte offset within indexBuffer to start reading indexes from. |
setIndexBuffer(Buffer* buffer)
drawArrays(PrimitiveType primitiveType, unsigned int start, unsigned int count)
TODO: Implement a wireframe mode for METAL devices. Refer to: https://forums.ogre3d.org/viewtopic.php?t=95089
Implements CommandBuffer.
|
overridevirtual |
Draw primitives with an index list instanced.
primitiveType | The type of primitives that elements are assembled into. |
indexType | The type if indexes, either 16 bit integer or 32 bit integer. |
count | The number of indexes to read from the index buffer for each instance. |
offset | Byte offset within indexBuffer to start reading indexes from. |
instance | Count of instances to draw at once. |
setIndexBuffer(Buffer* buffer)
drawArrays(PrimitiveType primitiveType, unsigned int start, unsigned int count)
Implements CommandBuffer.
|
overridevirtual |
Fixed-function state.
x,y | Specifies the lower left corner of the scissor box |
wdith | Specifies the width of the scissor box |
height | Specifies the height of the scissor box |
Implements CommandBuffer.
|
overridevirtual |
Read pixels from RenderTarget.
callback | A callback to deal with pixel data read. |
Implements CommandBuffer.