MayaFlux 1.0.0
Digital-First Multimedia Processing Framework
Loading...
Searching...
No Matches

◆ ensure_rendering()

bool MayaFlux::Kriya::detail::ensure_rendering ( const std::shared_ptr< Buffers::VKBuffer > &  buffer,
const Portal::Graphics::RenderConfig &  config 
)

Make a buffer draw to the window in a render config, unless it already does.

A buffer that already has a render processor is left as it is; a different target window than the one requested is reported. Otherwise the config is applied through the buffer's own setup_rendering, chosen by buffer type: the texture, geometry, mesh, network, grid and Forma families are covered. Any other buffer is reported and left untouched.

Returns
True if the buffer renders after the call.

Definition at line 130 of file PipelineGraphicsData.cpp.

131{
132 if (!buffer) {
133 return false;
134 }
135
136 if (buffer->get_render_processor()) {
137 if (buffer->get_render_config().target_window != config.target_window) {
138 MF_WARN(Journal::Component::Kriya, Journal::Context::Configuration,
139 "Buffer already renders to another window; keeping its render setup");
140 }
141 return true;
142 }
143
144 const bool configured = apply_rendering<Buffers::TextureBuffer>(buffer, config)
145 || apply_rendering<Buffers::NodeTextureBuffer>(buffer, config)
146 || apply_rendering<Buffers::RaymarchBuffer>(buffer, config)
147 || apply_rendering<Buffers::MeshBuffer>(buffer, config)
148 || apply_rendering<Buffers::GeometryBuffer>(buffer, config)
149 || apply_rendering<Buffers::CompositeGeometryBuffer>(buffer, config)
150 || apply_rendering<Buffers::ComputeMeshBuffer>(buffer, config)
151 || apply_rendering<Buffers::MeshNetworkBuffer>(buffer, config)
152 || apply_rendering<Buffers::NetworkGeometryBuffer>(buffer, config)
153 || apply_rendering<Buffers::InstanceNetworkBuffer>(buffer, config)
154 || apply_rendering<Buffers::VolumeGridBuffer>(buffer, config)
155 || apply_rendering<Buffers::RelaxationGridBuffer>(buffer, config)
156 || apply_rendering<Buffers::FormaBuffer>(buffer, config);
157
158 if (!configured) {
159 MF_ERROR(Journal::Component::Kriya, Journal::Context::Configuration,
160 "ensure_rendering has no render setup for this buffer type; it was not set up to render");
161 }
162 return configured;
163}
#define MF_ERROR(comp, ctx,...)
#define MF_WARN(comp, ctx,...)
std::shared_ptr< NetworkGeometryBuffer > buffer
std::shared_ptr< Core::Window > target_window

References buffer, MayaFlux::Journal::Configuration, MayaFlux::Journal::Kriya, MF_ERROR, MF_WARN, and MayaFlux::Portal::Graphics::RenderConfig::target_window.

Referenced by MayaFlux::Kriya::BufferOperation::capture_camera(), MayaFlux::Kriya::BufferOperation::capture_camera_from(), MayaFlux::Kriya::BufferOperation::capture_file(), MayaFlux::Kriya::BufferOperation::capture_file_from(), MayaFlux::Kriya::BufferOperation::capture_from(), MayaFlux::Kriya::BufferOperation::capture_to_stream(), MayaFlux::Kriya::BufferOperation::file_to_stream(), and MayaFlux::Kriya::BufferPipeline::prepare_displays().

+ Here is the caller graph for this function: