22void VKBatch::draw(
int vertex_first,
int vertex_count,
int instance_first,
int instance_count)
30 const bool draw_indexed = index_buffer !=
nullptr;
36 context.active_framebuffer_get()->rendering_ensure(context);
46 context.active_framebuffer_get()->vk_viewports_append(
48 context.active_framebuffer_get()->vk_render_areas_append(
56 context.render_graph().add_node(draw_indexed);
60 draw.node_data.vertex_count = vertex_count;
61 draw.node_data.instance_count = instance_count;
62 draw.node_data.first_vertex = vertex_first;
63 draw.node_data.first_instance = instance_first;
64 context.active_framebuffer_get()->vk_viewports_append(
65 draw.node_data.graphics.viewport.viewports);
66 context.active_framebuffer_get()->vk_render_areas_append(
67 draw.node_data.graphics.viewport.scissors);
69 vao.
bind(
draw.node_data.vertex_buffers);
70 context.update_pipeline_data(prim_type, vao,
draw.node_data.graphics);
72 context.render_graph().add_node(
draw);
92 const intptr_t offset,
93 const intptr_t stride)
101 const bool draw_indexed = index_buffer !=
nullptr;
107 context.active_framebuffer_get()->rendering_ensure(context);
111 resource_access_info);
117 context.active_framebuffer_get()->vk_viewports_append(
119 context.active_framebuffer_get()->vk_render_areas_append(
125 context.update_pipeline_data(prim_type, vao, draw_indexed_indirect.
node_data.
graphics);
127 context.render_graph().add_node(draw_indexed_indirect);
131 draw.node_data.indirect_buffer = indirect_buffer;
132 draw.node_data.offset = offset;
134 draw.node_data.stride = stride;
135 context.active_framebuffer_get()->vk_viewports_append(
136 draw.node_data.graphics.viewport.viewports);
137 context.active_framebuffer_get()->vk_render_areas_append(
138 draw.node_data.graphics.viewport.scissors);
140 vao.
bind(
draw.node_data.vertex_buffers);
141 context.update_pipeline_data(prim_type, vao,
draw.node_data.graphics);
143 context.render_graph().add_node(
draw);