improved PrimitiveCreater::CreateIBO.. functions for template
This commit is contained in:
parent
ac81e4f8f0
commit
02169963de
@ -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
|
||||
|
@ -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);
|
||||
|
Loading…
x
Reference in New Issue
Block a user