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

1. 已经安装了Ogre工程向导,VS2010 新建项目就可以看得OGRE的工程模版了,建立一个空项目,由于安装了Orge工程助手,所以免去了麻烦的配置过程(安装Orge工程助手步骤可以参考 Ogre1.8.1+VS2010环境配置):

图片


2. 首先在项目中建立一个OgreDemo1.c和OgreDemo1.h文件。分别填入如下代码:

OgreDemo1.h:

#ifndef _TutorialApplication_
#define _TutorialApplication_
#include "ExampleApplication.h"
class OgreDemo1 : public ExampleApplication
{
protected:
public:
OgreDemo1()
{
}
~OgreDemo1()
{
}
protected:
void createScene(void)
{
}
};
#endif

OgreDemo1.c

#include "OgreDemo1.h"

#if OGRE_PLATFORM == OGRE_PLATFORM_WIN32
#define WIN32_LEAN_AND_MEAN
#include "windows.h"

INT WINAPI WinMain( HINSTANCE hInst, HINSTANCE, LPSTR strCmdLine, INT )
#else
int main(int argc, char **argv)
#endif
{
	// Create application object
	OgreDemo1 app;

	try {
		app.go();
	} catch( Exception& e ) {
#if OGRE_PLATFORM == OGRE_PLATFORM_WIN32 
		MessageBoxA( NULL, e.getFullDescription().c_str(), "An exception has occurred!", MB_OK | MB_ICONERROR | MB_TASKMODAL);
#else
		fprintf(stderr, "An exception has occurred: %s ",
			e.getFullDescription().c_str());
#endif
	}

	return 0;
}

编译,运行,会出现一个黑窗口,啥都木有!


3. 往窗口添加一个对象

直接在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,现在编译运行你的程序,就可以看到我们伟大的机器人界面了。 




例子很简单,代码页不多,就4行。我们还是一步一步来分析吧。

首先我们上一个项目中的OgreDemo1类继承自ExampleApplication类,我们之所以什么都没有做就能创建一个窗口,就是因为ExampleApplication为我们实现了。

首先我们打开ExampleApplication类,可以看到包含了如下几个成员变量(加入少许注释)

//ogre的程序"根"任何ogre程序都会有改对象
Root *mRoot;
//摄像机镜头
Camera* mCamera;
//场景管理器
SceneManager* mSceneMgr;
//对于每一帧进行处理的类
ExampleFrameListener* mFrameListener;
//渲染窗口
RenderWindow* mWindow;
//资源文件的路径字符串
Ogre::String mResourcePath;

这里的ExampleFrameListener类,如果你暂时还不清楚是做什么的,不要紧,后面我们慢慢介绍。

 

  • 3
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值