Host container for render states for 3D rendering. More...
#include <kanzi/core.ui/graphics3d/render_entry_3d.hpp>
Public Types | |
| using | BindingRuntimeContainer = vector< AbstractBindingRuntimeSharedPtr > |
| Binding runtime container. More... | |
| using | ReplacementBindingContainer = optional< vector< AbstractBindingSharedPtr > > |
| Replacement binding container. More... | |
Public Member Functions | |
| void | applyFixedUniforms (Renderer3D &renderer) |
| Apply fixed uniforms before rendering. More... | |
| bool | applyRenderState (Renderer3D &renderer) |
| Apply the internal render state for rendering. More... | |
| void | bindGeometry (Renderer3D &renderer) |
| Bind the contained geometry for rendering. More... | |
| bool | bindRenderState (Renderer3D &renderer) |
| Bind the contained render state for rendering. More... | |
| size_t | getIndex () const |
| Gets the associated index within the node. More... | |
| MaterialSharedPtr | getMaterial () const |
| Gets the associated material. More... | |
| Mesh * | getMesh () const |
| Gets the associated mesh. More... | |
| Node3D * | getNode () const |
| Gets the associated node. More... | |
| RenderPass & | getRenderPass () |
| Gets the associated node. More... | |
| GlRenderState & | getRenderState () |
| Gets the internal render state. More... | |
| bool | matches (const Node3D &node, size_t clusterIndex, MaterialSharedPtr material, Mesh *mesh) |
| Tests if the render entry matches given settings. More... | |
| void | updateBindingsWithFixedUniformInputs () |
| Execute all bindings needing manual execution. More... | |
| ~RenderEntry3D () | |
| Destructor. More... | |
Static Public Member Functions | |
| static unique_ptr< RenderEntry3D > | create (RenderPass &renderPass, Node3D &node, size_t index, MaterialSharedPtr material, Mesh *mesh) |
| Creates a new render entry. More... | |
Protected Member Functions | |
| void | initializeRenderState (MaterialSharedPtr sharedMaterial) |
| Initialize the internal state. More... | |
| RenderEntry3D (RenderPass &renderPass, Node3D &node, size_t index, MaterialSharedPtr material, Mesh *mesh) | |
| Constructor. More... | |
Protected Attributes | |
| BindingRuntimeContainer | m_bindingRuntimes |
| Other binding runtimes. More... | |
| BindingRuntimeContainer::const_iterator | m_endFixedRuntimes |
| Iterator to the binding runtimes, to the last place there are fixed operations. More... | |
| size_t | m_index |
| Source element (i.e. More... | |
| Mesh * | m_mesh |
| Mesh being rendered. More... | |
| Node3D * | m_node |
| Pointer to source node. More... | |
| RenderPass & | m_renderPass |
| Base render pass. More... | |
| GlRenderState | m_renderState |
| Contained render state. More... | |
Host container for render states for 3D rendering.
Used by render passes when drawing 3D objects. Contains the render state, references to associated node and render pass, and binding runtimes.
Binding runtime container.
| using kanzi::RenderEntry3D::ReplacementBindingContainer = optional<vector<AbstractBindingSharedPtr> > |
Replacement binding container.
| kanzi::RenderEntry3D::~RenderEntry3D | ( | ) |
Destructor.
|
protected |
|
static |
| void kanzi::RenderEntry3D::updateBindingsWithFixedUniformInputs | ( | ) |
Execute all bindings needing manual execution.
Used internally by the binding functions.
| bool kanzi::RenderEntry3D::applyRenderState | ( | Renderer3D & | renderer | ) |
Apply the internal render state for rendering.
Used internally by the binding functions.
| renderer | Renderer to use. |
| void kanzi::RenderEntry3D::applyFixedUniforms | ( | Renderer3D & | renderer | ) |
Apply fixed uniforms before rendering.
Used internally by the binding functions.
| renderer | Renderer to use. |
| bool kanzi::RenderEntry3D::bindRenderState | ( | Renderer3D & | renderer | ) |
Bind the contained render state for rendering.
Applies any bindings needing manual execution, then binds the render state, then applies fixed uniforms. This does not bind the contained geometry for rendering.
| renderer | Renderer to use. |
| void kanzi::RenderEntry3D::bindGeometry | ( | Renderer3D & | renderer | ) |
Bind the contained geometry for rendering.
The contained render state should be bound before calling this function.
| renderer | Renderer to use. |
| bool kanzi::RenderEntry3D::matches | ( | const Node3D & | node, |
| size_t | clusterIndex, | ||
| MaterialSharedPtr | material, | ||
| Mesh * | mesh | ||
| ) |
|
inline |
Gets the associated node.
Returned render pass cannot be invalid, since the association is owned by it.
|
inline |
Gets the associated node.
|
inline |
Gets the associated index within the node.
|
inline |
Gets the associated material.
|
inline |
Gets the associated mesh.
|
inline |
Gets the internal render state.
|
protected |
Initialize the internal state.
Attach render state to material. Create binding runtimes for render value bindings and attach them.
| material | Material to attach to. |
|
protected |
Base render pass.
The render pass owns the association, so this reference can never be invalid.
|
protected |
Pointer to source node.
If this pointer is marked as nullptr, the entry is invalid.
|
protected |
Source element (i.e.
cluster) index for the node. Each renderable element or cluster has its own render state association.
|
protected |
Mesh being rendered.
This member will be replaced with vertex- and index buffers and matrix palette in the future.
|
protected |
Contained render state.
|
protected |
Other binding runtimes.
|
protected |
Iterator to the binding runtimes, to the last place there are fixed operations.