修正vkCmdBindVertexBuffers的错误用法,VertexInput类连动更改
This commit is contained in:
parent
31f92f8de6
commit
0f389f907d
@ -83,17 +83,17 @@ bool CommandBuffer::Bind(PipelineLayout *pl)
|
|||||||
return(true);
|
return(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool CommandBuffer::Bind(VertexInput *vi,const VkDeviceSize offset)
|
bool CommandBuffer::Bind(VertexInput *vi)
|
||||||
{
|
{
|
||||||
if(!vi)
|
if(!vi)
|
||||||
return(false);
|
return(false);
|
||||||
|
|
||||||
const List<VkBuffer> &buf_list=vi->GetBufferList();
|
const uint count=vi->GetCount();
|
||||||
|
|
||||||
if(buf_list.GetCount()<=0)
|
if(count<=0)
|
||||||
return(false);
|
return(false);
|
||||||
|
|
||||||
vkCmdBindVertexBuffers(cmd_buf,0,buf_list.GetCount(),buf_list.GetData(),&offset);
|
vkCmdBindVertexBuffers(cmd_buf,0,count,vi->GetBuffer(),vi->GetOffset());
|
||||||
return(true);
|
return(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -44,7 +44,7 @@ public:
|
|||||||
bool Begin(RenderPass *rp,Framebuffer *fb);
|
bool Begin(RenderPass *rp,Framebuffer *fb);
|
||||||
bool Bind(Pipeline *p);
|
bool Bind(Pipeline *p);
|
||||||
bool Bind(PipelineLayout *pl);
|
bool Bind(PipelineLayout *pl);
|
||||||
bool Bind(VertexInput *vi,const VkDeviceSize offset=0);
|
bool Bind(VertexInput *vi);
|
||||||
void Draw(const uint32_t vertex_count);
|
void Draw(const uint32_t vertex_count);
|
||||||
void Draw(const uint32_t vertex_count,const uint32_t instance_count,const uint32_t first_vertex=0,const uint32_t first_instance=0);
|
void Draw(const uint32_t vertex_count,const uint32_t instance_count,const uint32_t first_vertex=0,const uint32_t first_instance=0);
|
||||||
bool End();
|
bool End();
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
#include"VKBuffer.h"
|
#include"VKBuffer.h"
|
||||||
|
|
||||||
VK_NAMESPACE_BEGIN
|
VK_NAMESPACE_BEGIN
|
||||||
bool VertexInput::Add(uint32_t location,VertexBuffer *buf,bool instance)
|
bool VertexInput::Add(uint32_t location,VertexBuffer *buf,bool instance,VkDeviceSize offset)
|
||||||
{
|
{
|
||||||
if(!buf)
|
if(!buf)
|
||||||
return(false);
|
return(false);
|
||||||
@ -19,10 +19,11 @@ bool VertexInput::Add(uint32_t location,VertexBuffer *buf,bool instance)
|
|||||||
attrib.binding=binding_index;
|
attrib.binding=binding_index;
|
||||||
attrib.location=location;
|
attrib.location=location;
|
||||||
attrib.format=buf->GetFormat();
|
attrib.format=buf->GetFormat();
|
||||||
attrib.offset=0;
|
attrib.offset=offset;
|
||||||
|
|
||||||
vib_list.Add(new VertexInputBuffer(binding,attrib,buf));
|
vib_list.Add(new VertexInputBuffer(binding,attrib,buf));
|
||||||
buf_list.Add(buf->GetBuffer());
|
buf_list.Add(buf->GetBuffer());
|
||||||
|
buf_offset.Add(offset);
|
||||||
|
|
||||||
binding_list.Add(binding);
|
binding_list.Add(binding);
|
||||||
attribute_list.Add(attrib);
|
attribute_list.Add(attrib);
|
||||||
|
@ -31,6 +31,7 @@ class VertexInput
|
|||||||
|
|
||||||
ObjectList<VertexInputBuffer> vib_list;
|
ObjectList<VertexInputBuffer> vib_list;
|
||||||
List<VkBuffer> buf_list;
|
List<VkBuffer> buf_list;
|
||||||
|
List<VkDeviceSize> buf_offset;
|
||||||
|
|
||||||
List<VkVertexInputBindingDescription> binding_list;
|
List<VkVertexInputBindingDescription> binding_list;
|
||||||
List<VkVertexInputAttributeDescription> attribute_list;
|
List<VkVertexInputAttributeDescription> attribute_list;
|
||||||
@ -40,12 +41,13 @@ public:
|
|||||||
VertexInput()=default;
|
VertexInput()=default;
|
||||||
virtual ~VertexInput()=default;
|
virtual ~VertexInput()=default;
|
||||||
|
|
||||||
bool Add(uint32_t location,VertexBuffer *,bool instance=false);
|
bool Add(uint32_t location,VertexBuffer *,bool instance=false,VkDeviceSize offset=0);
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
||||||
const uint GetCount()const{return buf_list.GetCount();}
|
const uint GetCount ()const{return buf_list.GetCount();}
|
||||||
const List<VkBuffer> &GetBufferList()const{return buf_list;}
|
const VkBuffer * GetBuffer ()const{return buf_list.GetData();}
|
||||||
|
const VkDeviceSize * GetOffset ()const{return buf_offset.GetData();}
|
||||||
|
|
||||||
const VkPipelineVertexInputStateCreateInfo GetPipelineVertexInputStateCreateInfo()const;
|
const VkPipelineVertexInputStateCreateInfo GetPipelineVertexInputStateCreateInfo()const;
|
||||||
};//class VertexInput
|
};//class VertexInput
|
||||||
|
@ -214,7 +214,7 @@ int main(int,char **)
|
|||||||
device->Wait();
|
device->Wait();
|
||||||
device->QueuePresent();
|
device->QueuePresent();
|
||||||
|
|
||||||
wait_seconds(1);
|
wait_seconds(3);
|
||||||
|
|
||||||
for(int i=0;i<image_count;i++)
|
for(int i=0;i<image_count;i++)
|
||||||
delete fb[i];
|
delete fb[i];
|
||||||
|
Loading…
x
Reference in New Issue
Block a user