ULRE/inc/hgl/graph/VertexAttribData.h

56 lines
3.0 KiB
C++
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#ifndef HGL_GRAPH_VERTEX_ATTRIB_DATA_INCLUDE
#define HGL_GRAPH_VERTEX_ATTRIB_DATA_INCLUDE
#include<hgl/graph/vulkan/VK.h>
namespace hgl
{
namespace graph
{
/**
* 顶点属性数据
*/
class VertexAttribData ///顶点属性数据
{
void *mem_data; ///<内存中的数据
protected:
const uint32_t dc_num; ///<每个数据成员数(比如二维坐标为2、三维坐标为3)
const uint32_t comp_stride; ///<单个成员数据字节数
uint32_t count; ///<数据个数
const uint32_t stride; ///<每组数据字节数
const uint32_t total_bytes; ///<字节数
VkFormat vk_format; ///<在Vulkan中的数据类型
void *mem_end; ///<内存数据区访问结束地址
public:
VertexAttribData(uint32_t c,uint32_t dc,uint32_t cs,VkFormat fmt):count(c),dc_num(dc),comp_stride(cs),stride(dc*cs),total_bytes(dc*cs*c),vk_format(fmt)
{
mem_data = hgl_malloc(total_bytes); //在很多情况下hgl_malloc分配的内存是对齐的这样有效率上的提升
mem_end = ((char *)mem_data) + total_bytes;
}
virtual ~VertexAttribData()
{
if(mem_data)
hgl_free(mem_data);
}
const VkFormat GetVulkanFormat ()const{return vk_format;} ///<取得数据类型
const uint32_t GetDataBytes ()const{return comp_stride;} ///<取得每数据字节数
const uint32_t GetComponent ()const{return dc_num;} ///<取数缓冲区元数据数量
const uint32_t GetCount ()const{return count;} ///<取得数据数量
const uint32_t GetStride ()const{return stride;} ///<取得每一组数据字节数
void * GetData ()const{return mem_data;} ///<取得数据指针
const uint32_t GetTotalBytes ()const{return total_bytes;} ///<取得数据字节数
};//class VertexAttribData
using VAD=VertexAttribData;
}//namespace graph
}//namespace hgl
#endif//HGL_GRAPH_VERTEX_ATTRIB_DATA_INCLUDE