学了那么长时间,才学会跑起来.My Ogre,动起来. 第一,还是要把框架搭起来,这里我们用到双端队列deque,前面已经简单介绍过,头文件如下: #include "ExampleApplication.h" #include "deque" using namespace std; 第二,是我们的监听器,继承至ExampleFrameListener,构造函数我们使用五个参数,分别为渲染窗口,摄像机,场景节点,实体,行走路线上的位置坐标. MoveDemoLis…
一.核心对象介绍1.命名空间 Ogre3d使用了C++的特性--命名空间,可以防止命名混淆.使用方法也简单,using namespace Ogre;或者直接在使用时加上“Ogre::”的前缀,如Ogre::Vector3等.2.Root对象 ---根对象 根(Root)对象是OGRE系统的入口,该对象在程序一开始时创建,最后结束时销毁.可用来配置系统,还可以获得系统中其他对象的指针,比如场景管理器(SceneManager),绘制系统(RenderSystem),资源管理器(Resource…
以上一节为蓝本,这里增加一点难度,添加了四个节点,增加键盘控制移动速度,使用bool变量控制是否移动. 第一,要增加键盘控制,那就使用OIS::KeyListener,在监听器里添加一个父类KeyListener,添加成员变量并初始化 其中构造函数的ExampleFrameListener(win,cam,true,false);第三个参数改为true,表示使用带缓冲的键盘输入. MoveDemoListener(RenderWindow *win,Camera *cam,SceneNode *…
五.阴影 阴影是渲染一个真实场景的重要组成部分,它可以给场景中的物体提供更加真实的感觉,同时还可以帮助用户更好的了解对象间的空间关系. 启用阴影: 缺省情况下,阴影是关闭的,开启方式如下: 1.建立场景时就设置阴影技术有效  -- mSceneMgr->setShadowTechnique(SHADOWTYPE_STENCIL_ADDITIVE); 2.创建一个或者多个光源 3.关闭那些不需要投射阴影的物体,可以用物体的aetCastShadows(false)来实现. 4.设置投影的最远距离,…
资源管理 可管理的资源有: 材质资源:在.material文件中包含的材质脚本定义(技术.通路.纹理单元等数据的定义). 模型资源:经过优化的二进制网格模型文件,扩展名为.mesh.包含几何信息和一些动画数据. 骨骼资源:经过优化的二进制骨骼文件,扩展名为.skeleton.包含骨骼动的数据以及相应帧动画的信息. 字体资源:字体的配置信息,扩展名为.fontdef的文件,其中包括TrueType字体的引用以及其他字体配置数据. GPU程序资源:在.program中对GPU程序的声明信息,与材质脚…
以上一节为基础,废话不多说. 首先新增一个节点,用于比较显示 //新增一个节点 ent = mSceneMgr->createEntity("Quad"); ent->setMaterialName("MyMaterial9"); node = mSceneMgr->getRootSceneNode()->createChildSceneNode(,,)); node->attachObject(ent); 我们改变下纹理坐标显示的比例…
这一节以基础16为基础,练习材质的使用. 第一,看看框架 //material #include "ExampleApplication.h" class TutorialApplication : public ExampleApplication { protected: public: TutorialApplication() { } ~TutorialApplication() { } protected: void createScene(void) { } }; #inc…
这一节,练习一下前几次学习的内容,功能很简单,就是建立两个不同的场景管理器,当按下键盘上某个键时切换镜头. 基本框架不变,这个监听器继承了两个父类,一个是我们的老朋友ExampleFrameListener,另一个我们也刚学过KeyListener. 好吧,开始. 首先我们声明一个宏,#define CAMERA_NAME "SceneCamera" ,这是我们要使用的摄像机常量,下面要多次使用. 然后我们定义两个全局函数, void setupViewport(RenderWindo…
这一章练习一下光源的使用,光源分为三种:点光源,聚光源,有向光.具体内容前面说过,这里就不解释了. 继续在上一章的程序的基础上实现. 1.创建摄像机(Camera) createCamera()函数是继承自ExampleApplication的虚函数,把它实现了. class Example1:public ExampleApplication { public: //..........其他代码 virtual void createCamera() { mCamera = mSceneMgr…
物体着色的基础 --- 四种不同光照作用 1.环境反射 近似的模拟了场景中的全局辐射,也就是用来近似模拟所有光在场景中不断散射的结果.材质中有相应的属性来代表这种环境反射颜色. 2.漫反射 这种颜色是接收到直接从光源发射的光之后产生的,“漫反射”和现实中的意思一样,就是描述光被物体反射到多个方向的效果. 3.放射 指的是自发光物体所拥有的颜色.具体意思就是放射光只能照亮自己却不能对周围任何物体产生影响.这种光很奇怪的,现实中没有的. 4.镜面反射 描述了物体对被光照后的“高光”效果.这个也比较抽…