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

◆ prepare_geometry()

void MayaFlux::Buffers::RenderProcessor::prepare_geometry ( const std::shared_ptr< VKBuffer > &  buffer,
BufferState &  state 
)
private

Prepare and retain the source and draw range for one attached buffer.

Definition at line 703 of file RenderProcessor.cpp.

704{
705 state.geometry_prepared = false;
706 state.first_vertex = m_first_vertex;
707 state.vertex_count = 0;
708 state.index_count = 0;
709
710 if (m_triangulate) {
711 if (!state.mill)
712 state.mill = std::make_unique<Portal::Graphics::PrimitiveMill>(m_mill_spec);
713 state.vertex_count = mill_runs(buffer, *state.mill);
714 m_last_milled_vertex_count = state.vertex_count;
715 state.first_vertex = 0;
716 if (state.vertex_count > 0) {
717 state.draw_source = state.mill->output();
718 } else if (state.draw_source != buffer) {
719 state.draw_source = buffer;
720 }
721 } else {
722 if (state.draw_source != buffer)
723 state.draw_source = buffer;
724 if (m_vertex_count > 0) {
725 state.vertex_count = m_vertex_count;
726 } else {
727 const auto layout = buffer->get_vertex_layout();
728 state.vertex_count = layout ? layout->vertex_count : 0U;
729 }
730 }
731
732 if (state.vertex_count > 0 && state.draw_source->has_index_buffer())
733 state.index_count = static_cast<uint32_t>(state.draw_source->get_index_buffer_size() / sizeof(uint32_t));
734 state.geometry_prepared = true;
735}
std::shared_ptr< NetworkGeometryBuffer > buffer
Portal::Graphics::MillSpec m_mill_spec
uint32_t mill_runs(const std::shared_ptr< VKBuffer > &buffer, Portal::Graphics::PrimitiveMill &mill)
Mill m_runs into this attachment's output.

References buffer, MayaFlux::Buffers::RenderProcessor::BufferState::draw_source, MayaFlux::Buffers::RenderProcessor::BufferState::first_vertex, MayaFlux::Buffers::RenderProcessor::BufferState::geometry_prepared, MayaFlux::Buffers::RenderProcessor::BufferState::index_count, MayaFlux::Buffers::RenderProcessor::BufferState::mill, and MayaFlux::Buffers::RenderProcessor::BufferState::vertex_count.