about <<Learning Modern 3D Graphics Programming>>

来源:互联网 发布:apache tomcat教程 编辑:程序博客网 时间:2024/05/16 06:18
原文地址:http://www.arcsynthesis.org/gltut/About this Book.html

About this Book

 
3D图形硬件正在快速发展,这已经成为了计算机系统不可缺少的一部分。许多操作系统都会直接使用3D图形硬件,甚至需要一定程度的3D渲染硬件。在现今日益重要的移动终端领域,3D图形硬件都是这些低功耗设备的标准功能了。
 
  了解如何去充分使用这些硬件是一件很困难的事情,尤其是对那些刚接触这些领域的童鞋。
 
Why Read This Book?
    
 到目前为止,已经有很多教导图学的实体书,也有很多在线知识库,例如:维基百科啊、博客啊、教程啊、论坛啊。。。诸如此类。那么这本书能提供些什么是它们都不能提供的呢?
 
  可编程性。事实上,所有上述的资料都是教导初学者fixedfunctionality。这表现在:它会教导你一步步的去做,从而得到一个特定的渲染操作的结果。普遍认为这是教导新手图形程序猿使用【固定功能的管道|fixedfunction pipeline】最简单的方法。
 
  这个想法在某种程度是正确的,因为使用fixedfunctionality的方法是最容易做出一些东西来。这使得画出一些真实的图形更加容易。【固定功能的管道|fixedfunction pipeline】就像是一个自行车的辅助轮。
 
 这种方法存在一些弊端。第一,当程序猿遇到一些必须用到可编程方法来解决的图形问题时,用这种方法学习的许多东西就派不上用场了。可编程方法几乎抹杀了所有【固定功能的管道|fixedfunction pipeline】,所以用这种方法学到的知识很难向可编程方法转换。
 
  另外隐藏得更深的问题是,【固定功能的管道|fixed functionpipeline】给人一种错觉。程序猿可能认为自己很了解自己写的代码,事实上他们只是在导出复制黏贴而已。这导致编程就好像一些奇怪的仪式一样:你把这段代码放在某段代码前面,然后程序就这么跑起来了。
 
 要debug这些代码简直就是噩梦。因为程序猿根本不了解这些代码实际在做什么,他们无法从程序表现出来的问题来诊断出实际问题的所在。没有这种能力,debug起来就只能靠猜了。
 
 与此相反,你不很好的使用一套编程系统除非你真的充分了解它。学习图形硬件的编程就意味着要深入了解它并会遇到一大堆问题。这意味着起步会很慢很艰难,但是只要你挺过去了,你就能知道每一样东西到底是怎么运作的了。
 
  另外一个问题是,即使你充分了解【固定功能的管道|fixed functionpipeline】,它会让你专注在解决问题的特定办法,并限制你思考解决问题的思路。它鼓励你认为纹理就是图片,顶点数据就是纹理坐标,推广到颜色、位置等等。就性质而言,它限制了你的创造性和解决问题的能力。
 
  最后,fixedfunctionality一般不适用与移动终端上的图形系统。可编程性是图形硬件最重要的东西,在未来更是如此。
 
 这本书所提供的是初级水平的指导,但这些指导都被认为是进阶内容。它教导程序猿从没有任何基础的情况下开始图形编程。
 
 这本书也涉及到一些灰常重要但是又经常被遗忘或者是被认为是“进阶”的知识。这些“进阶”知识被忽视是因为它跟【固定功能的管道|fixedfunction pipeline】没有半毛钱关系。
 
 首先,这本书是教导大家怎么成为一个图形程序猿。因此,每当有机会,这本书会提供一些材料来鼓励读者去试试图形硬件究竟能做些什么新奇又有趣的事情。一个好的图形程序猿能把图形硬件看作是一堆能实现他们想法的工具,这本书就刚好鼓励大家来这么做。
 
 这本书并不是讲述图形API的书。虽然书中会用到OpenGL和出于需要会教导一些关于OpenGL的渲染概念,但是这本不是一本关于OpenGL的书。这本书的目的并不是要教导大家关于OpenGLAPI的使用。会有一部分OpenGL的功能在书中不会提到,因为这些功能跟本书的课程没有一点点关系。如果你已经知道关于图形的知识而且急需一本讲解OpenGL编程的书,这本书可能不适合你。
 
 这本书是教导大家怎么成为一个图形程序猿,但是不是在一个特定的图形范畴。本书尽量涉及到最全的3D渲染基础。所以如果你想程序一个游戏开发者,一个CAD程序的设计者,做一些计算机可视化的设计,或者其他相关的事情,这本书会成为你财富的一部分。
 
 这并不意味着这书会涉及到所有关于3D图形的东西。这本书尝试着提供一个对于你以后的3D图形研究有帮助的一个基础。
 
 这本书并不涉及到深度的优化。原因是深度的优化是一个进阶的话题。优化常常是与平台有关的,不同的硬件也会有所不同。也是跟指定的API有关的,不同的API有不同的优化需求。可能到处有会提到优化。。优化。。但是对于图形编程的初学者来说太复杂了。
 
What you need

   这本书是写给图形编程的初学者的;也适合那些对于【固定功能的管道|fixed functionpipeline】已经很熟悉但是想更多了解编程化渲染的童鞋。但是这本书并不适合那些编程初学者。
    
   我们认为你有能力阅读C和C++语言的代码。如果“helloworld!”就能代表你的C和C++的水平,那么或者在你继续前往渲染图片之前,需要写一些更多更实际的代码。3D图形渲染不是一个入门程序猿所做的事情;
    
   这些教程可以转化成其他编程语言。如果你能阅读C和C++的代码,那么有能力明白代码究竟在做些什么。那些描述代码究竟在做什么的文字也足够让你了解关于这些教程在说什么。
    
   所有关于3D渲染的讨论都需要数学知识,数学知识是3D图形的基础。我们认为你有基本的几何和代数知识。
    
   教程中也有涉及到一些关于图形化必须用到的进阶数学知识,但是你至少有基本的几何和代数的知识。线性代数的知识并不是必要的,当然如果你会那会很有帮助。
    
   书中教程所涉及到的代码都是使用OpenGL来作渲染的。你没有必要知道关于OpenGL,但是你必须有一个合适的编程环境来跑这些OpenGL的代码。特别指出,你会需要能跑OpenGL3.3的硬件。这意味着GeForce 8xxx 或者 Radeon HD-class的显卡是必须的,这些都被称为"Direct3D10"显卡,但是你不需要windows vista或者windows 7系统来使用这些进阶的OpenGL 特性。
    
Organization of This Book

   这本书分为几个主题。每个主题都包含了几个教程。每个教程都会涉及到几个相关的理论。在几乎所有情况下,每一个理论都会有一个Demo来展示。
    
   每个教程都是由将被讨论和展示的理论的概述开始。每个教程都是由回顾部分和词汇表作为结尾。回顾部分会解释在教程里面提到的理论,也会包含一些关于怎么玩这些源代码的一些建议;这会鼓励你更加深入的了解那些理论。如果教程中介绍到一些新的OpenGL函数或者一些OpenGL着色语言的函数,也会在回顾部分有解释。
    
   这是一本写给初级图形程序猿的书。图形是一个很大的话题,这本书也不可能涉及到每一个范畴。这本书也不会非常详细的探讨所有涉及到的技术。有时候同一个技术点会在后面的教程中再次提到,但是这还是不足以深入的探讨。因此,当一些技术点被介绍的是偶,在最后面会有一个地方会粗略地探讨一些更高级的技术。这会帮助你自己来深入研究图形编程,也会让你知道应该怎么样在网上或者在其他书上找资料。

http://www.arcsynthesis.org/gltut/index.html



0 0
原创粉丝点击