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::VertexBuffer * vertex_buffer =nullptr;
vulkan::VertexBuffer * tex_coord_buffer =nullptr;
vulkan::VertexAttribBuffer * vertex_buffer =nullptr;
vulkan::VertexAttribBuffer * tex_coord_buffer =nullptr;
private:

View File

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

View File

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

View File

@ -36,7 +36,7 @@ vulkan::Renderable *CreateMeshRenderable(SceneDB *db,vulkan::Material *mtl,const
if(vertex_binding==-1)
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->Set(vertex_binding,vbo);
@ -47,7 +47,7 @@ vulkan::Renderable *CreateMeshRenderable(SceneDB *db,vulkan::Material *mtl,const
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);
}
@ -56,7 +56,7 @@ vulkan::Renderable *CreateMeshRenderable(SceneDB *db,vulkan::Material *mtl,const
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);
}
@ -65,7 +65,7 @@ vulkan::Renderable *CreateMeshRenderable(SceneDB *db,vulkan::Material *mtl,const
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);
}

View File

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

View File

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

View File

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

View File

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

View File

@ -2,7 +2,7 @@
#define HGL_GRAPH_RENDERABLE_CREATER_INCLUDE
#include<hgl/graph/SceneDB.h>
#include<hgl/graph/VertexBuffer.h>
#include<hgl/graph/VertexAttribBuffer.h>
namespace hgl
{
namespace graph
@ -19,6 +19,8 @@ namespace hgl
#undef VAN_DEFINE
}//namespace VertexAttribName
#define VAN VertexAttribName
/**
*
*/
@ -37,10 +39,10 @@ namespace hgl
uint32 vertices_number;
VertexBufferCreater * vb_vertex;
VertexAttribBufferCreater * vabc_vertex;
vulkan::IndexBuffer * ibo;
Map<AnsiString,VertexBufferCreater *> vb_map;
MapObject<AnsiString,VertexAttribBufferCreater> vabc_maps;
public:
@ -49,13 +51,25 @@ namespace hgl
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);
uint32 * CreateIBO32(uint count,const uint32 *data=nullptr);
virtual vulkan::Renderable * Finish();
};//class GeometryCreater
};//class RenderableCreater
}//namespace graph
}//namespace hgl
#endif//HGL_GRAPH_RENDERABLE_CREATER_INCLUDE

View File

@ -9,7 +9,7 @@
#include<hgl/graph/vulkan/VKSampler.h>
#include<hgl/graph/vulkan/VKTexture.h>
#include<hgl/graph/vulkan/VKMaterialInstance.h>
#include<hgl/graph/VertexBufferCreater.h>
#include<hgl/graph/VertexAttribBufferCreater.h>
#include<hgl/graph/RenderableInstance.h>
#include<hgl/type/ResManage.h>
namespace hgl
@ -26,7 +26,7 @@ namespace hgl
using SamplerID =int;
using TextureID =int;
class VertexBufferCreater;
class VertexAttribBufferCreater;
/**
* DB
@ -64,9 +64,9 @@ namespace hgl
public: //Create
vulkan::VertexBuffer *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::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(VkFormat format,uint32_t count,const void *data,VkSharingMode sharing_mode=VK_SHARING_MODE_EXCLUSIVE);
vulkan::VertexAttribBuffer *CreateVBO(VkFormat format,uint32_t count,VkSharingMode sharing_mode=VK_SHARING_MODE_EXCLUSIVE){return CreateVBO(format,count,nullptr,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); \
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
#define HGL_GRAPH_VERTEX_BUFFER_INCLUDE
#ifndef HGL_GRAPH_VERTEX_ATTRIB_BUFFER_INCLUDE
#define HGL_GRAPH_VERTEX_ATTRIB_BUFFER_INCLUDE
#include<hgl/type/Color3f.h>
#include<hgl/type/Color4f.h>
#include<hgl/type/RectScope.h>
#include<hgl/type/BaseString.h>
#include<hgl/graph/VertexBufferCreater.h>
#include<hgl/graph/VertexAttribBufferCreater.h>
#include<hgl/log/LogInfo.h>
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:
@ -25,7 +25,7 @@ namespace hgl
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();
access=0;
@ -35,7 +35,7 @@ namespace hgl
memcpy(mem_type,_data,total_bytes);
}
virtual ~VertexBufferBase()=default;
virtual ~VertexAttribBufferBase()=default;
void BufferData(const T *ptr)
{
@ -53,7 +53,7 @@ namespace hgl
{
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);
}
@ -69,7 +69,7 @@ namespace hgl
{
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);
}
@ -99,7 +99,7 @@ namespace hgl
{
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);
}
@ -109,16 +109,16 @@ namespace hgl
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:
using VertexBufferBase<T,1>::VertexBufferBase;
using VertexAttribBufferBase<T,1>::VertexAttribBufferBase;
virtual ~VertexBuffer1()=default;
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:
using VertexBufferBase<T,2>::VertexBufferBase;
using VertexAttribBufferBase<T,2>::VertexAttribBufferBase;
virtual ~VertexBuffer2()=default;
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:
using VertexBufferBase<T,3>::VertexBufferBase;
using VertexAttribBufferBase<T,3>::VertexAttribBufferBase;
virtual ~VertexBuffer3()=default;
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:
using VertexBufferBase<T,4>::VertexBufferBase;
using VertexAttribBufferBase<T,4>::VertexAttribBufferBase;
virtual ~VertexBuffer4()=default;
VkFormat GetDataType()const override;
@ -1135,7 +1135,7 @@ namespace hgl
* @param vecsize vec数量
* @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 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
#define HGL_GRAPH_VERTEX_BUFFER_CREATER_INCLUDE
#ifndef HGL_GRAPH_VERTEX_ATTRIB_BUFFER_CREATER_INCLUDE
#define HGL_GRAPH_VERTEX_ATTRIB_BUFFER_CREATER_INCLUDE
#include<hgl/graph/vulkan/VK.h>
namespace hgl
{
namespace graph
{
class VertexBufferCreater
/**
*
*/
class VertexAttribBufferCreater ///顶点属性缓冲区创建者
{
void *mem_data; ///<内存中的数据
@ -23,13 +26,13 @@ namespace hgl
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_end = ((char *)mem_data) + total_bytes;
}
virtual ~VertexBufferCreater()
virtual ~VertexAttribBufferCreater()
{
if(mem_data)
hgl_free(mem_data);
@ -42,7 +45,7 @@ namespace hgl
const uint32_t GetStride ()const{return stride;} ///<取得每一组数据字节数
void * GetData ()const{return mem_data;} ///<取得数据指针
const uint32_t GetTotalBytes ()const{return total_bytes; } ///<取得数据字节数
};//class VertexBufferCreater
};//class VertexAttribBufferCreater
}//namespace graph
}//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 Buffer;
struct BufferData;
class VertexBuffer;
class VertexAttribBuffer;
class IndexBuffer;
class CommandBuffer;

View File

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

View File

@ -9,7 +9,7 @@
#include<hgl/graph/vulkan/VKDeviceAttribute.h>
#include<hgl/graph/vulkan/VKSwapchain.h>
#include<hgl/graph/vulkan/VKRenderTarget.h>
#include<hgl/graph/VertexBufferCreater.h>
#include<hgl/graph/VertexAttribBufferCreater.h>
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,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);
VertexBuffer * 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(VkFormat format,uint32_t count,const void *data,VkSharingMode sharing_mode=VK_SHARING_MODE_EXCLUSIVE);
VertexAttribBuffer * CreateVBO(VkFormat format,uint32_t count,VkSharingMode sharing_mode=VK_SHARING_MODE_EXCLUSIVE){return CreateVBO(format,count,nullptr,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 * 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;}
const AABB &GetBoundingBox()const {return BoundingBox;}
bool Set(const int stage_input_binding, VertexBuffer *vb,VkDeviceSize offset=0);
bool Set(const AnsiString &name, VertexBuffer *vb,VkDeviceSize offset=0);
bool Set(const int stage_input_binding, VertexAttribBuffer *vb,VkDeviceSize offset=0);
bool Set(const AnsiString &name, VertexAttribBuffer *vb,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/VertexBuffer.h>
#include<hgl/graph/VertexAttribBuffer.h>
#include<spirv_cross/spirv_common.hpp>
VK_NAMESPACE_BEGIN
@ -9,7 +9,7 @@ Buffer::~Buffer()
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)
{

View File

@ -44,7 +44,7 @@ bool Device::CreateBuffer(BufferData *buf,VkBufferUsageFlags buf_usage,VkDeviceS
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);
@ -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))
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)

View File

@ -20,7 +20,7 @@ Renderable::~Renderable()
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);
@ -38,7 +38,7 @@ bool Renderable::Set(const int stage_input_binding,VertexBuffer *vbo,VkDeviceSiz
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);
}

View File

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

View File

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

View File

@ -3,7 +3,7 @@
#include<hgl/graph/SceneNode.h>
#include<hgl/graph/vulkan/VKRenderable.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/vulkan/VKMaterialInstance.h>

View File

@ -13,7 +13,7 @@ namespace hgl
render_obj =nullptr;
vertices_number =0;
vb_vertex =nullptr;
vabc_vertex =nullptr;
ibo =nullptr;
}
@ -33,25 +33,25 @@ namespace hgl
return(true);
}
VertexBufferCreater *RenderableCreater::Bind(const AnsiString &name)
VertexAttribBufferCreater *RenderableCreater::CreateVAB(const AnsiString &name)
{
if(!vsm)return(false);
VertexBufferCreater *vb;
VertexAttribBufferCreater *vabc;
if(vb_map.Get(name,vb))
return vb;
if(vabc_maps.Get(name,vabc))
return vabc;
const vulkan::ShaderStage *ss=vsm->GetStageInput(name);
if(!ss)
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)
@ -74,7 +74,7 @@ namespace hgl
{
const uint si_count=vsm->GetStageInputCount();
if(vb_map.GetCount()!=si_count)
if(vabc_maps.GetCount()!=si_count)
return(nullptr);

View File

@ -6,9 +6,9 @@ namespace hgl
{
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)
return(nullptr);