improved PrimitiveCreater::CreateIBO.. functions for template

This commit is contained in:
hyzboy 2024-04-02 21:34:49 +08:00
parent ac81e4f8f0
commit 02169963de
2 changed files with 17 additions and 18 deletions

View File

@ -74,8 +74,23 @@ namespace hgl
bool WriteVAD(const AnsiString &name,const void *data,const uint32_t bytes); ///<直接写入顶点属性数据
uint16 * CreateIBO16(uint count,const uint16 *data=nullptr); ///<创建16位的索引缓冲区
uint32 * CreateIBO32(uint count,const uint32 *data=nullptr); ///<创建32位的索引缓冲区
template<typename T,IndexType IT>
T * CreateIBO(const uint count,const T *data=nullptr) ///<创建索引缓冲区
{
if(ibo)
return(nullptr);
ibo=db->CreateIBO(IT,count,data);
if(!ibo)
return(nullptr);
return (T *)ibo->Map();
}
uint8 * CreateIBO8 (uint count,const uint8 *data=nullptr){return CreateIBO<uint8 ,IndexType::U8 >(count,data);} ///<创建8位的索引缓冲区
uint16 * CreateIBO16(uint count,const uint16 *data=nullptr){return CreateIBO<uint16,IndexType::U16>(count,data);} ///<创建16位的索引缓冲区
uint32 * CreateIBO32(uint count,const uint32 *data=nullptr){return CreateIBO<uint32,IndexType::U32>(count,data);} ///<创建32位的索引缓冲区
virtual Primitive * Finish(const AnsiString &); ///<结束并创建可渲染对象
};//class PrimitiveCreater

View File

@ -89,22 +89,6 @@ namespace hgl
return true;
}
uint16 *PrimitiveCreater::CreateIBO16(uint count,const uint16 *data)
{
if(ibo)return(nullptr);
ibo=db->CreateIBO16(count,data);
return (uint16 *)ibo->Map();
}
uint32 *PrimitiveCreater::CreateIBO32(uint count,const uint32 *data)
{
if(ibo)return(nullptr);
ibo=db->CreateIBO32(count,data);
return (uint32 *)ibo->Map();
}
Primitive *PrimitiveCreater::Finish(const AnsiString &prim_name)
{
const uint si_count=vil->GetCount(VertexInputGroup::Basic);