rename "VertexBuffer" to "VertexAttribBuffer"

This commit is contained in:
hyzboy 2020-07-14 14:03:26 +08:00
parent e9eda440a9
commit 9e99db9c72
24 changed files with 105 additions and 88 deletions

View File

@ -32,8 +32,8 @@ private:
vulkan::Pipeline * pipeline =nullptr; vulkan::Pipeline * pipeline =nullptr;
vulkan::VertexBuffer * vertex_buffer =nullptr; vulkan::VertexAttribBuffer * vertex_buffer =nullptr;
vulkan::VertexBuffer * tex_coord_buffer =nullptr; vulkan::VertexAttribBuffer * tex_coord_buffer =nullptr;
private: private:

View File

@ -36,7 +36,7 @@ private:
vulkan::Pipeline * pipeline =nullptr; vulkan::Pipeline * pipeline =nullptr;
vulkan::VertexBuffer * vertex_buffer =nullptr; vulkan::VertexAttribBuffer * vertex_buffer =nullptr;
public: public:

View File

@ -69,8 +69,8 @@ private:
vulkan::Sampler * sampler_linear =nullptr; vulkan::Sampler * sampler_linear =nullptr;
vulkan::Sampler * sampler_nearest =nullptr; vulkan::Sampler * sampler_nearest =nullptr;
vulkan::VertexBuffer * vertex_buffer =nullptr; vulkan::VertexAttribBuffer * vertex_buffer =nullptr;
vulkan::VertexBuffer * tex_coord_buffer =nullptr; vulkan::VertexAttribBuffer * tex_coord_buffer =nullptr;
vulkan::IndexBuffer * index_buffer =nullptr; vulkan::IndexBuffer * index_buffer =nullptr;
SceneNode render_root; SceneNode render_root;

View File

@ -36,7 +36,7 @@ vulkan::Renderable *CreateMeshRenderable(SceneDB *db,vulkan::Material *mtl,const
if(vertex_binding==-1) if(vertex_binding==-1)
return(nullptr); return(nullptr);
vulkan::VertexBuffer *vbo=db->CreateVBO(FMT_RGB32F,mesh->vertex_count,mesh->position); vulkan::VertexAttribBuffer *vbo=db->CreateVBO(FMT_RGB32F,mesh->vertex_count,mesh->position);
render_obj=mtl->CreateRenderable(); render_obj=mtl->CreateRenderable();
render_obj->Set(vertex_binding,vbo); render_obj->Set(vertex_binding,vbo);
@ -47,7 +47,7 @@ vulkan::Renderable *CreateMeshRenderable(SceneDB *db,vulkan::Material *mtl,const
if(normal_binding!=-1) if(normal_binding!=-1)
{ {
vulkan::VertexBuffer *vbo=db->CreateVBO(FMT_RGB32F,mesh->vertex_count,mesh->normal); vulkan::VertexAttribBuffer *vbo=db->CreateVBO(FMT_RGB32F,mesh->vertex_count,mesh->normal);
render_obj->Set(normal_binding,vbo); render_obj->Set(normal_binding,vbo);
} }
@ -56,7 +56,7 @@ vulkan::Renderable *CreateMeshRenderable(SceneDB *db,vulkan::Material *mtl,const
if(tagent_binding!=-1) if(tagent_binding!=-1)
{ {
vulkan::VertexBuffer *vbo=db->CreateVBO(FMT_RGB32F,mesh->vertex_count,mesh->tangent); vulkan::VertexAttribBuffer *vbo=db->CreateVBO(FMT_RGB32F,mesh->vertex_count,mesh->tangent);
render_obj->Set(tagent_binding,vbo); render_obj->Set(tagent_binding,vbo);
} }
@ -65,7 +65,7 @@ vulkan::Renderable *CreateMeshRenderable(SceneDB *db,vulkan::Material *mtl,const
if(bitagent_binding!=-1) if(bitagent_binding!=-1)
{ {
vulkan::VertexBuffer *vbo=db->CreateVBO(FMT_RGB32F,mesh->vertex_count,mesh->bitangent); vulkan::VertexAttribBuffer *vbo=db->CreateVBO(FMT_RGB32F,mesh->vertex_count,mesh->bitangent);
render_obj->Set(bitagent_binding,vbo); render_obj->Set(bitagent_binding,vbo);
} }

View File

@ -45,8 +45,8 @@ private:
vulkan::Pipeline * pipeline =nullptr; vulkan::Pipeline * pipeline =nullptr;
vulkan::VertexBuffer * vertex_buffer =nullptr; vulkan::VertexAttribBuffer * vertex_buffer =nullptr;
vulkan::VertexBuffer * tex_coord_buffer =nullptr; vulkan::VertexAttribBuffer * tex_coord_buffer =nullptr;
private: private:

View File

@ -42,8 +42,8 @@ private:
vulkan::Pipeline * pipeline =nullptr; vulkan::Pipeline * pipeline =nullptr;
vulkan::VertexBuffer * vertex_buffer =nullptr; vulkan::VertexAttribBuffer * vertex_buffer =nullptr;
vulkan::VertexBuffer * color_buffer =nullptr; vulkan::VertexAttribBuffer * color_buffer =nullptr;
public: public:

View File

@ -47,7 +47,7 @@ private:
vulkan::Pipeline * pipeline =nullptr; vulkan::Pipeline * pipeline =nullptr;
vulkan::VertexBuffer * vertex_buffer =nullptr; vulkan::VertexAttribBuffer * vertex_buffer =nullptr;
vulkan::IndexBuffer * index_buffer =nullptr; vulkan::IndexBuffer * index_buffer =nullptr;
public: public:

View File

@ -57,8 +57,8 @@ private:
vulkan::Pipeline * pipeline =nullptr; vulkan::Pipeline * pipeline =nullptr;
vulkan::VertexBuffer * vertex_buffer =nullptr; vulkan::VertexAttribBuffer * vertex_buffer =nullptr;
vulkan::VertexBuffer * tex_coord_buffer =nullptr; vulkan::VertexAttribBuffer * tex_coord_buffer =nullptr;
vulkan::IndexBuffer * index_buffer =nullptr; vulkan::IndexBuffer * index_buffer =nullptr;
public: public:

View File

@ -2,7 +2,7 @@
#define HGL_GRAPH_RENDERABLE_CREATER_INCLUDE #define HGL_GRAPH_RENDERABLE_CREATER_INCLUDE
#include<hgl/graph/SceneDB.h> #include<hgl/graph/SceneDB.h>
#include<hgl/graph/VertexBuffer.h> #include<hgl/graph/VertexAttribBuffer.h>
namespace hgl namespace hgl
{ {
namespace graph namespace graph
@ -19,6 +19,8 @@ namespace hgl
#undef VAN_DEFINE #undef VAN_DEFINE
}//namespace VertexAttribName }//namespace VertexAttribName
#define VAN VertexAttribName
/** /**
* *
*/ */
@ -37,10 +39,10 @@ namespace hgl
uint32 vertices_number; uint32 vertices_number;
VertexBufferCreater * vb_vertex; VertexAttribBufferCreater * vabc_vertex;
vulkan::IndexBuffer * ibo; vulkan::IndexBuffer * ibo;
Map<AnsiString,VertexBufferCreater *> vb_map; MapObject<AnsiString,VertexAttribBufferCreater> vabc_maps;
public: public:
@ -49,13 +51,25 @@ namespace hgl
virtual bool Init(const uint32 count); virtual bool Init(const uint32 count);
virtual VertexBufferCreater * Bind(const AnsiString &name); virtual VertexAttribBufferCreater * CreateVAB(const AnsiString &name);
#define PreDefineCreateVAB(name) \
virtual VertexAttribBufferCreater * Create##name##Buffer(){return CreateVAB(VAN::name));}
PreDefineCreateVAB(Vertex)
PreDefineCreateVAB(Normal)
PreDefineCreateVAB(Color)
PreDefineCreateVAB(Tangent)
PreDefineCreateVAB(Bitangent)
PreDefineCreateVAB(TexCoord)
#undef PreDefineCreateVAB
uint16 * CreateIBO16(uint count,const uint16 *data=nullptr); uint16 * CreateIBO16(uint count,const uint16 *data=nullptr);
uint32 * CreateIBO32(uint count,const uint32 *data=nullptr); uint32 * CreateIBO32(uint count,const uint32 *data=nullptr);
virtual vulkan::Renderable * Finish(); virtual vulkan::Renderable * Finish();
};//class GeometryCreater };//class RenderableCreater
}//namespace graph }//namespace graph
}//namespace hgl }//namespace hgl
#endif//HGL_GRAPH_RENDERABLE_CREATER_INCLUDE #endif//HGL_GRAPH_RENDERABLE_CREATER_INCLUDE

View File

@ -9,7 +9,7 @@
#include<hgl/graph/vulkan/VKSampler.h> #include<hgl/graph/vulkan/VKSampler.h>
#include<hgl/graph/vulkan/VKTexture.h> #include<hgl/graph/vulkan/VKTexture.h>
#include<hgl/graph/vulkan/VKMaterialInstance.h> #include<hgl/graph/vulkan/VKMaterialInstance.h>
#include<hgl/graph/VertexBufferCreater.h> #include<hgl/graph/VertexAttribBufferCreater.h>
#include<hgl/graph/RenderableInstance.h> #include<hgl/graph/RenderableInstance.h>
#include<hgl/type/ResManage.h> #include<hgl/type/ResManage.h>
namespace hgl namespace hgl
@ -26,7 +26,7 @@ namespace hgl
using SamplerID =int; using SamplerID =int;
using TextureID =int; using TextureID =int;
class VertexBufferCreater; class VertexAttribBufferCreater;
/** /**
* DB * DB
@ -64,9 +64,9 @@ namespace hgl
public: //Create public: //Create
vulkan::VertexBuffer *CreateVBO(VkFormat format,uint32_t count,const void *data,VkSharingMode sharing_mode=VK_SHARING_MODE_EXCLUSIVE); vulkan::VertexAttribBuffer *CreateVBO(VkFormat format,uint32_t count,const void *data,VkSharingMode sharing_mode=VK_SHARING_MODE_EXCLUSIVE);
vulkan::VertexBuffer *CreateVBO(VkFormat format,uint32_t count,VkSharingMode sharing_mode=VK_SHARING_MODE_EXCLUSIVE){return CreateVBO(format,count,nullptr,sharing_mode);} vulkan::VertexAttribBuffer *CreateVBO(VkFormat format,uint32_t count,VkSharingMode sharing_mode=VK_SHARING_MODE_EXCLUSIVE){return CreateVBO(format,count,nullptr,sharing_mode);}
vulkan::VertexBuffer *CreateVBO(const VertexBufferCreater *vbc,VkSharingMode sharing_mode=VK_SHARING_MODE_EXCLUSIVE){return CreateVBO(vbc->GetDataType(),vbc->GetCount(),vbc->GetData(),sharing_mode);} vulkan::VertexAttribBuffer *CreateVBO(const VertexAttribBufferCreater *vbc,VkSharingMode sharing_mode=VK_SHARING_MODE_EXCLUSIVE){return CreateVBO(vbc->GetDataType(),vbc->GetCount(),vbc->GetData(),sharing_mode);}
#define SCENE_DB_CREATE_FUNC(name) vulkan::Buffer *Create##name(VkDeviceSize size,void *data,VkSharingMode sharing_mode=VK_SHARING_MODE_EXCLUSIVE); \ #define SCENE_DB_CREATE_FUNC(name) vulkan::Buffer *Create##name(VkDeviceSize size,void *data,VkSharingMode sharing_mode=VK_SHARING_MODE_EXCLUSIVE); \
vulkan::Buffer *Create##name(VkDeviceSize size,VkSharingMode sharing_mode=VK_SHARING_MODE_EXCLUSIVE); vulkan::Buffer *Create##name(VkDeviceSize size,VkSharingMode sharing_mode=VK_SHARING_MODE_EXCLUSIVE);

View File

@ -1,11 +1,11 @@
#ifndef HGL_GRAPH_VERTEX_BUFFER_INCLUDE #ifndef HGL_GRAPH_VERTEX_ATTRIB_BUFFER_INCLUDE
#define HGL_GRAPH_VERTEX_BUFFER_INCLUDE #define HGL_GRAPH_VERTEX_ATTRIB_BUFFER_INCLUDE
#include<hgl/type/Color3f.h> #include<hgl/type/Color3f.h>
#include<hgl/type/Color4f.h> #include<hgl/type/Color4f.h>
#include<hgl/type/RectScope.h> #include<hgl/type/RectScope.h>
#include<hgl/type/BaseString.h> #include<hgl/type/BaseString.h>
#include<hgl/graph/VertexBufferCreater.h> #include<hgl/graph/VertexAttribBufferCreater.h>
#include<hgl/log/LogInfo.h> #include<hgl/log/LogInfo.h>
namespace hgl namespace hgl
{ {
@ -14,7 +14,7 @@ namespace hgl
/** /**
* *
*/ */
template<typename T,int C> class VertexBufferBase:public VertexBufferCreater template<typename T,int C> class VertexAttribBufferBase:public VertexAttribBufferCreater
{ {
protected: protected:
@ -25,7 +25,7 @@ namespace hgl
public: public:
VertexBufferBase(uint32_t _size,const T *_data=nullptr):VertexBufferCreater(_size,C,sizeof(T)) VertexAttribBufferBase(uint32_t _size,const T *_data=nullptr):VertexAttribBufferCreater(_size,C,sizeof(T))
{ {
mem_type=(T *)GetData(); mem_type=(T *)GetData();
access=0; access=0;
@ -35,7 +35,7 @@ namespace hgl
memcpy(mem_type,_data,total_bytes); memcpy(mem_type,_data,total_bytes);
} }
virtual ~VertexBufferBase()=default; virtual ~VertexAttribBufferBase()=default;
void BufferData(const T *ptr) void BufferData(const T *ptr)
{ {
@ -53,7 +53,7 @@ namespace hgl
{ {
if(!mem_type||offset>=count) if(!mem_type||offset>=count)
{ {
LOG_HINT(OS_TEXT("VertexBuffer::Get() out,offset:")+OSString::valueOf(offset)); LOG_HINT(OS_TEXT("VertexAttribBuffer::Get() out,offset:")+OSString::valueOf(offset));
return(nullptr); return(nullptr);
} }
@ -69,7 +69,7 @@ namespace hgl
{ {
if(access) if(access)
{ {
LOG_HINT(OS_TEXT("VertexBuffer::Begin() access!=0,offset:")+OSString::valueOf(offset)); LOG_HINT(OS_TEXT("VertexAttribBuffer::Begin() access!=0,offset:")+OSString::valueOf(offset));
return(nullptr); return(nullptr);
} }
@ -99,7 +99,7 @@ namespace hgl
{ {
if(!this->access||this->access+C*number>this->mem_end) if(!this->access||this->access+C*number>this->mem_end)
{ {
LOG_HINT(OS_TEXT("VertexBuffer::Write(const T *,number) out,number:")+OSString::valueOf(number)); LOG_HINT(OS_TEXT("VertexAttribBuffer::Write(const T *,number) out,number:")+OSString::valueOf(number));
return(false); return(false);
} }
@ -109,16 +109,16 @@ namespace hgl
return(true); return(true);
} }
};//class VertexBuffer };//class VertexAttribBuffer
/** /**
* *
*/ */
template<typename T> class VertexBuffer1:public VertexBufferBase<T,1> template<typename T> class VertexBuffer1:public VertexAttribBufferBase<T,1>
{ {
public: public:
using VertexBufferBase<T,1>::VertexBufferBase; using VertexAttribBufferBase<T,1>::VertexAttribBufferBase;
virtual ~VertexBuffer1()=default; virtual ~VertexBuffer1()=default;
VkFormat GetDataType()const override; VkFormat GetDataType()const override;
@ -197,11 +197,11 @@ namespace hgl
/** /**
* *
*/ */
template<typename T> class VertexBuffer2:public VertexBufferBase<T,2> template<typename T> class VertexBuffer2:public VertexAttribBufferBase<T,2>
{ {
public: public:
using VertexBufferBase<T,2>::VertexBufferBase; using VertexAttribBufferBase<T,2>::VertexAttribBufferBase;
virtual ~VertexBuffer2()=default; virtual ~VertexBuffer2()=default;
VkFormat GetDataType()const override; VkFormat GetDataType()const override;
@ -486,11 +486,11 @@ namespace hgl
/** /**
* *
*/ */
template<typename T> class VertexBuffer3:public VertexBufferBase<T,3> template<typename T> class VertexBuffer3:public VertexAttribBufferBase<T,3>
{ {
public: public:
using VertexBufferBase<T,3>::VertexBufferBase; using VertexAttribBufferBase<T,3>::VertexAttribBufferBase;
virtual ~VertexBuffer3()=default; virtual ~VertexBuffer3()=default;
VkFormat GetDataType()const override; VkFormat GetDataType()const override;
@ -748,11 +748,11 @@ namespace hgl
/** /**
* *
*/ */
template<typename T> class VertexBuffer4:public VertexBufferBase<T,4> template<typename T> class VertexBuffer4:public VertexAttribBufferBase<T,4>
{ {
public: public:
using VertexBufferBase<T,4>::VertexBufferBase; using VertexAttribBufferBase<T,4>::VertexAttribBufferBase;
virtual ~VertexBuffer4()=default; virtual ~VertexBuffer4()=default;
VkFormat GetDataType()const override; VkFormat GetDataType()const override;
@ -1135,7 +1135,7 @@ namespace hgl
* @param vecsize vec数量 * @param vecsize vec数量
* @param vertex_count * @param vertex_count
*/ */
VertexBufferCreater *CreateVB(const uint32_t base_type,const uint32_t vecsize,const uint32_t vertex_count); VertexAttribBufferCreater *CreateVABCreater(const uint32_t base_type,const uint32_t vecsize,const uint32_t vertex_count);
}//namespace graph }//namespace graph
}//namespace hgl }//namespace hgl
#endif//HGL_GRAPH_VERTEX_BUFFER_INCLUDE #endif//HGL_GRAPH_VERTEX_ATTRIB_BUFFER_INCLUDE

View File

@ -1,12 +1,15 @@
#ifndef HGL_GRAPH_VERTEX_BUFFER_CREATER_INCLUDE #ifndef HGL_GRAPH_VERTEX_ATTRIB_BUFFER_CREATER_INCLUDE
#define HGL_GRAPH_VERTEX_BUFFER_CREATER_INCLUDE #define HGL_GRAPH_VERTEX_ATTRIB_BUFFER_CREATER_INCLUDE
#include<hgl/graph/vulkan/VK.h> #include<hgl/graph/vulkan/VK.h>
namespace hgl namespace hgl
{ {
namespace graph namespace graph
{ {
class VertexBufferCreater /**
*
*/
class VertexAttribBufferCreater ///顶点属性缓冲区创建者
{ {
void *mem_data; ///<内存中的数据 void *mem_data; ///<内存中的数据
@ -23,13 +26,13 @@ namespace hgl
public: public:
VertexBufferCreater(uint32_t c,uint32_t dc,uint32_t cs):count(c),dc_num(dc),comp_stride(cs),stride(dc*cs),total_bytes(dc*cs*c) VertexAttribBufferCreater(uint32_t c,uint32_t dc,uint32_t cs):count(c),dc_num(dc),comp_stride(cs),stride(dc*cs),total_bytes(dc*cs*c)
{ {
mem_data = hgl_malloc(total_bytes); //在很多情况下hgl_malloc分配的内存是对齐的这样有效率上的提升 mem_data = hgl_malloc(total_bytes); //在很多情况下hgl_malloc分配的内存是对齐的这样有效率上的提升
mem_end = ((char *)mem_data) + total_bytes; mem_end = ((char *)mem_data) + total_bytes;
} }
virtual ~VertexBufferCreater() virtual ~VertexAttribBufferCreater()
{ {
if(mem_data) if(mem_data)
hgl_free(mem_data); hgl_free(mem_data);
@ -42,7 +45,7 @@ namespace hgl
const uint32_t GetStride ()const{return stride;} ///<取得每一组数据字节数 const uint32_t GetStride ()const{return stride;} ///<取得每一组数据字节数
void * GetData ()const{return mem_data;} ///<取得数据指针 void * GetData ()const{return mem_data;} ///<取得数据指针
const uint32_t GetTotalBytes ()const{return total_bytes; } ///<取得数据字节数 const uint32_t GetTotalBytes ()const{return total_bytes; } ///<取得数据字节数
};//class VertexBufferCreater };//class VertexAttribBufferCreater
}//namespace graph }//namespace graph
}//namespace hgl }//namespace hgl
#endif//HGL_GRAPH_VERTEX_BUFFER_CREATER_INCLUDE #endif//HGL_GRAPH_VERTEX_ATTRIB_BUFFER_CREATER_INCLUDE

View File

@ -36,7 +36,7 @@ class Sampler;
class Memory; class Memory;
class Buffer; class Buffer;
struct BufferData; struct BufferData;
class VertexBuffer; class VertexAttribBuffer;
class IndexBuffer; class IndexBuffer;
class CommandBuffer; class CommandBuffer;

View File

@ -21,7 +21,7 @@ protected:
private: private:
friend class Device; friend class Device;
friend class VertexBuffer; friend class VertexAttribBuffer;
friend class IndexBuffer; friend class IndexBuffer;
Buffer(VkDevice d,const BufferData &b) Buffer(VkDevice d,const BufferData &b)
@ -46,7 +46,7 @@ public:
bool Write(const void *ptr) {return buf.memory->Write(ptr);} bool Write(const void *ptr) {return buf.memory->Write(ptr);}
};//class Buffer };//class Buffer
class VertexBuffer:public Buffer class VertexAttribBuffer:public Buffer
{ {
VkFormat format; ///<数据格式 VkFormat format; ///<数据格式
uint32_t stride; ///<单个数据字节数 uint32_t stride; ///<单个数据字节数
@ -56,7 +56,7 @@ private:
friend class Device; friend class Device;
VertexBuffer(VkDevice d,const BufferData &vb,VkFormat fmt,uint32_t _stride,uint32_t _count):Buffer(d,vb) VertexAttribBuffer(VkDevice d,const BufferData &vb,VkFormat fmt,uint32_t _stride,uint32_t _count):Buffer(d,vb)
{ {
format=fmt; format=fmt;
stride=_stride; stride=_stride;
@ -65,7 +65,7 @@ private:
public: public:
~VertexBuffer()=default; ~VertexAttribBuffer()=default;
const VkFormat GetFormat()const { return format; } const VkFormat GetFormat()const { return format; }
const uint32_t GetStride()const { return stride; } const uint32_t GetStride()const { return stride; }
@ -75,7 +75,7 @@ public:
{ {
return Buffer::Map(start*stride,size*stride); return Buffer::Map(start*stride,size*stride);
} }
};//class VertexBuffer:public Buffer };//class VertexAttribBuffer:public Buffer
class IndexBuffer:public Buffer class IndexBuffer:public Buffer
{ {

View File

@ -9,7 +9,7 @@
#include<hgl/graph/vulkan/VKDeviceAttribute.h> #include<hgl/graph/vulkan/VKDeviceAttribute.h>
#include<hgl/graph/vulkan/VKSwapchain.h> #include<hgl/graph/vulkan/VKSwapchain.h>
#include<hgl/graph/vulkan/VKRenderTarget.h> #include<hgl/graph/vulkan/VKRenderTarget.h>
#include<hgl/graph/VertexBufferCreater.h> #include<hgl/graph/VertexAttribBufferCreater.h>
namespace hgl namespace hgl
{ {
@ -87,9 +87,9 @@ public: //Buffer相关
Buffer * CreateBuffer(VkBufferUsageFlags buf_usage,VkDeviceSize size,const void *data,VkSharingMode sharing_mode=VK_SHARING_MODE_EXCLUSIVE); Buffer * CreateBuffer(VkBufferUsageFlags buf_usage,VkDeviceSize size,const void *data,VkSharingMode sharing_mode=VK_SHARING_MODE_EXCLUSIVE);
Buffer * CreateBuffer(VkBufferUsageFlags buf_usage,VkDeviceSize size,VkSharingMode sharing_mode=VK_SHARING_MODE_EXCLUSIVE){return CreateBuffer(buf_usage,size,nullptr,sharing_mode);} Buffer * CreateBuffer(VkBufferUsageFlags buf_usage,VkDeviceSize size,VkSharingMode sharing_mode=VK_SHARING_MODE_EXCLUSIVE){return CreateBuffer(buf_usage,size,nullptr,sharing_mode);}
VertexBuffer * CreateVBO(VkFormat format,uint32_t count,const void *data,VkSharingMode sharing_mode=VK_SHARING_MODE_EXCLUSIVE); VertexAttribBuffer * CreateVBO(VkFormat format,uint32_t count,const void *data,VkSharingMode sharing_mode=VK_SHARING_MODE_EXCLUSIVE);
VertexBuffer * CreateVBO(VkFormat format,uint32_t count,VkSharingMode sharing_mode=VK_SHARING_MODE_EXCLUSIVE){return CreateVBO(format,count,nullptr,sharing_mode);} VertexAttribBuffer * CreateVBO(VkFormat format,uint32_t count,VkSharingMode sharing_mode=VK_SHARING_MODE_EXCLUSIVE){return CreateVBO(format,count,nullptr,sharing_mode);}
VertexBuffer * CreateVBO(const VertexBufferCreater *vbc,VkSharingMode sharing_mode=VK_SHARING_MODE_EXCLUSIVE){return CreateVBO(vbc->GetDataType(),vbc->GetCount(),vbc->GetData(),sharing_mode);} VertexAttribBuffer * CreateVBO(const VertexAttribBufferCreater *vbc,VkSharingMode sharing_mode=VK_SHARING_MODE_EXCLUSIVE){return CreateVBO(vbc->GetDataType(),vbc->GetCount(),vbc->GetData(),sharing_mode);}
IndexBuffer * CreateIBO(VkIndexType index_type,uint32_t count,const void *data,VkSharingMode sharing_mode=VK_SHARING_MODE_EXCLUSIVE); IndexBuffer * CreateIBO(VkIndexType index_type,uint32_t count,const void *data,VkSharingMode sharing_mode=VK_SHARING_MODE_EXCLUSIVE);
IndexBuffer * CreateIBO16(uint32_t count,const uint16 *data,VkSharingMode sharing_mode=VK_SHARING_MODE_EXCLUSIVE){return CreateIBO(VK_INDEX_TYPE_UINT16,count,(void *)data,sharing_mode);} IndexBuffer * CreateIBO16(uint32_t count,const uint16 *data,VkSharingMode sharing_mode=VK_SHARING_MODE_EXCLUSIVE){return CreateIBO(VK_INDEX_TYPE_UINT16,count,(void *)data,sharing_mode);}

View File

@ -47,8 +47,8 @@ public:
void SetBoundingBox(const AABB &aabb){BoundingBox=aabb;} void SetBoundingBox(const AABB &aabb){BoundingBox=aabb;}
const AABB &GetBoundingBox()const {return BoundingBox;} const AABB &GetBoundingBox()const {return BoundingBox;}
bool Set(const int stage_input_binding, VertexBuffer *vb,VkDeviceSize offset=0); bool Set(const int stage_input_binding, VertexAttribBuffer *vb,VkDeviceSize offset=0);
bool Set(const AnsiString &name, VertexBuffer *vb,VkDeviceSize offset=0); bool Set(const AnsiString &name, VertexAttribBuffer *vb,VkDeviceSize offset=0);
bool Set(IndexBuffer *ib,VkDeviceSize offset=0) bool Set(IndexBuffer *ib,VkDeviceSize offset=0)
{ {

View File

@ -1,5 +1,5 @@
#include<hgl/graph/vulkan/VKBuffer.h> #include<hgl/graph/vulkan/VKBuffer.h>
#include<hgl/graph/VertexBuffer.h> #include<hgl/graph/VertexAttribBuffer.h>
#include<spirv_cross/spirv_common.hpp> #include<spirv_cross/spirv_common.hpp>
VK_NAMESPACE_BEGIN VK_NAMESPACE_BEGIN
@ -9,7 +9,7 @@ Buffer::~Buffer()
vkDestroyBuffer(device,buf.buffer,nullptr); vkDestroyBuffer(device,buf.buffer,nullptr);
} }
VertexBufferCreater *CreateVB(const uint32_t base_type,const uint32_t vecsize,const uint32_t vertex_count) VertexAttribBufferCreater *CreateVABCreater(const uint32_t base_type,const uint32_t vecsize,const uint32_t vertex_count)
{ {
if(base_type==spirv_cross::SPIRType::SByte) if(base_type==spirv_cross::SPIRType::SByte)
{ {

View File

@ -44,7 +44,7 @@ bool Device::CreateBuffer(BufferData *buf,VkBufferUsageFlags buf_usage,VkDeviceS
return(false); return(false);
} }
VertexBuffer *Device::CreateVBO(VkFormat format,uint32_t count,const void *data,VkSharingMode sharing_mode) VertexAttribBuffer *Device::CreateVBO(VkFormat format,uint32_t count,const void *data,VkSharingMode sharing_mode)
{ {
const uint32_t stride=GetStrideByFormat(format); const uint32_t stride=GetStrideByFormat(format);
@ -61,7 +61,7 @@ VertexBuffer *Device::CreateVBO(VkFormat format,uint32_t count,const void *data,
if(!CreateBuffer(&buf,VK_BUFFER_USAGE_VERTEX_BUFFER_BIT,size,data,sharing_mode)) if(!CreateBuffer(&buf,VK_BUFFER_USAGE_VERTEX_BUFFER_BIT,size,data,sharing_mode))
return(nullptr); return(nullptr);
return(new VertexBuffer(attr->device,buf,format,stride,count)); return(new VertexAttribBuffer(attr->device,buf,format,stride,count));
} }
IndexBuffer *Device::CreateIBO(VkIndexType index_type,uint32_t count,const void *data,VkSharingMode sharing_mode) IndexBuffer *Device::CreateIBO(VkIndexType index_type,uint32_t count,const void *data,VkSharingMode sharing_mode)

View File

@ -20,7 +20,7 @@ Renderable::~Renderable()
delete[] buf_list; delete[] buf_list;
} }
bool Renderable::Set(const int stage_input_binding,VertexBuffer *vbo,VkDeviceSize offset) bool Renderable::Set(const int stage_input_binding,VertexAttribBuffer *vbo,VkDeviceSize offset)
{ {
if(stage_input_binding<0||stage_input_binding>=buf_count||!vbo)return(false); if(stage_input_binding<0||stage_input_binding>=buf_count||!vbo)return(false);
@ -38,7 +38,7 @@ bool Renderable::Set(const int stage_input_binding,VertexBuffer *vbo,VkDeviceSiz
return(true); return(true);
} }
bool Renderable::Set(const AnsiString &name,VertexBuffer *vbo,VkDeviceSize offset) bool Renderable::Set(const AnsiString &name,VertexAttribBuffer *vbo,VkDeviceSize offset)
{ {
return Set(vertex_sm->GetStageInputBinding(name),vbo,offset); return Set(vertex_sm->GetStageInputBinding(name),vbo,offset);
} }

View File

@ -12,8 +12,8 @@ SOURCE_GROUP("Material" FILES ${SG_MATERIAL_HEADER}
SOURCE_GROUP("Material\\Shader" FILES ${SHADER_RESOURCE_FILES}) SOURCE_GROUP("Material\\Shader" FILES ${SHADER_RESOURCE_FILES})
SET(SG_VERTEX_SOURCE ${ROOT_INCLUDE_PATH}/hgl/graph/VertexBufferCreater.h SET(SG_VERTEX_SOURCE ${ROOT_INCLUDE_PATH}/hgl/graph/VertexAttribBufferCreater.h
${ROOT_INCLUDE_PATH}/hgl/graph/VertexBuffer.h) ${ROOT_INCLUDE_PATH}/hgl/graph/VertexAttribBuffer.h)
SOURCE_GROUP("VertexBuffer" FILES ${SG_VERTEX_SOURCE}) SOURCE_GROUP("VertexBuffer" FILES ${SG_VERTEX_SOURCE})

View File

@ -2,7 +2,7 @@
// GL to VK: swap Y/Z of position/normal/tangent/index // GL to VK: swap Y/Z of position/normal/tangent/index
#include<hgl/graph/InlineGeometry.h> #include<hgl/graph/InlineGeometry.h>
#include<hgl/graph/VertexBuffer.h> #include<hgl/graph/VertexAttribBuffer.h>
#include<hgl/graph/vulkan/VKDevice.h> #include<hgl/graph/vulkan/VKDevice.h>
#include<hgl/graph/vulkan/VKShaderModule.h> #include<hgl/graph/vulkan/VKShaderModule.h>
#include<hgl/graph/SceneDB.h> #include<hgl/graph/SceneDB.h>
@ -103,7 +103,7 @@ namespace hgl
private: private:
void Finish(int binding,VertexBufferCreater *vb) void Finish(int binding,VertexAttribBufferCreater *vb)
{ {
render_obj->Set(binding,db->CreateVBO(vb)); render_obj->Set(binding,db->CreateVBO(vb));
delete vb; delete vb;

View File

@ -3,7 +3,7 @@
#include<hgl/graph/SceneNode.h> #include<hgl/graph/SceneNode.h>
#include<hgl/graph/vulkan/VKRenderable.h> #include<hgl/graph/vulkan/VKRenderable.h>
#include<hgl/graph/vulkan/VKCommandBuffer.h> #include<hgl/graph/vulkan/VKCommandBuffer.h>
#include<hgl/graph/VertexBuffer.h> #include<hgl/graph/VertexAttribBuffer.h>
#include<hgl/graph/RenderableInstance.h> #include<hgl/graph/RenderableInstance.h>
#include<hgl/graph/vulkan/VKMaterialInstance.h> #include<hgl/graph/vulkan/VKMaterialInstance.h>

View File

@ -13,7 +13,7 @@ namespace hgl
render_obj =nullptr; render_obj =nullptr;
vertices_number =0; vertices_number =0;
vb_vertex =nullptr; vabc_vertex =nullptr;
ibo =nullptr; ibo =nullptr;
} }
@ -33,25 +33,25 @@ namespace hgl
return(true); return(true);
} }
VertexBufferCreater *RenderableCreater::Bind(const AnsiString &name) VertexAttribBufferCreater *RenderableCreater::CreateVAB(const AnsiString &name)
{ {
if(!vsm)return(false); if(!vsm)return(false);
VertexBufferCreater *vb; VertexAttribBufferCreater *vabc;
if(vb_map.Get(name,vb)) if(vabc_maps.Get(name,vabc))
return vb; return vabc;
const vulkan::ShaderStage *ss=vsm->GetStageInput(name); const vulkan::ShaderStage *ss=vsm->GetStageInput(name);
if(!ss) if(!ss)
return(nullptr); return(nullptr);
vb=CreateVB(ss->base_type,ss->component,vertices_number); vabc=hgl::graph::CreateVABCreater(ss->base_type,ss->component,vertices_number);
vb_map.Add(name,vb); vabc_maps.Add(name,vabc);
return vb; return vabc;
} }
uint16 *RenderableCreater::CreateIBO16(uint count,const uint16 *data) uint16 *RenderableCreater::CreateIBO16(uint count,const uint16 *data)
@ -74,7 +74,7 @@ namespace hgl
{ {
const uint si_count=vsm->GetStageInputCount(); const uint si_count=vsm->GetStageInputCount();
if(vb_map.GetCount()!=si_count) if(vabc_maps.GetCount()!=si_count)
return(nullptr); return(nullptr);

View File

@ -6,9 +6,9 @@ namespace hgl
{ {
namespace graph namespace graph
{ {
vulkan::VertexBuffer *SceneDB::CreateVBO(VkFormat format,uint32_t count,const void *data,VkSharingMode sharing_mode) vulkan::VertexAttribBuffer *SceneDB::CreateVBO(VkFormat format,uint32_t count,const void *data,VkSharingMode sharing_mode)
{ {
vulkan::VertexBuffer *vb=device->CreateVBO(format,count,data,sharing_mode); vulkan::VertexAttribBuffer *vb=device->CreateVBO(format,count,data,sharing_mode);
if(!vb) if(!vb)
return(nullptr); return(nullptr);