finish BIG VBO.Test OK!,Can RUN!..next step is merge drawcall.

This commit is contained in:
2024-05-25 04:11:38 +08:00
parent 4a94d78c1f
commit 0dfb7220b5
12 changed files with 189 additions and 197 deletions

View File

@@ -199,7 +199,7 @@ void RenderCmdBuffer::DrawIndexed(const IBAccess *iba,const uint32_t instance_co
vkCmdBindIndexBuffer(cmd_buf,
iba->buffer->GetBuffer(),
iba->start,
iba->start*iba->buffer->GetStride(),
VkIndexType(iba->buffer->GetType()));
vkCmdDrawIndexed(cmd_buf,iba->count,instance_count,0,0,0);

View File

@@ -146,7 +146,7 @@ namespace
return(&ib_access);
}
VABAccess *InitVAB(const AnsiString &name,const VkFormat &format,const void *data,const VkDeviceSize bytes)
VABAccess *InitVAB(const AnsiString &name,const VkFormat &format,const void *data)
{
if(!device)return(nullptr);
if(!vil)return(nullptr);
@@ -164,12 +164,6 @@ namespace
if(vif->format!=format)
return(nullptr);
if(data)
{
if(vif->stride*vertex_count!=bytes)
return(nullptr);
}
VABAccess *vaba=vab_access+index;
if(!vaba->vab)
@@ -203,7 +197,7 @@ namespace
public:
PrimitiveDataVDM(VertexDataManager *_vdm,const VIL *_vil,const VkDeviceSize vc):PrimitiveData(_vil,vc)
PrimitiveDataVDM(VertexDataManager *_vdm,const VkDeviceSize vc):PrimitiveData(_vdm->GetVIL(),vc)
{
vdm=_vdm;
@@ -240,7 +234,7 @@ namespace
return &ib_access;
}
VABAccess *InitVAB(const AnsiString &name,const VkFormat &format,const void *data,const VkDeviceSize bytes)
VABAccess *InitVAB(const AnsiString &name,const VkFormat &format,const void *data)
{
if(!vdm)return(nullptr);
if(!vil)return(nullptr);
@@ -258,12 +252,6 @@ namespace
if(vif->format!=format)
return(nullptr);
if(data)
{
if(vif->stride*vertex_count!=bytes)
return(nullptr);
}
VABAccess *vaba=vab_access+index;
if(!vaba->vab)
@@ -277,7 +265,7 @@ namespace
vaba->count=vab_node->GetCount();
}
if(vaba->vab)
if(vaba->vab&&data)
vaba->vab->Write(data,vaba->start,vaba->count);
return vaba;
@@ -294,12 +282,11 @@ PrimitiveData *CreatePrimitiveData(GPUDevice *dev,const VIL *_vil,const VkDevice
return(new PrimitiveDataPrivateBuffer(dev,_vil,vc));
}
PrimitiveData *CreatePrimitiveData(VertexDataManager *vdm,const VIL *_vil,const VkDeviceSize vc)
PrimitiveData *CreatePrimitiveData(VertexDataManager *vdm,const VkDeviceSize vc)
{
if(!vdm)return(nullptr);
if(!_vil)return(nullptr);
if(vc<=0)return(nullptr);
return(new PrimitiveDataVDM(vdm,_vil,vc));
return(new PrimitiveDataVDM(vdm,vc));
}
VK_NAMESPACE_END

View File

@@ -43,9 +43,9 @@ public:
public:
virtual IBAccess * InitIBO(const VkDeviceSize index_count,IndexType it)=0;
virtual VABAccess *InitVAB(const AnsiString &name,const VkFormat &format,const void *data,const VkDeviceSize bytes)=0;
virtual VABAccess *InitVAB(const AnsiString &name,const VkFormat &format,const void *data)=0;
};//class PrimitiveData
PrimitiveData *CreatePrimitiveData(GPUDevice *dev,const VIL *_vil,const VkDeviceSize vc);
PrimitiveData *CreatePrimitiveData(VertexDataManager *vdm,const VIL *_vil,const VkDeviceSize vc);
PrimitiveData *CreatePrimitiveData(VertexDataManager *vdm,const VkDeviceSize vc);
VK_NAMESPACE_END

View File

@@ -96,7 +96,7 @@ Renderable *CreateRenderable(Primitive *prim,MaterialInstance *mi,Pipeline *p)
return(nullptr);
}
vid->buffer_offset[i]=vab_access->start;
vid->buffer_offset[i]=vab_access->start*vif->stride;
vid->buffer_list[i]=vab_access->vab->GetBuffer();
++vif;
}