没有合适的资源?快使用搜索试试~ 我知道了~
Pro_OGRE_3D_Programming
5星 · 超过95%的资源 需积分: 3 41 下载量 151 浏览量
2011-05-28
20:10:59
上传
评论
收藏 4MB PDF 举报
温馨提示
试读
240页
Pro_OGRE_3D_Programming 中文翻译版,值得你看,毕竟英文有点不好懂
资源推荐
资源详情
资源评论
1
Pro OGRE 3D Programming
中文翻译版本 0.2.0
原作者:Gregory Juker
译者:邸锐(免费打工仔)、李旭东
封面:好痛的大包
编辑:于明轩
2
相关法律
中华人民共和国著作权法
第二节 著作权归属
第十二条 改编、翻译、注释、整理已有作品而产生的作品,其著作权由改编
、翻译、注释、整理人享有,但行使著作权时,不得侵犯原作品的著作权。
第四节 权利的限制
第二十二条 在下列情况下使用作品,可以不经著作权人许可,不向其支付
报酬,但应当指明作者姓名、作品名称,并且不得侵犯著作权人依照本法享有的
其他权利:
(六)为学校课堂教学或者科学研究,翻译或者少量复制已经发表的作品,供
教学或者科研人员使用,但不得出版发行;
相关资源
资源网站: http://orzme.com
WiKi:http://Ogre3d.cn
BBS:http://bbs.gameres.com/showforum.asp?forumid=99
第一章 什么是 Ogre
3
Ogre 3D 是一个成熟,稳定,可靠,灵活,跨平台,而且拥有丰富功能实时 3D 图形库。
在这一章节中我们会介绍关于 Ogre 相关的一些基本概念,如果你已经了解的 API 和 SDK
这样的软件术语的话,你可以跳过下面的段落直接看下一章节的内容。要是还没有了解的话,
下面的一段文字会对你理解基本概念很有帮助。
Ogre 3D SDK
在具体讨论 Ogre3D SDK 概念之前,我们先简单介绍一下一些基本的概念,这有助于我
们展开具体 Ogre3D SDK 的讨论。其中最重要的两个概念是 API 和 SDK。
API 是 Application Programming Interface 的简称,中文的含义是应用程序编程接口。具体
含义指的是底层系统提供给上层应用程序的具体操作方法。应用程序通过调用操作系统的 API 而使
操作系统去执行应用程序的命令(动作)。在 Windows 系统中 API 是由核心的 DLL 库提供。
SDK 是软件开发包(Software Developers Kit)的简称。一般来说它是一套对系统底层
的服务的封装,并且提供了相应的 API 给应用程序使用。举例来说,如果你想要写一个
Microsoft Windows XP 上的应用程序,你就需要通过调用 Win32 的 API 来实现相应的功能,
这些 API 通常是隐式的,分别包含在 liruser32.dll,kernel32.dll 等等库里面。理论上,你可
以直接通过这些库(DLL)的接口来操作底层的一些技术实现。但是如果你决定使用由
Microsoft 提供的 Microsoft Platform SDK(简称 Microsoft SDK)来执行系统应用和服务会让
一切更容易。这个 SDK 提供给你一些包含文件和导入库来帮助你链接到系统底层接口。
提示:如果无法理解我所说的“包含文件”和“链接库”这些编程术语的含义,建议你先把
书放下,去研究一下他们的用法和用途。当使用仸何 SDK(当然包括 Ogre)编程的时候你
必项要了解这些基本概念。所以,在阅读下一段文字乊前,我建议你去查阅 Mirosoft 的
MSDN 网站(Visual Studio 中也会附带的 3 张 CD 戒者一张 DVD 的 MSDN 的离线版本。
戒者直接去看看在线版本 http://msdn.microsoft.com/library)。如果你是 Linux 使用者,
你更丌要高兴得太早。如果你丌懂得什么是-devel RPM 包,戒者根本丌知道为什么你需用
使用他,我建议你花贶些时间去 Red Hat 的网站(http://www.radhat.com/docs/)寻找
答案。
不论是操作系统(比如 Windows 或者 Linux)提供的系统级服务,还是其他的非系统级
服务以及应用(例如 NVIDIA 公司的 Cg 工具包),它们的 SDK 都提供了相应的包含文件和
链接库(在 Windows 上是.dll 文件,在 Linux 上面是被称为共享对象的.so 文件)。Ogre 是非
系统应用的一个典型的例子,它的 SDK 将提供给你包含文件以及用于程序发行版本
(Release)和调试版(Debug)的两个动态链接库。(其中调试版本的编译时没有进行任何
4
优化,而且附带地进行了内存检查以及变量的初始化。而发行版本编译时最大化的优化了程
序运行速度,通常这才是一个 3D 实时应用程序最需要的能力。)
联接动态库时候 Windows 系统有自己独有的特点:在动态链接对象文件(object file)
时额外需要一个文件(源代码中导出以用来得到函数名和类名等信息)辅助。具体点说,就
是在 Windows 平台执行程序的时候,为了链接 DLL文件,还额外需要链接一个导入库(import
library)。这个文件中包含了链接器(Visual Studio 中的 LINK.EXE)所需要的信息(其中的
信息包括用于运行时库链接到执行文件,以及寻找和处理外部资源等)。而对于 Linux 系统
而言并没有对这种文件的需求,这得益于 Linux 上共享对象载入器的设计,在链接时有能力
正确处理所需外部信息,从而动态库可以在链接时被正确引用。(这里只是跨平台程序众多
差异的一个。如果你对这些没什么兴趣,也没有必要去深究这些繁琐的问题。)差点忘了,
在 Windows 中静态库的扩展名也是 lib,这和动态库所需的导入库一样,具体链接的时候由
链接器来处理具体的应用。而在 Linux 中的静态库扩展名是另外的.a。如果你希望更多更深
入的了解静态库和动态库的相关知识和使用方法,可以去“谷歌(www.google.com)”或者
“百度(www.baidu.com)”上搜索相关的文章。
Ogre 3D(也可以只叫 Ogre,这本书里我会交替使用两个名字)让你可以在应用程序中采
用面向对象的方式来表现复杂 3D 的空间。事实上 Ogre 的全称 Object-Oriented Graphics
Rendering Engine 就是“面向对象图形渲染引擎”的意思,并且它确实严格做到了这个名称
的定义。
引擎这个术语暗示 Ogre 3D 为你的 3D 图形的应用程序提供了“强大的动力”,进而允
许你更多关注应用程序细节而不是一个 3D 场景的渲染过程。作为应用程序的中间件,Ogre
扮演了一个专注于处理了三维空间场景的角色。如果你熟悉 Direct3D 或者 OpenGL,你会知
道直接写一个图形程序需要多少代码,当你了解 Ogre 让你可以用很少量的代码来构建一个
完整的三维场景(也有用在其他的方面,我们将在之后的文章中介绍)的时候,你就会庆幸
有 Ogre 的存在。
面向对象是一个模糊的概念,经常被滥用和词不达意的使用。Ogre 的开发者们所理解
的面向对象的标准含义是:相对于过去把程序看成一些离散任务的集合,面向对象方法把程
序 看 成 一 些 互 相 协 作 对 象 的 集 合 的 方 法 。 详 细 一 点 的 说 法 可 以 参 考 维 基 百 科
(http://en.wikipedia.org/wiki/Object-oriented _programming)中所介绍的:“相对于从前人们
认为的“计算机程序是由计算机指令的序列所组成”这种传统看法,面向对象的计算机程序
是组合一系列独立的单元或者对象,使他们相互协作。每个对象能够接受消息,操作数据,
以及发送消息给其他对象。”面向对象设计(OOD)和面向对象编程(OOP)使编程更符合
人类的直观认识,因为它是以人类对世界的感知为基础。如果你不熟悉 OOD 或者 OOP 技
术和实践,你应该在深入了解 Ogre 之前去了解它们,因为我不想在这本书里过量提及什么
是 OOD 和 OOP。但知道它们确实有助于你了解 Ogre 的很多高级特性。如果你很喜欢享受
挑战性的学习,Ogre 对你将是非常好的战场。否则,建议你去 “亚马逊(Amazon.com)”
或者“互动出版网(www.china-pub.com)”,等网站去找到适合你的书来翻阅,也或者直接
去网上搜索教程。
它能够做什么?
5
图 1-1 中,展示了一个被用于在实时游戏和交互仿真中比较通用的体系结构。应用层
(Application layer)负责封装真正的计算机硬件,并包装产生了诸如系统计时器,HID(用
户接口)输入以及文件系统等等接口。逻辑层(Logic layer)负责保存仿真运行的规则和维
护状态,并对从应用层(application layer)传来的输入或者网络事件作出相应。最终所有这
些状态周期性的通过图象和声音等这些媒体输出设备来展示给用户。
图 1-1:典型的仿真/游戏结构框架
本书讨论的主题是其中视频图像部分:更准确地说,是 Ogre 3D 渲染库以及如何用它去
渲染图象。在 Ogre 3D 的名字中包含“3D”是很贴切的,因为那就是它所能做的所有事情。
它不能处理用户输入,不能管理你的游戏状态,不能做网络通讯,不能播放声音。它只是做
为一个 3D 渲染引擎被设计出来,并且那就是它唯一的应用。因为专业,所以它总是能够很
好的完成它本分的任务。(虽然 Ogre 引擎中也会包含比如输入系统等一些简单的实现,但官
方的说法一般是:这只是为了支持演示程序所提供的,不建议你在自己实际的应用中使用。
你需要在 Ogre 去中去寻找其他的库来完善你自己的工具箱。)
引擎特性
Ogre 几乎拥有了商业 3D 渲染引擎的全部特性,甚至在某些方面超越了它们。
·全面并同等的支持 OpenGL 和 Direct3D
·全面支持 Windows,Linux 以及 Mac OS X 平台
剩余239页未读,继续阅读
资源评论
- 东郭玉2014-07-02好书,对于我这个新手简直太适合了,绝对的好书
jinchen606
- 粉丝: 3
- 资源: 3
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功