如何使用ogremain.dll做游戏

2010年1月 专题开发/技术/项目大版内专家分月排行榜第二2009年12月 专题开发/技术/项目大版内专家分月排行榜第二2009年11月 专题开发/技术/项目大版内专家分月排行榜第二2009年10月 专题开发/技术/项目大版内专家分月排行榜第二2009年9月 专题开发/技术/项目大版内专家分月排行榜第二2009年8月 专题开发/技术/项目大版内专家分月排行榜第二2009年7月 专题开发/技术/项目大版内专家分月排行榜第二
2010年3月 专题开发/技术/项目大版内专家分月排行榜第三2010年2月 专题开发/技术/项目大版内专家分月排行榜第三
2010年10月 专题开发/技术/项目大版内专家分月排行榜第三
本帖子已过去太久远了,不再提供回复功能。Mogre学习系列(5)如何使用Ogre建立游戏程序
Mogre学习系列(5)如何使用Ogre建立游戏程序
发布时间: 16:55:07
编辑:www.fx114.net
本篇文章主要介绍了"Mogre学习系列(5)如何使用Ogre建立游戏程序",主要涉及到Mogre学习系列(5)如何使用Ogre建立游戏程序方面的内容,对于Mogre学习系列(5)如何使用Ogre建立游戏程序感兴趣的同学可以参考一下。
&&&&& 前面我们已经学会了如何使用Mogre来建立一个3D游戏,但是那是建立在一个叫做MogreFramework.dll的基础上。如果我们想直接利用Ogre的封装API来创建游戏,又是如何做到呢?
1.首先需要遵循一定的创建顺序。具体来说,包括一下步骤:
&CreateRoot();&DefineResources();&SetupRenderSystem();&CreateRenderWindow();&InitResources();&CreateScene();&StartRenderLoop();
下面我们分别解释。
1)CreateRoot
还记得我们之前说的,在Ogre的世界里面,对象的组织是按照node的方式来建立的,因此,一开始我们需要建立一个root node。例如:
mRoot = new Root();
2) DefineResources
创建完root node之后,我们需要加载游戏中所用到的资源。我们一般将资源路径信息存放在config文件中。因此需要先解析config文件的内容,例如:
&&&&&&&&&& ConfigFile cf = new ConfigFile();&&&&&&&&&& cf.Load("resources.cfg", "/t:=", true);&&&&&&&&&& ConfigFile.SectionIterator seci = cf.GetSectionIterator();&&&&&&&&&& String secName, typeName, archN&&&&&&&&&& while (seci.MoveNext())&&&&&&&&&& {&&&&&&&&&&&&&& secName = seci.CurrentK&&&&&&&&&&&&&& ConfigFile.SettingsMultiMap settings = seci.C&&&&&&&&&&&&&& foreach (KeyValuePair&string, string& pair in settings)&&&&&&&&&&&&&& {&&&&&&&&&&&&&&&&&& typeName = pair.K&&&&&&&&&&&&&&&&&& archName = pair.V&&&&&&&&&&&&&&&&&& ResourceGroupManager.Singleton.AddResourceLocation(archName, typeName, secName);&&&&&&&&&&&&&& }&&&&&&&&&& }
注意,上面的代码只是解析了资源文件的路径和类别,但是并没有将资源加载到内存中。
3)SetupRenderSystem
之后我们需要设置Render System。例如究竟是使用DirectX3D还是OpenGL,是否全屏和显示模式等。例如:
RenderSystem rs = mRoot.GetRenderSystemByName("Direct3D9 Rendering Subsystem");&&& // or use "OpenGL Rendering Subsystem"mRoot.RenderSystem =rs.SetConfigOption("Full Screen", "No");rs.SetConfigOption("Video Mode", "800 x 600 @ 32-bit colour");
4)CreateRenderWindow
设置完RenderSystem之后,我们需要创建RenderWindow,就是用来显示我们以后创建游戏对象的视窗。例如:
mRoot.Initialise(true, "Main Ogre Window");
如果我们想要将RenderWindow嵌在Windows Form里面,代码如下:
& NameValuePairList misc = new NameValuePairList();&&&&&&&&&& misc["externalWindowHandle"] = handle.ToString();&&&&&&&&&& RenderWindow win = mRoot.CreateRenderWindow("Main RenderWindow", 800, 600, false, misc);
&5)InitializeResourceGroups
在2)中我们制定了资源的路径和group信息,但是我们并没有将资源加载到内存中。为了实现资源加载,我们需要调用:
ResourceGroupManager.Singleton.InitialiseAllResourceGroups();
这样,我们在游戏中需要的纹理和贴图就可以使用了,否则就会看到一个没有白色的空壳。(如果是一个3D物体的话)
6)CreateScene
准备工作已经就绪,我们可以开始创建游戏场景了。包括SceneManager, Entity, SceneNode, Camera, Light, Viewport等。具体内容可以查看学习系列的(1)-(4)节。
7)StartRenderingLoop
游戏场景已经建立完毕,之后我们可以启动Rendering了。通过功能,游戏场景会被渲染和显示出来。
&&&&&&&&&& mRoot.StartRendering();
当然了,如果我们希望每次渲染frame的时候都能够添加自己的控制逻辑,可以使用
while (mRoot.RenderOneFrame())
& // Do other things here, such as sleep for a short period of time
注意,这里面有一个重要的topic没有涵盖,就是Game Input System。通常我们可以使用.
示例代码:
using System.Collections.G
using System.Windows.F
using System.D
namespace Tutorial05
static class Program
[STAThread]
static void Main()
OgreStartup ogre = new OgreStartup();
ogre.Go();
class OgreStartup
Root mRoot =
float ticks = 0;
public void Go()
CreateRoot();
DefineResources();
SetupRenderSystem();
CreateRenderWindow();
InitResources();
CreateScene();
StartRenderLoop();
void CreateRoot()
mRoot = new Root();
void DefineResources()
ConfigFile cf = new ConfigFile();
cf.Load("resources.cfg", "/t:=", true);
ConfigFile.SectionIterator seci = cf.GetSectionIterator();
String secName, typeName, archN
while (seci.MoveNext())
secName = seci.CurrentK
ConfigFile.SettingsMultiMap settings = seci.C
foreach (KeyValuePair&string, string& pair in settings)
typeName = pair.K
archName = pair.V
ResourceGroupManager.Singleton.AddResourceLocation(archName, typeName, secName);
void SetupRenderSystem()
if (!mRoot.ShowConfigDialog())
throw new Exception("The user canceled the configuration dialog.");
//// Setting up the RenderSystem manually.
//RenderSystem rs = mRoot.GetRenderSystemByName("Direct3D9 Rendering Subsystem");
// or use "OpenGL Rendering Subsystem"
//mRoot.RenderSystem =
//rs.SetConfigOption("Full Screen", "No");
//rs.SetConfigOption("Video Mode", "800 x 600 @ 32-bit colour");
void CreateRenderWindow()
mRoot.Initialise(true, "Main Ogre Window");
//// Embedding ogre in a windows hWnd.
The "handle" variable holds the hWnd.
//NameValuePairList misc = new NameValuePairList();
//misc["externalWindowHandle"] = handle.ToString();
//mWindow = mRoot.CreateRenderWindow("Main RenderWindow", 800, 600, false, misc);
void InitResources()
TextureManager.Singleton.DefaultNumMipmaps = 5;
ResourceGroupManager.Singleton.InitialiseAllResourceGroups();
void CreateScene()
SceneManager mgr = mRoot.CreateSceneManager(SceneType.ST_GENERIC);
Camera cam = mgr.CreateCamera("Camera");
mRoot.AutoCreatedWindow.AddViewport(cam);
Entity ent = mgr.CreateEntity("ninja", "ninja.mesh");
mgr.RootSceneNode.CreateChildSceneNode().AttachObject(ent);
cam.Position = new Vector3(0, 200, -400);
cam.LookAt(ent.BoundingBox.Center);
mRoot.FrameEnded += new FrameListener.FrameEndedHandler(FrameEnded);
ticks = Environment.TickC
void StartRenderLoop()
mRoot.StartRendering();
//// Alternate Rendering Loop
//while (mRoot.RenderOneFrame())
// Do other things here, such as sleep for a short period of time
bool FrameEnded(FrameEvent evt)
if (Environment.TickCount - ticks & 5000)
版权声明:本文为博主原创文章,未经博主允许不得转载。
一、不得利用本站危害国家安全、泄露国家秘密,不得侵犯国家社会集体的和公民的合法权益,不得利用本站制作、复制和传播不法有害信息!
二、互相尊重,对自己的言论和行为负责。
本文标题:
本页链接:最全游戏开发流程_游戏开发吧_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:24,977贴子:
最全游戏开发流程收藏
献给群里的兄弟美女们一片文章针对人群如下:1.有游戏开发热情。2.日后准备从事客户端游戏开发的。3.还不太了解如何去该学什么。4.已经工作了早明白了可以不用看耽误你的时间。A:首先什么是客户端呢?游戏客户端,游戏客户使用端,相对于游戏服务端的另一端,服务端是为游戏数据库服务的,而客户端就是游戏数据使用端。现有大型游戏几乎都有其客户端,用来连接服务端而为玩家服务。B:游戏客户端程序员的工作有哪些?从大的方面说,主要包括:游戏客户端框架设计,游戏网络数据包收发机制、游戏逻辑处理、用户界面处理等。具体细分,又包括:场景管理、资源管理、角色管理、游戏对象管理、渲染、声音、UI管理等主要模块。C:什么样的人适合学习游戏客户端程序?有一定的程序设计基础,思维清晰,善于沟通,对游戏逻辑比较了解。 游戏客户端程序员是否有其他的发展方向,有哪些?D:游戏客户端程序是一项综合性比较高的工作,要求程序员对计算机、数学、物理、图形学、甚至人文科学等都要有较深的理解。一个优秀的游戏客户端程序员应能在上述范畴的领域有所建树注意特别注意:本群2网络游戏开发和3D网络游戏开发资源和学习流程。2网络游戏开发学习流程如下:在学习下面东西之前应该对计算机体系、操作系统、软件工程、英语文档学习能力等有了解不用太过所以不单独写出,不过同人学习知识不同,至于后面的知识学的过程的理解程度是和其他基础是有很多关系的,以后靠自己发现在弥补。1.游戏程序设计部分包括知识:游戏程序设计C++程序设计入门基本数据类型和输入输出流程控制语句数组、指针和引用、函数程序结构和书写规范结构体和联合体、类继承与多态异常处理与程序调试。2.算法与数据结构 算法分析数据结构基本算法、STL 的概念与使用静态库与动态库、XML 库的使用、设计模式、计算机图形学3.Win32 程序设计Win32 程序设计Windows 程序入门Windows 消息、GDI 绘图、游戏工具与MFC网络编程基础、熟悉DirrectX或OpenGL,熟悉windows API;其中游戏框架搭建设计的内容为Windows编程基础创建简单游戏引擎、图形图像绘制、游戏UI程序设计。4.游戏数学和智能应用游戏数学和智能应用游戏中的坐标系矢量、矩阵几何碰撞物理模拟人工智能与寻路算法,可以去学习下人工智能那门课程。5.2D 游戏技术与应用2D 游戏技术概论游戏地图系统GUI 系统战斗系统设计任务系统优秀的声音引擎 BASSCocos2D-X 引擎Box2D 物理引擎5.熟悉网络编程和一款脚本语言,不用太多先学懂一门在说。6.一定要有客户端游戏开发经验,自己可以找项目做。7.游戏BGM与音效播放,游戏画面生成与控制涉及的内容精灵的创建和使用精灵的管理及双缓冲技术、帧动画实现、碰撞检测技术、图层管理技术。U:3D网络游戏开发课程体系:1.建议先学2d在学3d游戏程序设计部分:初识DirectXDirect3D世界的基本元素基本图形绘制Direct3D与数学基础光照、纹理摄像机模型基础、渲染状态2.算法与数据结构三维游戏场景实现技术网格模型高级技术场景管理技术粒子系统3D声音系统Directlnput和点选模板缓冲区和体积阴影多线程技术高级网络通信编程、数据库HLSL语言入门、地图编辑器3.win32程序设计部分主流3D引擎介绍OGRE游戏引擎OGRE系统结构CEGUI系统Lua脚本4.游戏工具的开发MFC程序框架、MFC菜单、工具栏状态栏常用控件和视图的使用以及派生基于单文档与多文档的MFC应用程序开发,DX在MFC中的应用,数据的压缩和文件格式
游戏开发培训首选火星时代,专业的游戏制作培训机构,培养游戏精英人才.火星时代游戏开发培训,毕业名企抢着要,月薪8000小意思.再也不用担心就业问题!
楼主能推荐下新人简单游戏开发的软件么
登录百度帐号推荐应用
为兴趣而生,贴吧更懂你。或游戏开发与设计_图文_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
游戏开发与设计
上传于|0|0|文档简介
&&Ogre 粒子系统 爆炸与火焰
阅读已结束,如果下载本文需要使用1下载券
想免费下载本文?
定制HR最喜欢的简历
下载文档到电脑,查找使用更方便
还剩6页未读,继续阅读
定制HR最喜欢的简历
你可能喜欢游戏编程要学什么?_游戏开发吧_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:24,977贴子:
游戏编程要学什么?收藏
游戏编程要学什么,要清楚这个问题,首先我们要先来了解下游戏编程是什么。游戏编程指利用计算机编程语言,如C编程语言、C++、java等,编写计算机、手机或游戏机上的游戏。目前流行的游戏编程语言为C++编程语言,目前流行的游戏编程接口为DirectX9.0,还有OpenGL、SDL(Simple Direct Media Layer)等。现在手机上玩的游戏分为Android与IOS两种不同平台,分别是用eclipse/My Eclipse和x code。现在也流行一些跨平台的编程引擎,例如cocos2d-x、unity 3D等。
游戏编程要学什么,我们来看看完美空间的游戏编程的课程,完美空间的游戏编程课程分为2D游戏编程课程和3D游戏编程课程。2D游戏编程课程从C++基础开始,囊括了C++程序设计、Win32程序设计、算法与数据结构、cocos2d等游戏或者应用软件开发的全部流程和核心技术。通过实际项目的开发锻炼,把所有的知识点融汇到项目的制作过程中,每一个项目的功能点都会扩展新的知识内容。 3D游戏编程课程在完成C++的基础之上,开始学习3D游戏技术基础、Unity3D、模型处理等方面的三位计算机图形学基础知识。然后继续学习3D场景管理,高级模型优化技术,粒子系统,阴影等高级技术,还要学习目前流行的高效的开源3D游戏引擎OGRE。
由此我们可以看出,2D游戏编程课程是基础,如果是零基础的学员,小编建议先从2D游戏编程课程学起,然后再晋升到3D游戏编程课程的学习,基础一定要打好,不然即使学习3D游戏编程也难以学会,学编程c++基础非常重要,所以各位同学一定要学好c++基础。完美空间的2D游戏编程课程从c++基础教起,让你打好基础,为以后学习3D游戏编程打下良好的基石。
完美空间在动漫游戏培训领域已有10余年的教学经验,数以万计的学生成功就业,实现了自己的动漫游戏梦想。课程由浅入深,提前适应动漫游戏公司的制作需求,零基础,能够全面掌握动漫游戏制作的全流程。
登录百度帐号推荐应用
为兴趣而生,贴吧更懂你。或}

我要回帖

更多关于 用ogre设计游戏 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信