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 Types inherited from kanzi::VariableBindingHost | |
using | BindingRuntimeConstIterator = BindingRuntimeContainer::const_iterator |
Const iterator for binding runtimes. More... | |
using | BindingRuntimeContainer = vector< AbstractBindingRuntimeSharedPtr > |
Binding runtime container. More... | |
using | BindingRuntimeIterator = BindingRuntimeContainer::iterator |
Iterator for binding runtimes. More... | |
using | BindingTargetMapping = flat_map< AbstractPropertyType, VariableBindingTargetRuntime * > |
Binding target mapping. 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... | |
Public Member Functions inherited from kanzi::VariableBindingHost | |
void | addAvailableVariableSource (AbstractBindingVariableSource &variableSource) |
Add a variable source to the list of available sources. More... | |
void | addBindingRuntime (AbstractBindingRuntimeSharedPtr bindingRuntime) |
Adds a binding runtime to the list of binding runtimes. More... | |
void | addVariableTarget (VariableBindingTargetRuntime &targetRuntime) |
Adds variable binding target runtime into the variable host. More... | |
BindingRuntimeIterator | beginBindingRuntimes () |
Gets an iterator to the beginning of binding runtimes. More... | |
BindingRuntimeConstIterator | beginBindingRuntimes () const |
Gets an iterator to the beginning of binding runtimes. More... | |
BindingRuntimeIterator | endBindingRuntimes () |
Gets an iterator to the end of binding runtimes. More... | |
BindingRuntimeConstIterator | endBindingRuntimes () const |
Gets an iterator to the end of binding runtimes. More... | |
BindingRuntimeIterator | endFixedRuntimes () |
Gets an iterator to the end of fixed binding runtimes. More... | |
BindingRuntimeConstIterator | endFixedRuntimes () const |
Gets an iterator to the end of fixed binding runtimes. More... | |
VariableBindingTargetRuntime * | getVariableBindingTargetRuntime (AbstractPropertyType propertyType) |
Gets an existing variable binding target runtime based on a property type. More... | |
void | removeAvailableVariableSource (AbstractBindingVariableSource &variableSource) |
Remove a variable source from the list of available sources. More... | |
void | removeBindingRuntime (AbstractBindingRuntime &bindingRuntime) |
Removes a binding runtime. More... | |
void | removeVariableTarget (VariableBindingTargetRuntime &targetRuntime) |
Removes a variable binding target from the variable host. More... | |
~VariableBindingHost () | |
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::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.
|
explicitprotected |
|
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.
sharedMaterial | 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 |
Iterator to the binding runtimes, to the last place there are fixed operations.