OGRE片段教程——共享顶点缓冲

  很多时候,你有一个由顶点和索引数据组成的mehs,你想把它们分成许多小块mesh,用于LOD或简单的视域剔除。比如地形数据。在这些情况下,通常需要将这些块索引到中心顶点和索引硬件缓冲区,以便在不必重新组织任何缓冲区的情况下改变块的数目。


meshs是通过引vertexData和IndexData数据结构来构建的。每个subMesh都引用自己的IndexData。VertexData可以通过Mesh::sharedVertexData链接到mesh(在这种情况下,它可以用于所有subMesh使用)。只需设置subMesh::useSharedVertices(True))。

OGRE跟踪每个mesh的VertexData和IndexData。当OGRE关闭时,仍然存活的mesh被迭代遍历销毁。因此,重要的是每个mesh的顶点数据和索引数据指向唯一的实例,否则OGRE将尝试销毁它们两次,导致一个难以跟踪的错误。

//定义索引数据

struct IndexDataArg
{
HardwareIndexBufferSharedPtr indexBuffer;
size_t indexCount;
size_t indexStart;
};

//定义顶点数据
struct VertexDataArg
{
HardwareVertexBufferSharedPtr vertexBuffer;
VertexDeclaration* decl; 
size_t vertexCount;
};


//创建共享缓存

SharingBuffer::SharingBuffer(void)
{
this->mIndexDataArg = this->CreateIndexDataArg();
this->mVertexDataArg = this->CreateVertexDataArg();


mesh = MeshManager::getSingleton().createManual("ColourCube","General");
SubMesh* sub = mesh->createSubMesh("sub");


sub->useSharedVertices = true;


mesh->sharedVertexData = new VertexData();
mesh->sharedVertexData->vertexDeclaration = this->mVertexDataArg->decl;
mesh->sharedVertexData->vertexCount = this->mVertexDataArg->vertexCount;


/// 设置vertexbuffer
VertexBufferBinding* bind = mesh->sharedVertexData->vertexBufferBinding;
bind->setBinding(0, this->mVertexDataArg->vertexBuffer);


// 设置submesh的indexData
sub->indexData->indexBuffer = this->mIndexDataArg->indexBuffer;
sub->indexData->indexCount = this->mIndexDataArg->indexCount;
sub->indexData->indexStart = 0;


/// Set bounding information (for culling)
mesh->_setBounds(AxisAlignedBox(-100,-100,-100,100,100,100));
mesh->_setBoundingSphereRadius(Math::Sqrt(3*100*100));
mesh->load();
}



  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
OGRE(O-O Graphics Rendering Engine) 使用指南________________________________________________________________1 作者_________________________________________________________________________ 6 序____________________________________________________________________________7 教程的目的_________________________________________________________________ 7 读者要求___________________________________________________________________ 7 教程的由来_________________________________________________________________ 7 OGRE简介___________________________________________________________________ 8 OGRE特点_________________________________________________________________ 8 效率特性__________________________________________________________________8 平台和3D API 支持________________________________________________________ 8 网格Meshes_______________________________________________________________ 8 场景特性__________________________________________________________________9 特效______________________________________________________________________9 其它特性__________________________________________________________________9 OGRE中的模块_____________________________________________________________ 9 OgreMain 模块____________________________________________________________ 10 SDL 平台管理模块________________________________________________________ 11 Win32 平台管理模块_______________________________________________________11 BSP 场景管理_____________________________________________________________11 文件系统插件_____________________________________________________________11 GuiElement 插件__________________________________________________________ 11 OctreeSceneManager 插件___________________________________________________ 11 ParticleFX 插件___________________________________________________________ 12 Direct3D7 渲染系统插件____________________________________________________12 Direct3D8 渲染系统插件____________________________________________________12 SDL 渲染系统插件________________________________________________________ 12 3ds2oof 工具______________________________________________________________12 3Dstudio Max 导出器_______________________________________________________12 位图字体创建工具_________________________________________________________12 Milkshape3D 导出器_______________________________________________________ 12 Python 接口______________________________________________________________ 13 XML 转换器______________________________________________________________13

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值