ogre模型绘制

上传人:子 文档编号:43403198 上传时间:2018-06-06 格式:DOC 页数:4 大小:46.50KB
返回 下载 相关 举报
ogre模型绘制_第1页
第1页 / 共4页
ogre模型绘制_第2页
第2页 / 共4页
ogre模型绘制_第3页
第3页 / 共4页
ogre模型绘制_第4页
第4页 / 共4页
亲,该文档总共4页,全部预览完了,如果喜欢就下载吧!
资源描述

《ogre模型绘制》由会员分享,可在线阅读,更多相关《ogre模型绘制(4页珍藏版)》请在金锄头文库上搜索。

1、OGRE 简析(二)-OGRE 模型绘制“伟大航路,我把世界上的一切都放在了那里,有种的话就去领取吧”这是 OGRE 中文网的一则广告,我想,无论作为 OGRE 的学习者还是漫漫人生的一名旅人,这句话都是非常不错的激励语。放在这,是否能够让你隐约看到属于自己的新世界?前沿在上次完成框架解析之后,主要是参照 OGRE_3D_1.7_Beginners_Guide 这本书,对 OGRE 的应用有了一个大简单而全面的了解,对其中场景、节点和相机等,以及模型、动画和粒子都有了一个概念的认知,这本书对于初学来说,还是值得一读的。还有就是Pro_OGRE_3D_Programming 这本,网上推荐页不错

2、,不过还没来得及看。看完这本书,打算结合书中的应用场景来学习一下实现,毕竟会调用接口和了解内部处理机制上还是有不少差别的,而自然,第一个例子就是 Sinbad 水手模型了。OGRE 中显示一个模型很简单Ogre:Entity* ent = mSceneMgr-createEntity(“MyEntity“,“Sinbad.mesh“);mSceneMgr-getRootSceneNode()-attachObject(ent);简单的两句话,一个模型就可以马上显示出来,下面进入本章的主题,模型绘制过程解析。OGRE 中,这个过程主要分三个阶段模型文件加载纹理映射模型渲染备注:红色部分是可以讨论

3、的技术,只做引用,想不全,只列出关键词文件加载对于 OGRE 应用来说,添加一个含有模型的节点,即上面代码内容,主要就是为了在程序中加载模型,其后的显示均是在 OGRE 内部实现渲染,并不需要用户做其他工作。添加模型,就不得不提一下场景的概念:”场景组织就像一个舞台,需要摄影机、灯光、服饰、道具和演员” ,对于场景中的 Object,大致分为 moveable 和 immobeable两类,而模型属于前者。在 OGRE 中MovableObjectCollectionMap mMovableObjectCollectionMap 用来维护对象,其本身算是一个二维字典,先负责 Entity、Ca

4、meras类型,然后再细化到每一类型下面的实体,以 name 作为索引。对象的创建主要由MovableObject* MovableObjectFactory:createInstance(const String /开始使用纹理缓冲glBindTexture(GL_TEXTURE_2D, texID); /选择当前使用的纹理缓冲glBindBufferARB(); / OGRE 中使用 vbo 方式绘图glVertexPointer();/ 设置顶点数组的指针为顶点缓存glBindBufferARB();glTexCoordPointer();/ 设置顶点数组的指针为纹理坐标缓存glDraw

5、Elements(); /绘制glDisable()vbo 高速绘图(截取网上,OGRE 中在 GLHardwareVertexBuffer 类中封装初始化阶段,而在绘制的时候避免差异化方式)初始化阶段:1. glGenBuffersARB(1, /生成一个句柄2. glBindBufferARB(GL_ARRAY_BUFFER_ARB, nVBOVertices); /声明该句柄为一个 vbo 句柄,并选择之3. glBufferDataARB(GL_ARRAY_BUFFER_ARB, sizeof(vertices), vertices,GL_STATIC_DRAW); /将顶点集上传至s

6、erver 端使用阶段:1. glEnableClientState(GL_VERTEX_ARRAY); /开始使用 vbo2. glBindBufferARB(GL_ARRAY_BUFFER_ARB, nVBOVertices); /选择当前使用的 vbo3. glVertexPointer(3, GL_FLOAT, 0, BUFFER_OFFSET(0); /指定 vbo 顶点格式4. glDrawArrays( GL_TRIANGLES, 0, g_pMesh-m_nVertexCount ); /画吧5. glDisableClientState(GL_VERTEX_ARRAY); /停止使用 vbo收尾阶段:1. glDeleteBuffersARB(1, /删除句柄,同时删除 server 端顶点缓冲对比对比OGRE 中充分考虑了硬件优化 内存全部加在 模型可复用性

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 生活休闲 > 科普知识

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号