文档介绍:Forpersonaluseonlyinstudyandresearch;mercialuse薅3D游戏编程入门经典薁无忧书籍网虿芅如果熟悉了如何利用clr(公共语言运行库)编写代码后,在面临选择开发语言时,您可能已经知道了您的选择。产品的最新版本中,当编写托管代码时,可以使用4种语言:c#、、managedc++和j#。产品之外的第三方销售商处获得的其他语言,例如cobol或者fortran。羃芀尽管本书中将讨论的概念可以很容易地移植到任何完全兼容cls(通用语言规范)的语言,但实际的代码将仅包含所提到的前两种语言:即c#。本书中将仅使用c#代码。/downpage中下载本书配套的安装文件,获取相关代码。虿蚆在本章中,您将学****到:螅聿●螈肇●托管代码膃肂●ide袈膄●在命令行中编译托管代码袅袁●开发人员羈薅●游戏开发过程莃蚀●工具肈羆1.?之后,人们一直在尝试指出这种新“事物”到底是什么。根据microsoft公司的市场活动,人们知道它将对计算产生革命性作用。这是一个很宏远的目标,现在断言它是否能够完成目标还太早。但是,它正在一步步地向此目标努力。时,的哪个部分。microsoft公司发行的其他“产品”或“思想”都不具有如此多的不同形式。名字的是众多的产品、服务,甚至是概念,实际上是什么,是非常困难的。时,frameworksdk中可获得的新的开发语言和运行库。运行库。环境编写的应用程序所需要的所有东西。运行库由几部分组成。clr的部件驻留在gac(globalassemblycache)中。语言的编译器(c#、、vj#等等)。可以在图1-1中看到gac。薂蒁芈螇图1-代码的最常见误解之一是,代码是“解释执行的”,像java代码或者老的visualbasic运行库一样。事实上,编写的代码在执行前首先被编译。应用程序时,它被编译为一种中间语言(il,intermediarylanguage)。这种il实际上存储在可执行文件中或者已经创建的库中。芈羄il可能在两个位置中的某一处被编译为本机代码(nativecode)。在安装代码时,可以执行一个称为ngen(nativegeneration,即本机生成器)的进程。它将il直接编译为本机代码,并将所编译的本机代码存储在gac中的特定位置——本机程序集缓存(nativeassemblycache)中。假设在安装时没有编译代码,则代码在第一次执行前必须被编译。在应用程序启动期间,.net运行库中一种称为jit(justintime)编译器的特殊功能在后台执行编译工作。蚂罿在后一种情形中,因为发生在后台的编译工作,应用程序的启动时间将受到影响。当启动时间对应用程序非常重要时(例如正在编写游戏时),确保在安装阶段包含ngen步骤是比较明智的。但是,在这期间无法进行某些优化,而如果利用jit编译代码,则可以进行这些优化,因此如果启动时间不是很重要,运行库处理它所能够做的工作。莈莅蒄羂蒇在本书中将经常提到托管代码。在全书中使用的api被称为managed的directx,.net语言常被称为托管语言。术语“托管”运行库具有一个内置的内存管理器这一事实。螆袂在“过去”(只是几年前),使用c和c++编写代码的开发人员不得不自己进行内存管理。当不再需要已分配的内存空间时,必须将其释放,除非希望该内存被“泄漏”,内存泄漏将带来严重的性能问题。更糟糕的是因为直接处理指针,而它很容易破坏项目正在使用的内存。在很多情况下,这将导致很长时间的故障调试,因为通常实际看到出错的地方并不是内存初始被破坏的地方。螁薇人们认为c和c++语言难于掌握,主要是因为具有很多这种类型的问题。许多开发人员不愿意尝试c和c++,也是因为这个原因,他们尝试使用其他没有这些令人头痛问题的高级语言,例如visualbasic。尽管这些新语言具有易用易学的优点,但也具有一些缺点。它们的性能无法与c和c++语言相比,在大多数情况下显得特别慢。另外,因为底层操作系统是使用c++开发的,所以这些语言难以实现c++的所有功能。尽管可以使用它们处理很多非常好的工作,但是如果想要获得操作系统的所有性能和优势,只能依靠自己。运行库的第一个版本相比,.net的大多数内容都已经改变了。microsoft公司几乎完全重新设计了一种新的api,竭力确保开发人员关心的问题都会被解决。这种新的运行库必须易学易用,快速高效,并且不存在令人头痛的内存管理问题。在本书中,在这些方面的好处。薀蚇薈肂薃提示:ide中编写代码。编写游戏的需求,本身的需求,它是本书所选择的ide。图1-2003ide。应用程序所需要的所有工具。它不仅包括编写代码所需要的编辑器,而且还有其他大量功能,应用程序的开发变得容易。它的设计使得您能够方便地创建丰富的内容,如windows应用程序。它也具