50 lines
1.7 KiB
C++
50 lines
1.7 KiB
C++
#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 |