ULRE/src/SceneGraph/Vulkan/VKPrimitiveData.h

50 lines
1.7 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.

#include<hgl/graph/VK.h>
VK_NAMESPACE_BEGIN
/*
1.截止2024.4.27根据vulkan.gpuinfo.org统计只有9%的设备maxVertexInputAttributes为16不存在低于16的设备。
9.0%的设备为28 - 31
70.7%的设备为32
9.6%的设备为64
由于我们暂时没有发现需要使用16个以上属性的情况所以这里暂定使用16。
(如果时间过去久远,可再次查询此值是否可改成更高的值,以及是否需要)
2.为何va_name使用char[][]而不是String以及动态分配内存
就是为了必避动态分配内存以及可以直接memcpy处理所以此处这样定义。
*/
class PrimitiveData
{
protected:
const VIL * vil;
VkDeviceSize vertex_count;
VABAccess *vab_access;
IBAccess ib_access;
public:
PrimitiveData(const VIL *_vil,const VkDeviceSize vc);
virtual ~PrimitiveData();
public:
const VkDeviceSize GetVertexCount ()const{return vertex_count;}
const int GetVABCount ()const;
const int GetVABIndex (const AnsiString &name)const;
VABAccess * GetVABAccess (const int index);
VABAccess * GetVABAccess (const AnsiString &name);
IBAccess * GetIBAccess (){return &ib_access;}
public:
virtual IBAccess * InitIBO(const VkDeviceSize index_count,IndexType it)=0;
virtual VABAccess *InitVAB(const AnsiString &name,const VkFormat &format,const void *data,const VkDeviceSize bytes)=0;
};//class PrimitiveData
PrimitiveData *CreatePrimitiveData(GPUDevice *dev,const VIL *_vil,const VkDeviceSize vc);
VK_NAMESPACE_END