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.