ogre研究之第一个程序(二)

OGRE之第一个程序 首先,此程序运行在 OGRE1.9SDK+VS2012环境 阅读详情

接续(一)

首先,我们要分析的就是Root类,使用Ogre的程序所需要作的第一件事情就是实例化一个Root对象。如果没有这个对象,你就无法调用(除了日志管理以外)的任何一个功能。Root类的构造函数接受一些符串对象的参数,这些字符代表着不同作用的文件名称。

Root * root = new Root();     
Root * root = new Root("plugins.cfg");      
Root * root = new Root("plugins.cfg", "ogre.cfg");     
Root * root = new Root("plugins.cfg", "ogre.cfg", "ogre.log");     
Root * root = new Root("", "");

上面列出了一些不同的方法来创建Root实例,这里面任何的方法都能单独的正确执行。参数也是系统所默认的值(“plugins.cfg”, “ogre.cfg”, “ogre.log”——当你没有填写参数的时候,系统就认为采用了默认的这些值)。

plugins.cfg:插件,Ogre中所谓的插件就是符合Ogre插件接口的代码模块,比如场景管理(SceneManager)插件和渲染系统(RenderSystem)插件等。在启动的Ogre时候,他会载入plugins.cfg配置文件来查看有哪些插件可以被使用。下面是一个plugins.cfg文件例子

# Defines plugins to load     
    
# Define plugin folder     
PluginFolder=.     
    
# Define plugins     
Plugin=RenderSystem_Direct3D9_d     
Plugin=RenderSystem_GL_d     
Plugin=Plugin_ParticleFX_d     
Plugin=Plugin_BSPSceneManager_d     
Plugin=Plugin_CgProgramManager_d     
Plugin=Plugin_PCZSceneManager_d.dll     
Plugin=Plugin_OctreeZone_d.dll     
Plugin=Plugin_OctreeSceneManager_d
其中PluginFolder用于定义这些插件存在的位置(路径),  这里使用“.”,表示需要在“\”或者“/”(即根目录)。在某些平台上可以不使用“.”直接使用""(空白),ogre照样会在“\”或者“/”中去找。
而Plugin则说明了有哪些插件可以使用,但是需要注意,这些插件都没有后缀名。
这里需要注意:在“=”两边不能加入空格或者 Tab字符。
ogre.cfg则是一个属性配置文件,主要保存用户自定义的一些属性,即下图所示的界面的一些属性。

文件如下:

Render System=Direct3D9 Rendering Subsystem     
    
[Direct3D9 Rendering Subsystem]     
Allow NVPerfHUD=No     
Anti aliasing=None     
Floating-point mode=Fastest     
Full Screen=No     
Rendering Device=Mobile Intel(R) 945 Express Chipset Family     
VSync=No     
Video Mode=800 x 600 @ 32-bit colour     
sRGB Gamma Conversion=No     
    
[OpenGL Rendering Subsystem]     
Colour Depth=32    
Display Frequency=N/A     
FSAA=0    
Full Screen=No     
RTT Preferred Mode=FBO     
VSync=No     
Video Mode=1024 x 768    
sRGB Gamma Conversion=No 
相信这里就不用多解释,大家都明白了。
Ogre.log :日志文件,用于输出一些调试信息等,比如下代码:
LogManager::getSingletonPtr()->logMessage("*** Initializing OIS ***")
就会在 Ogre.log文件中输出"*** Initializing OIS ***"信息。
另外需要说明得就是FrameListener接口了,当Ogre渲染每一帧的开始和结束的时候会回调FrameListener接口的方法,其中主要包括如下两个渲染方法。

class ExampleFrameListener : public FrameListener{     
public:     
    bool frameStarted (const FrameEvent &evt);     
    bool frameEnded (const FrameEvent &evt );     
};     
    
bool ExampleFrameListener::frameStarted (const FrameEvent &evt){     
    //在每一帧画面渲染前     
    return true;     
    
}     
bool ExampleFrameListener::frameEnded (const FrameEvent &evt ){     
    //在每一帧画面渲染后     
    return true;     
} 
所以我们就可以根据需要来实现这两个方式,实现渲染。 
注意:在新的版本中frameRenderingQueued方法基本上取代了frameStarted,所以本例中我们就是用了frameRenderingQueued,一般在这个函数中都需要检测各种输入设备的情况,以进行相应的处理。
最后,当我们在程序中调用mRoot->startRendering();方法时,就告诉ogre,我们需要开始渲染了。ogre就会开始渲染。也正是ExampleApplication类中的go方法,所做的,初始化(setup)完成之后就开始渲染(mRoot->startRendering())。
之所以有了这两个类,上一篇中我们才可以不写任何代码就可以构建一个窗口,那么本节内容,我们要显示模型当然就很简单了。
直接在OgreDemo1类的createScene方法中来实现,
1:设置环境光,首先需要为整个场景设置环境光,这样才可以看到要显示的内容,通过调用setAmbientLight函数并指定环境光的颜色就可以做到这些。指定的颜色由红、绿、蓝三种颜色组成,且每种色数值范围在 0 到 1 之间。

//设置环境光       
mSceneMgr->setAmbientLight( ColourValue( 1, 1, 1 ) )
2:创建一个 Entity (物体),通过调用 SceneManager 的 createEntity 方法来创建
//创建一个物体     
Entity *ent1 = mSceneMgr->createEntity( "Robot", "robot.mesh" );  
变量 mSceneMgr 是当前场景管理器的一个对象,createEntity 方法的第一个参数是为所创建的实体指定一个唯一的标识,第二个参数 "robot.mesh" 指明要使用的网格实体,"robot.mesh" 网格实体在 ExampleApplication 类中被装载。这样,就已经创建了一个实体。
3:还需要创建一个场景节点来与它绑定在一起。既然每个场景管理器都有一个根节点,那我们就在根节点下创建一个场景节点。
//创建该物体对应的场景节点     
SceneNode *node1 = mSceneMgr->getRootSceneNode()->createChildSceneNode( "RobotNode" ); 
首先调用场景管理器的 getRootSceneNode 方法来获取根节点,再使用根节点的 createChildSceneNode 方法创建一个名为 "RobotNode" 的场景节点。与实体一样,场景节点的名字也是唯一的。 
4:最后,将实体与场景节点绑定在一起,这样机器人(Robot)就会在指定的位置被渲染:
//将该物体和场景节点关联起来     
node1->attachObject( ent1 ); 

ok,现在编译运行你的程序,就可以看到我们伟大的机器人界面了。 
最后说一下,在创建Root对象时的文件一般会和程序最后的可执行文件在同一目录(因为有人说找不到这些文件)。祝你成功!

补充一下: 
需要将sdk下的media文件夹拷贝到该项目目录下,因为里面存放了一些资源文件,本文中的机器人模型也在其中。

Ogre程序加载mesh文件原理 <br />创建模型实体 <br />Entity* entObject = mSceneMgr->createEntity(“object”, “ogrehead.mesh”);<br />createEntity() (创建实体) 在当前场景中创建一个实体实例并返回它的对象指针,作为 SceneManager 类的一个成员函数,它有两个重载:<br />Entity * Ogre::SceneManager::createEntity (<br />const String & entityName, 阅读详情

相关推荐

安装Ogre3D

Ogre3d学习笔记—— 安装Ogre 3D,展示如何取得装配Ogre 3D 目标: * 下载并安装Ogre 3D引擎 * 配置好Ogre 3D引擎的开发环境 * 用Ogre 3D引擎构建第一个场景   下载并安装Ogre 3D引擎 1.打开http://www.ogre3d.org/download/sdk.的链接 2.下载合适的安装包。如果你对要下载哪个正确的安装包而

—— 然 之 8646

OGRE学习系列三:基础教程1 你的第一个场景

教程介绍:         第一节教程将包含构建OGRE场景的一些基础要素。首先需要关注的就是SceneManager,SceneNode,和Entity。一个实体(Enitity)就是以三维网格表示的任何东西。一个场景节点(SceneNode)用来连接目标到场景中,场景管理器(SceneManager)组织管理所有的内容,它跟踪场景中的实体和节点,并决定如何显示他们。         我们从

8806

Ogre源码编译及HelloWorld程序

Ogre 3D是一个成熟,稳定,可靠,灵活,跨平台,而且拥有丰富功能实时3D图形库,首先介绍Ogre源码编译(跟直接安装Ogre-SDK不一样).  首先下载下面三种组件: 1.源码地址:http://www.ogre3d.org/download/source :OGRE1.8.1 for windows,这里是下载源码,而不是SDK 2.源码依赖项dependcy:http://

zhangkun77的专栏 1570

Ogre学习教程:Ogre第一个程序

1. 已经安装了Ogre工程向导,VS2010 新建项目就可以看得OGRE的工程模版了,建立一个空项目,由于安装了Orge工程助手,所以免去了麻烦的配置过程(安装Orge工程助手步骤可以参考 Ogre1.8.1+VS2010环境配置): 2. 首先在项目中建立一个OgreDemo1.c和OgreDemo1.h文件。分别填入如下代码: OgreDemo1.h:

小熊不去实验室 1万+

Ogre学习记录

  1: 设计初衷它设计初衷是完全跨平台的。抽象的接口隐藏了平台相关的细节。它设计初衷是大幅度支持扩展的。支持多种场景类型,独立出平台和3D接口限制。2: 基本类结构关系Roo:对象为一切的入口,它负责创建Ogre的所有基础元素,三大基础元素大致包括:场景管理器,绘制系统,资源管理器。场景管理器:场景节点,动态对象。资源管理器:资源组管理,资源管理渲染模块:硬件缓冲

英雄王之路 4979

OGRE基础教程1(上)

 简介:本教程基于Ogre Wiki上的Basic Tutorial系列,并依据笔者使用的vs2005+sp1+OgreSDK1.4.3开发环境简化整理而来,其中穿插着笔者自己的理解。这是教程的第一部分,也是我的学习笔记。正文:凡是翻译过几篇技术类文章的人都深知从头至尾忠实重现作者的原意是一件多么令人头疼的事情。当我从诸多曾经许诺要翻译的文章中爬出来的时候,我决定这次不做那样一个“傻子”,重写

leexuany的专栏 1万+

Ogre学习笔记(二)创建第一个OGRE程序

创建第一个OGRE程序 1.       建立一个新的win32控制台应用程序,选择空的项目。名字自己随便取,我这里取FirstOgreProgram 2.       在工程里新建一个源文件命名为main.cpp 如下右键单击之后如图操作: 3.       在main.cpp中输入以下内容 int main (void) { return 0;

simplezju的学习笔记 2481

OGRE与Qt的结合(一)----使用OGRE渲染QWidget

最近几天开始重新学习Ogre,这次从源码编译了Ogre2.1,编译过程基本跟Ogre1.8.1类似,连第三方依赖库都是用的官网推荐的以前版本的,此处不多说了,网上有很多教程,现在给出下载连接。          Ogre2.1的源码:  https://bitbucket.org/sinbad/ogre/branch/v2-1          Dependencies: https://bi

jidny的专栏 5731

《Ogre一步一步学开发》 三、第一个Ogre 1.12 程序

三、第一个Ogre 1.12程序 Ogre1.7-1.9均为32位系统开发软件,网上存在大量Ogre教程均是以32位为例进行讲解的。从1.10开始,Ogre进入64位,开发环境的改变造成教程文章的缺失,本人本着边搜集,边整理的原则,以Ogre1.12.1SDK为例制作本教程。操作系统为 Windows 10 专业版,Microsoft Visual Studio 2017开发环境。 下载Ogre...

StudyOgre的博客 1519

避坑指南:汇川SV660N配合SOEM时,PDO映射与CiA402状态机那些容易出错的地方

本文深入解析汇川SV660N伺服驱动与SOEM主站在PDO动态映射和CiA402状态机切换中的常见问题,提供实战代码和调试技巧。重点解决PDO配置时序、状态机转换同步等关键难点,帮助工程师避免典型错误,实现稳定通信与控制。

weixin_30653023的博客 498

ICCV 2025 | 哈工大、清华等提出首个双曲学习框架:HLFormer,革新局部相关视频检索

离原点越远,代表的语义越具体(部分)。现有方法大多在传统的欧几里得空间中对视频和文本进行建模,但这往往会导致对视频内在层次结构的错误表示,从而影响检索的准确性。通过UMAP对学习到的帧嵌入进行可视化(如下图),可以观察到,来自同一时刻的视频帧在嵌入空间中聚集在一起,清晰地展示了模型对时序关系的捕捉能力。下图的双曲空间可视化进一步证实了模型的层次建模能力:离原点越近的点,代表的语义层级越高、粒度越粗糙,反之亦然。:既然文本查询描述的是视频的一部分,那么在几何表示上,文本的嵌入向量应该从属于视频的嵌入向量。

我爱计算机视觉 1077

ogre研究之第一个程序

版权申明:http://yarin.iteye.com/blog/453262   上一篇我们介绍了如何搭建开发环境,并创建了一个空白的窗口程序。   这里我们主要是实现在程序中装载一个简单的模型并显示出来。   首先看一下效果吧,(模型就是ogre例子中的robot.mesh),如下:   例子很简单,代码页不多,就4行。我们还是一步一步来分析吧。   首先我们上一个项目中的...

Yarin's Blog™ 253

【研路导航】重庆大学计算机保研面试真题分享交流

在保研的道路上,面试是非常重要的一环。轻保研提供了成功保研到重庆大学的学长的计算机保研面试的部分真题及详细解答!Q 快速排序和合并排序:快速排序(quicksort) 和合并排序(merge sort) 两种方法都将输入的待排序序列划分为2个子序列,并且递归地对所得的两个子序列分别排序。请阐述快速排序及合并排序两种算法之间的主要区别。

gradlight的博客 1587

ogre研究之第一个程序(一)

第一次发送超过字数了,被迫剪成两篇! 上一篇我们介绍了如何搭建开发环境,并创建了一个空白的窗口程序。 这里我们主要是实现在程序中装载一个简单的模型并显示出来。 首先看一下效果吧,(模型就是ogre例子中的robot.mesh),如下: 例子很简

Yarin's Blog™ 1219

使用 EasyExcel 实现 百万级数据导入导出

在项目开发中往往需要使用到数据的导入和导出,导入就是从Excel中导入到DB中,而导出就是从DB中查询数据然后使用POI写到Excel上。大数据的导入和导出,相信大家在日常的开发、面试中都会遇到。很多问题只要这一次解决了,总给复盘记录,后期遇到同样的问题就好解决了。好啦,废话不多说开始正文!1.如此大批量数据的导出和导入操作,会占用大量的内存实际开发中还应限制操作人数。2.在做大批量的数据导入时,可以使用jdbc手动开启事务,批量提交。

houxian1103的博客 2699

从零玩转显示屏:手把手教你用Arduino驱动SPI屏幕(附引脚定义图)

本文提供了一份详尽的Arduino驱动SPI屏幕的入门指南。从SPI接口的核心引脚定义(如DC、RESET)与RGB接口的区别讲起,手把手指导硬件连接与软件库配置,并最终通过一个天气显示器实战项目,帮助读者掌握驱动SPI屏幕、显示RGB色彩内容的核心技能。

weixin_29189987的博客 131

Ogre学习笔记(一)

Ogre学习笔记(一) 2012-1-30 Kagula 概要 记录Ogre学习过程中要注意的地方。我的学习环境是 [1]WinXPSP3(简中版) [2]VS2008SP1(英语版) [3] boost 1.48 [4] Ogre 1.7.4 [5] CMake 2.8.7 为方便学习和调试,本文档中生成的库和程序是以Debug方式编译和运行。 正文 建立Ogre开发环境

lee353086的专栏 2097

迈德威视相机调用( 基于 Linux系统+ OpenCV )

迈德威视相机调用( 基于 Linux系统+ OpenCV )前言一、登录迈德威视官网,下载官方SDK二、代码调用与视频帧处理( 基于 OpenCV )总结 前言     此博客记录了迈德威视工业相机在 Linux 系统下的代码调用及其环境配置,通过 OpenCV 对视频帧进行处理。   一、登录迈德威视官网,下载官方SDK      迈德威视官网 : http://www.mindvision.com.cn/     1. 进入官网后,在服务支持中选择软件下载。    2. 选择Linux系统S.

kkkkkk0729的博客 5678

【Ogre编程入门与进阶】第五章 Ogre初步

转载请说明出处! http://blog.youkuaiyun.com/zhanghua1816/article/details/8087373 在这一章中,我们会通过一些简单通俗的介绍,并结合一些例子,向读者展现一些Ogre3D简单的功能和使用方法。在这一章中,我们不会讲解太复杂的Ogre功能,笔者认为在本书的最开始介绍的过于复杂不仅会让读者一头雾水,更会让读者对Ogre的学习望而却步,所以,不

Everything is possible 8289

基于YOLOv8的表面裂痕等缺陷检测:深度学习与UI界面的实践

本文详细介绍了如何使用YOLOv8进行表面裂痕等缺陷检测,并结合图形用户界面展示检测结果。通过YOLOv8的强大能力,我们可以实现高效、准确的表面缺陷检测,提升工业产品的质量控制水平。未来,随着深度学习技术和数据集的不断发展,表面缺陷检测的精度和速度将不断提升,应用领域也将进一步拓展。希望本文的实践能够为深度学习在工业检测领域的应用提供一些启示。

YOLO 549

scratch经典游戏主题源码分享,包含了20多款经典游戏

经典游戏案例:1、360度角度射击游戏 2、捕鱼达人 3、超级马里奥 4、超级玛丽 5、吃豆人相关 6、穿着喷气背包的海龟 7、大鱼吃小鱼 8、俄罗斯方块 9、飞机大战 10、愤怒的小鸟 11、黄金矿工 12、节奏大师 13、连连看 14、迷宫游戏 15、跑酷游戏 16、扫雷 17、水果忍者 18、坦克大战 19、推箱子 20、消除泡泡 21、保卫萝卜 22、植物大战僵尸

IT_Scratch的博客 1万+

OGRE HelloWorld——MiniSample

OGRE的ExampleApplication比较繁琐,这里演示一个精简的例子。没有进行任何3D对象的创建。

shaoxiaoning的专栏 3151

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

上一篇: ogre研究之第一个程序(一)
下一篇: 第一次拆开Mac Book,被逼的!
yarin
博客等级 码龄17年 35粉丝 68原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值