Loading...
Searching...
No Matches
oscr::CpuOnlyBufferNode Concept Reference
#include <Metadatas.hpp>
Concept definition
template<typename T>
concept oscr::CpuOnlyBufferNode = avnd::cpu_buffer_output_introspection<T>::size > 0
&& avnd::gpu_buffer_output_introspection<T>::size == 0
&& avnd::buffer_input_introspection<T>::size == 0
&& avnd::texture_input_introspection<T>::size == 0
&& avnd::texture_output_introspection<T>::size == 0
&& avnd::geometry_input_introspection<T>::size == 0
&& avnd::geometry_output_introspection<T>::size == 0
&& scene_input_introspection<T>::size == 0
&& scene_output_introspection<T>::size == 0
&& avnd::gpu_render_target_output_port_output_introspection<T>::size == 0
Definition Metadatas.hpp:80
Definition Metadatas.hpp:44
Definition Metadatas.hpp:36
Definition Metadatas.hpp:61
Detailed Description
An object that feeds the gfx graph without ever touching the RHI: its only gfx ports are CPU buffer outputs, which the renderers upload for it.
Everything a renderer owns for it (the QRhiBuffer, its resource updates) is renderer side, and nothing in the object is - while the object itself has a CPU identity that must not be duplicated (e.g. one TCP listener per object). One instance per RenderList would mean one per output window, and rebuilding a renderer would restart it. It gets a single instance shared by every renderer of the node instead (GfxNode::rendererState).
This is only about the object's instances: such a node still lives in the gfx graph (is_gpu), because a buffer output has nowhere else to go.