rename "VertexBuffer" to "VertexAttribBuffer"
This commit is contained in:
parent
e9eda440a9
commit
9e99db9c72
@ -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:
|
||||
|
||||
|
@ -36,7 +36,7 @@ private:
|
||||
|
||||
vulkan::Pipeline * pipeline =nullptr;
|
||||
|
||||
vulkan::VertexBuffer * vertex_buffer =nullptr;
|
||||
vulkan::VertexAttribBuffer * vertex_buffer =nullptr;
|
||||
|
||||
public:
|
||||
|
||||
|
@ -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;
|
||||
|
@ -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);
|
||||
}
|
||||
|
@ -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:
|
||||
|
||||
|
@ -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:
|
||||
|
||||
|
@ -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:
|
||||
|
@ -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:
|
||||
|
@ -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;
|
||||
vulkan::IndexBuffer * ibo;
|
||||
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
|
||||
|
@ -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);
|
||||
|
@ -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
|
@ -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
|
@ -36,7 +36,7 @@ class Sampler;
|
||||
class Memory;
|
||||
class Buffer;
|
||||
struct BufferData;
|
||||
class VertexBuffer;
|
||||
class VertexAttribBuffer;
|
||||
class IndexBuffer;
|
||||
|
||||
class CommandBuffer;
|
||||
|
@ -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
|
||||
{
|
||||
|
@ -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);}
|
||||
|
@ -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)
|
||||
{
|
||||
|
@ -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)
|
||||
{
|
||||
|
@ -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)
|
||||
|
@ -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);
|
||||
}
|
||||
|
@ -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})
|
||||
|
||||
|
@ -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;
|
||||
|
@ -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>
|
||||
|
||||
|
@ -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);
|
||||
|
||||
|
||||
|
@ -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);
|
||||
|
Loading…
x
Reference in New Issue
Block a user