⚠️ This documentation corresponds to the latest development branch of axmol. It might diverge from the official releases.
|
Axmol Engine 3.0.0-dff292a
|
Store encoded commands for the GPU to execute. More...
#include <RenderContextMTL.h>
Inherits RenderContext.
Public Member Functions | |
Constructor, Destructor and Initializers | |
| RenderContextImpl (DriverImpl *driver, void *surfaceContext) | |
| RenderTarget * | getScreenRenderTarget () const override |
| Set the Screen Render Target object. | |
| bool | updateSurface (void *surface, uint32_t width, uint32_t height) override |
| Updates surface when the window resized or surface recretad. | |
| void | setDepthStencilState (DepthStencilState *depthStencilState) override |
| Set depthStencil status. | |
| void | setRenderPipeline (RenderPipeline *renderPipeline) override |
| Sets the current render pipeline state object once. | |
| virtual void | setStencilReferenceValue (uint32_t value) |
| Update both front and back stencil reference value. | |
| virtual uint64_t | getCompletedFenceValue () const |
| Returns the last completed fence value for GPU synchronization. | |
| Public Member Functions inherited from Object | |
| 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 (RenderTarget *renderTarget, const RenderPassDesc &descriptor) override |
| Create a MTLRenderCommandEncoder object for graphics rendering to an attachment in a RenderPassDesc. | |
| void | updateDepthStencilState (const DepthStencilDesc &descriptor) override |
| Update depthStencil status, improvment: for metal backend cache it. | |
| void | updatePipelineState (const RenderTarget *rt, const PipelineDesc &desc, PrimitiveGroup primitiveGroup) 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 | 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, bool preserveAxisHint, std::function< void(const PixelBufferDesc &)> callback) override |
| Read pixels from the specified render target. | |
Additional Inherited Members | |
| Public Attributes inherited from Object | |
| 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
| RenderContextImpl | ( | DriverImpl * | driver, |
| void * | surfaceContext ) |
| driver | The device for which MTLCommandQueue object was created. |
|
inlineoverridevirtual |
|
overridevirtual |
Updates surface when the window resized or surface recretad.
| surface | |
| width | |
| height |
Reimplemented from RenderContext.
|
overridevirtual |
Set depthStencil status.
| depthStencilState | Specifies the depth and stencil status |
Implements RenderContext.
|
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 RenderContext.
|
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 RenderContext.
|
overridevirtual |
Create a MTLRenderCommandEncoder object for graphics rendering to an attachment in a RenderPassDesc.
MTLRenderCommandEncoder is cached if current RenderPassDesc is identical to previous one.
| descriptor | Specifies a group of render targets that hold the results of a render pass. |
Implements RenderContext.
|
overridevirtual |
Update depthStencil status, improvment: for metal backend cache it.
| depthStencilState | Specifies the depth and stencil status |
Implements RenderContext.
|
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. |
| desc | Specifies the pipeline descriptor. |
Implements RenderContext.
|
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 RenderContext.
|
overridevirtual |
Fixed-function state.
| mode | Controls if primitives are culled when front facing, back facing, or not culled at all. |
Implements RenderContext.
|
overridevirtual |
Fixed-function state.
| winding | The winding order of front-facing primitives. |
Implements RenderContext.
|
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 RenderContext.
|
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 RenderContext.
|
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 |
TODO: Implement a wireframe mode for METAL devices. Refer to: https://forums.ogre3d.org/viewtopic.php?t=95089
Implements RenderContext.
|
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. |
TODO: Implement a wireframe mode for METAL devices. Refer to: https://forums.ogre3d.org/viewtopic.php?t=95089
Implements RenderContext.
|
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. |
Implements RenderContext.
|
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 RenderContext.
|
overridevirtual |
Read pixels from the specified render target.
| rt | The render target to read pixels from. |
| preserveAxisHint | A hint indicating whether to preserve the original axis orientation (e.g., avoid vertical flip). Note: support may vary across drivers/backends. |
| callback | A callback invoked with the resulting pixel buffer description. |
Implements RenderContext.