⚠️ This documentation corresponds to the latest development branch of axmol. It might diverge from the official releases.

Axmol Engine 3.0.0-dff292a
Loading...
Searching...
No Matches
RenderContextImpl Class Reference

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

Detailed Description

Store encoded commands for the GPU to execute.

A command buffer stores encoded commands until the buffer is committed for execution by the GPU

Constructor & Destructor Documentation

◆ RenderContextImpl()

RenderContextImpl ( DriverImpl * driver,
void * surfaceContext )
Parameters
driverThe device for which MTLCommandQueue object was created.

Member Function Documentation

◆ getScreenRenderTarget()

RenderTarget * getScreenRenderTarget ( ) const
inlineoverridevirtual

Set the Screen Render Target object.

Parameters
rt

Implements RenderContext.

◆ updateSurface()

bool updateSurface ( void * surface,
uint32_t width,
uint32_t height )
overridevirtual

Updates surface when the window resized or surface recretad.

Parameters
surface
width
height
Returns
true
false

Reimplemented from RenderContext.

◆ setDepthStencilState()

void setDepthStencilState ( DepthStencilState * depthStencilState)
overridevirtual

Set depthStencil status.

Parameters
depthStencilStateSpecifies the depth and stencil status

Implements RenderContext.

◆ setRenderPipeline()

void setRenderPipeline ( RenderPipeline * renderPipeline)
overridevirtual

Sets the current render pipeline state object once.

Parameters
renderPipelineAn object that contains the graphics functions and configuration state used in a render pass.

Implements RenderContext.

◆ beginFrame()

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

◆ beginRenderPass()

void beginRenderPass ( RenderTarget * renderTarget,
const RenderPassDesc & descriptor )
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.

Parameters
descriptorSpecifies a group of render targets that hold the results of a render pass.

Implements RenderContext.

◆ updateDepthStencilState()

void updateDepthStencilState ( const DepthStencilDesc & descriptor)
overridevirtual

Update depthStencil status, improvment: for metal backend cache it.

Parameters
depthStencilStateSpecifies the depth and stencil status

Implements RenderContext.

◆ updatePipelineState()

void updatePipelineState ( const RenderTarget * rt,
const PipelineDesc & desc,
PrimitiveGroup primitiveGroup )
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.

Parameters
rtSpecifies the render target.
descSpecifies the pipeline descriptor.

Implements RenderContext.

◆ setViewport()

void setViewport ( int x,
int y,
unsigned int w,
unsigned int h )
overridevirtual

Fixed-function state.

Parameters
xThe x coordinate of the upper-left corner of the viewport.
yThe y coordinate of the upper-left corner of the viewport.
wThe width of the viewport, in pixels.
hThe height of the viewport, in pixels.

Implements RenderContext.

◆ setCullMode()

void setCullMode ( CullMode mode)
overridevirtual

Fixed-function state.

Parameters
modeControls if primitives are culled when front facing, back facing, or not culled at all.

Implements RenderContext.

◆ setWinding()

void setWinding ( Winding winding)
overridevirtual

Fixed-function state.

Parameters
windingThe winding order of front-facing primitives.

Implements RenderContext.

◆ setVertexBuffer()

void setVertexBuffer ( Buffer * buffer)
overridevirtual

Set a global buffer for all vertex shaders at the given bind point index 0.

Parameters
bufferThe buffer to set in the buffer argument table.

Implements RenderContext.

◆ setIndexBuffer()

void setIndexBuffer ( Buffer * buffer)
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.

◆ drawArrays()

void drawArrays ( PrimitiveType primitiveType,
std::size_t start,
std::size_t count,
bool wireframe )
overridevirtual

Draw primitives without an index list.

Parameters
primitiveTypeThe type of primitives that elements are assembled into.
startFor each instance, the first index to draw
countFor each instance, the number of indexes to draw
See also
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 RenderContext.

◆ drawElements()

void drawElements ( PrimitiveType primitiveType,
IndexFormat indexType,
std::size_t count,
std::size_t offset,
bool wireframe )
overridevirtual

Draw primitives with an index list.

Parameters
primitiveTypeThe type of primitives that elements are assembled into.
indexTypeThe type if indexes, either 16 bit integer or 32 bit integer.
countThe number of indexes to read from the index buffer for each instance.
offsetByte offset within indexBuffer to start reading indexes from.
See also
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 RenderContext.

◆ drawElementsInstanced()

void drawElementsInstanced ( PrimitiveType primitiveType,
IndexFormat indexType,
std::size_t count,
std::size_t offset,
int instanceCount,
bool wireframe = false )
overridevirtual

Draw primitives with an index list instanced.

Parameters
primitiveTypeThe type of primitives that elements are assembled into.
indexTypeThe type if indexes, either 16 bit integer or 32 bit integer.
countThe number of indexes to read from the index buffer for each instance.
offsetByte offset within indexBuffer to start reading indexes from.
instanceCount of instances to draw at once.
See also
setIndexBuffer(Buffer* buffer)
drawArrays(PrimitiveType primitiveType, unsigned int start, unsigned int count)

Implements RenderContext.

◆ setScissorRect()

void setScissorRect ( bool isEnabled,
float x,
float y,
float width,
float height )
overridevirtual

Fixed-function state.

Parameters
x,ySpecifies the lower left corner of the scissor box
wdithSpecifies the width of the scissor box
heightSpecifies the height of the scissor box

Implements RenderContext.

◆ readPixels()

void readPixels ( RenderTarget * rt,
bool preserveAxisHint,
std::function< void(const PixelBufferDesc &)> callback )
overridevirtual

Read pixels from the specified render target.

Parameters
rtThe render target to read pixels from.
preserveAxisHintA hint indicating whether to preserve the original axis orientation (e.g., avoid vertical flip). Note: support may vary across drivers/backends.
callbackA callback invoked with the resulting pixel buffer description.

Implements RenderContext.


The documentation for this class was generated from the following file:
  • RenderContextMTL.h