这一节,练习一下前几次学习的内容,功能很简单,就是建立两个不同的场景管理器,当按下键盘上某个键时切换镜头. 基本框架不变,这个监听器继承了两个父类,一个是我们的老朋友ExampleFrameListener,另一个我们也刚学过KeyListener. 好吧,开始. 首先我们声明一个宏,#define CAMERA_NAME "SceneCamera" ,这是我们要使用的摄像机常量,下面要多次使用. 然后我们定义两个全局函数, void setupViewport(RenderWindo…
用文件来记录 Ogre 系统初始化.运行.结束以及调试信息.使用日志便于我们调试程序.Ogre 日志系统由两个类组成:Log 类与 LogManager. 1.Log类 Log 类的一个对象对应于一个日志文件,log类中含有成员函数logMessage()负责向文件中填入信息. void logMessage(const String& message, LogMessageLevel lml = LML_NORMAL); // 第一个参数就是要写入的信息,第二个参数代表这条信息的重要程度,分三…
一.核心对象介绍1.命名空间 Ogre3d使用了C++的特性--命名空间,可以防止命名混淆.使用方法也简单,using namespace Ogre;或者直接在使用时加上“Ogre::”的前缀,如Ogre::Vector3等.2.Root对象 ---根对象 根(Root)对象是OGRE系统的入口,该对象在程序一开始时创建,最后结束时销毁.可用来配置系统,还可以获得系统中其他对象的指针,比如场景管理器(SceneManager),绘制系统(RenderSystem),资源管理器(Resource…
场景管理器的使用 最常使用的坐标系统空间(同时也是Ogre程序所能提供的)即是世界空间(World).父节点空间(Parent)以及本地空间(Local). 1.世界空间 就是物体所存在的地方,当我们把一个模型放进世界模型里面去,那么它就有了一个世界坐标,这个世界坐标是用来标记世界中不同的模型所处的位置的.在世界空间里,世界的中心就是远点(0,0,0).而在ogre中,这个也相当于场景根节点的位置,所以世界空间在ogre中也可以理解为“相对于场景根节点”.世界空间也意味着用全局的X,Y,Z坐标.…
这一节练习一下手动创建实体,用到了对象(ManualObject) 第一,依然是模板 #include "ExampleApplication.h" class Example1 : public ExampleApplication { public: void createScene() { } protected: private: }; #include <windows.h> INT WINAPI WinMain( HINSTANCE hInst, HINSTAN…
前几天设置天空盒时一直出问题,现在问题终于解决了,问题来的莫名其妙,走的也莫名其妙. 第一,还是框架,我们依然使用ExampleApplication文件,框架如下 #include "ExampleApplication.h" class TutorialApplication : public ExampleApplication { protected: public: TutorialApplication() { } ~TutorialApplication() { } pr…
这一章练习一下光源的使用,光源分为三种:点光源,聚光源,有向光.具体内容前面说过,这里就不解释了. 继续在上一章的程序的基础上实现. 1.创建摄像机(Camera) createCamera()函数是继承自ExampleApplication的虚函数,把它实现了. class Example1:public ExampleApplication { public: //..........其他代码 virtual void createCamera() { mCamera = mSceneMgr…
资源管理 可管理的资源有: 材质资源:在.material文件中包含的材质脚本定义(技术.通路.纹理单元等数据的定义). 模型资源:经过优化的二进制网格模型文件,扩展名为.mesh.包含几何信息和一些动画数据. 骨骼资源:经过优化的二进制骨骼文件,扩展名为.skeleton.包含骨骼动的数据以及相应帧动画的信息. 字体资源:字体的配置信息,扩展名为.fontdef的文件,其中包括TrueType字体的引用以及其他字体配置数据. GPU程序资源:在.program中对GPU程序的声明信息,与材质脚…
建立自己的Ogre程序 一直以来都是使用ExampleApplication.h来写程序,现在来看看它到底有什么神奇的地方. 首先,我们新建一个win32空项目 然后配置环境 最后新建define.cpp.define.h.main.cpp  具体过程如下 第一,在define.h中包含头文件,这里需要Orge.h文件,然后添加如下代码 #include "Ogre.h" class MyApplication { public: MyApplication(); ~MyApplica…
BSP(binary-space partitioning) Scene Manager(二叉空间分割)场景管理器比较适合用于室内场景. 第一,添加框架代码如下 #include "ExampleApplication.h" class Example1 : public ExampleApplication { public: void createScene() { } protected: private: }; #include <windows.h> INT WI…