COGRE3D程序设计教程.doc

  1. 1、本文档共8页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
C OGRE3D 程序设计教程 1 ? C++_OGRE3D_程序设计教程(1)2010-08-07 11:44第一章什么是Ogre 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的离线版本。或者直接去看看在线版本)。如果你是Linux使用者,你更不要高兴得太早。如果你不懂得什么是-devel RPM包,或者根本不知道为什么你需用使用他,我建议你花费些时间去Red Hat的网站()寻找答案。 不论是操作系统(比如Windows或者Linux)提供的系统级服务,还是其他的非系统级服务以及应用(例如NVIDIA公司的Cg工具包),它们的SDK都提供了相应的包含文件和链接库(在Windows上是.dll文件,在Linux上面是被称为共享对象的.so文件)。Ogre是非系统应用的一个典型的例子,它的SDK将提供给你包含文件以及用于程序发行版本(Release)和调试版(Debug)的两个动态链接库。(其中调试版本的编译时没有进行任何优化,而且附带地进行了内存检查以及变量的初始化。而发行版本编译时最大化的优化了程序运行速度,通常这才是一个3D实时应用程序最需要的能力。) 联接动态库时候Windows系统有自己独有的特点:在动态链接对象文件(object file)时额外需要一个文件(源代码中导出以用来得到函数名和类名等信息)辅助。具体点说,就是在Windows平台执行程序的时候,为了链接DLL文件,还额外需要链接一个导入库(import library)。这个文件中包含了链接器(Visual Studio中的LINK.EXE)所需要的信息(其中的信息包括用于运行时库链接到执行文件,以及寻找和处理外部资源等)。而对于Linux系统而言并没有对这种文件的需求,这得益于Linux上共享对象载入器的设计,在链接时有能力正确处理所需外部信息,从而动态库可以在链接时被正确引用。(这里只是跨平台程序众多差异的一个。如果你对这些没什么兴趣,也没有必要去深究这些繁琐的问题。)差点忘了,在Windows中静态库的扩展名也是lib,这和动态库所需的导入库一样,具体链接的时候由链接器来处理具体的应用。而在Linux中的静态库扩展名是另外的.a。如果你希望更多更深入的了解静态库和动态库的相关知识和使用方法,可以去"谷歌()"或者"百度()"上搜索相关的文章。 Ogre3D(也可以只叫Ogre,这本书里我会交替使用两个名字)让你可以在应用程序中采用面向对象的方式来表现复杂3D的空间。事实上Ogre的全称Object-Oriented Graphics Rendering Engine就是"面向对象图形渲染引擎"的意思,并且它确实严格做到了这个名称的定义。

文档评论(0)

shujukd + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档