[Important] Indirect Draw Finished....test OK!!
This commit is contained in:
@@ -25,7 +25,7 @@ private:
|
||||
|
||||
struct RenderItem
|
||||
{
|
||||
uint32_t first_instance; ///<绘制实例(和instance渲染无关,对应InstanceRate更新的VAB)
|
||||
uint32_t first_instance; ///<第一个绘制实例(和instance渲染无关,对应InstanceRate的VAB)
|
||||
uint32_t instance_count;
|
||||
|
||||
Pipeline * pipeline;
|
||||
@@ -43,6 +43,8 @@ private:
|
||||
IndirectDrawIndexedBuffer *icb_draw_indexed;
|
||||
|
||||
void ReallocICB();
|
||||
void WriteICB(VkDrawIndirectCommand *,RenderItem *ri);
|
||||
void WriteICB(VkDrawIndexedIndirectCommand *,RenderItem *ri);
|
||||
|
||||
DataArray<RenderItem> ri_array;
|
||||
uint ri_count;
|
||||
@@ -58,8 +60,12 @@ protected:
|
||||
const VDM * last_vdm;
|
||||
const PrimitiveRenderData * last_render_data;
|
||||
|
||||
int first_indirect_draw_index=-1;
|
||||
uint indirect_draw_count=0;
|
||||
|
||||
bool BindVAB(const PrimitiveDataBuffer *,const uint);
|
||||
|
||||
void ProcIndirectRender();
|
||||
void Render(RenderItem *);
|
||||
|
||||
public:
|
||||
|
@@ -52,9 +52,13 @@ public:
|
||||
|
||||
using IndirectCommandBuffer<VkDrawIndirectCommand>::IndirectCommandBuffer;
|
||||
|
||||
void Draw(VkCommandBuffer cmd_buf,uint32_t offset,uint32_t draw_count,uint32_t stride) const
|
||||
void Draw(VkCommandBuffer cmd_buf,uint32_t cmd_offset,uint32_t draw_count) const
|
||||
{
|
||||
vkCmdDrawIndirect(cmd_buf,buf.buffer,offset,draw_count,stride);
|
||||
vkCmdDrawIndirect(cmd_buf,
|
||||
buf.buffer,
|
||||
cmd_offset*sizeof(VkDrawIndirectCommand),
|
||||
draw_count,
|
||||
sizeof(VkDrawIndirectCommand));
|
||||
}
|
||||
};//class IndirectDrawBuffer:public IndirectCommandBuffer<VkDrawIndirectCommand>
|
||||
|
||||
@@ -66,9 +70,13 @@ public:
|
||||
|
||||
using IndirectCommandBuffer<VkDrawIndexedIndirectCommand>::IndirectCommandBuffer;
|
||||
|
||||
void DrawIndexed(VkCommandBuffer cmd_buf,uint32_t offset,uint32_t draw_count,uint32_t stride) const
|
||||
void DrawIndexed(VkCommandBuffer cmd_buf,uint32_t cmd_offset,uint32_t draw_count) const
|
||||
{
|
||||
vkCmdDrawIndexedIndirect(cmd_buf,buf.buffer,offset,draw_count,stride);
|
||||
vkCmdDrawIndexedIndirect(cmd_buf,
|
||||
buf.buffer,
|
||||
cmd_offset*sizeof(VkDrawIndexedIndirectCommand),
|
||||
draw_count,
|
||||
sizeof(VkDrawIndexedIndirectCommand));
|
||||
}
|
||||
};//class IndirectDrawIndexedBuffer:public IndirectCommandBuffer<VkDrawIndexedIndirectCommand>
|
||||
|
||||
|
Reference in New Issue
Block a user