21void VKBatch::draw(
int vertex_first,
int vertex_count,
int instance_first,
int instance_count)
29 const bool draw_indexed = index_buffer !=
nullptr;
35 context.active_framebuffer_get()->rendering_ensure(context);
50 context.render_graph.add_node(draw_indexed);
54 draw.node_data.vertex_count = vertex_count;
55 draw.node_data.instance_count = instance_count;
56 draw.node_data.first_vertex = vertex_first;
57 draw.node_data.first_instance = instance_first;
58 vao.
bind(
draw.node_data.vertex_buffers);
59 context.update_pipeline_data(prim_type, vao,
draw.node_data.pipeline_data);
61 context.render_graph.add_node(
draw);
90 const bool draw_indexed = index_buffer !=
nullptr;
96 context.active_framebuffer_get()->rendering_ensure(context);
100 resource_access_info);
111 context.render_graph.add_node(draw_indexed_indirect);
115 draw.node_data.indirect_buffer = indirect_buffer;
116 draw.node_data.offset = offset;
118 draw.node_data.stride = stride;
119 vao.
bind(
draw.node_data.vertex_buffers);
120 context.update_pipeline_data(prim_type, vao,
draw.node_data.pipeline_data);
122 context.render_graph.add_node(
draw);
128 return unwrap(verts_(index));
133 return unwrap(inst_(index));
uint32_t index_start_get() const
void draw_indirect(GPUStorageBuf *indirect_buf, intptr_t offset) override
void multi_draw_indirect(GPUStorageBuf *indirect_buf, int count, intptr_t offset, intptr_t stride) override
VKVertexBuffer * vertex_buffer_get(int index)
VKIndexBuffer * index_buffer_get()
VKVertexBuffer * instance_buffer_get(int index)
void draw(int vertex_first, int vertex_count, int instance_first, int instance_count) override
VkIndexType vk_index_type() const
VkBuffer vk_handle() const
void upload_data() override
VkBuffer vk_handle() const
void update_bindings(const VKContext &context, VKBatch &batch)
void bind(render_graph::VKVertexBufferBindings &r_vertex_buffer_bindings) const
VKDrawIndexedCreateInfo CreateInfo
static Context * unwrap(GPUContext *ctx)
VKDrawIndexedData node_data
VKPipelineData pipeline_data
VKIndexBufferBinding index_buffer
VKVertexBufferBindings vertex_buffers
VKDrawIndexedIndirectData node_data
VKIndexBufferBinding index_buffer
VKPipelineData pipeline_data
VKVertexBufferBindings vertex_buffers