58 lines
2.2 KiB
C++
58 lines
2.2 KiB
C++
#ifndef HGL_GRAPH_VERTEX_ATTRIB_DATA_INCLUDE
|
||
#define HGL_GRAPH_VERTEX_ATTRIB_DATA_INCLUDE
|
||
|
||
#include<hgl/graph/VK.h>
|
||
namespace hgl
|
||
{
|
||
namespace graph
|
||
{
|
||
/**
|
||
* 顶点属性数据
|
||
*/
|
||
class VertexAttribData ///顶点属性数据
|
||
{
|
||
void *mem_data; ///<内存中的数据
|
||
|
||
protected:
|
||
|
||
VkFormat format;
|
||
|
||
uint32_t count; ///<数据个数
|
||
uint32_t total_bytes; ///<字节数
|
||
|
||
public:
|
||
|
||
VertexAttribData(uint32_t c,const VkFormat vf,const uint32_t t)
|
||
{
|
||
count=c;
|
||
format=vf;
|
||
total_bytes=t;
|
||
|
||
mem_data = hgl_malloc(total_bytes); //在很多情况下,hgl_malloc分配的内存是对齐的,这样有效率上的提升
|
||
}
|
||
|
||
virtual ~VertexAttribData()
|
||
{
|
||
if(mem_data)
|
||
hgl_free(mem_data);
|
||
}
|
||
|
||
const VkFormat GetFormat ()const{return format;} ///<取得数据类型
|
||
const uint32_t GetCount ()const{return count;} ///<取得数据数量
|
||
void * GetData ()const{return mem_data;} ///<取得数据指针
|
||
const uint32_t GetTotalBytes ()const{return total_bytes;} ///<取得数据字节数
|
||
};//class VertexAttribData
|
||
|
||
using VAD=VertexAttribData;
|
||
|
||
/**
|
||
* 根据格式要求,创建对应的顶点属性数据区(VAD)
|
||
* @param vertex_count 顶点数量
|
||
* @param vif 格式
|
||
*/
|
||
VAD *CreateVertexAttribData(const uint32_t vertex_count,const VertexInputFormat *vif);
|
||
//这个函数比较重要,就不搞成CreateVAD的简写了
|
||
}//namespace graph
|
||
}//namespace hgl
|
||
#endif//HGL_GRAPH_VERTEX_ATTRIB_DATA_INCLUDE
|