(本系列文章由pancy12138编写,转载请注明出处:http://blog.youkuaiyun.com/pancy12138)
在上一篇文章中,我们讲了一个简单的3D渲染管线的工作流程,也就是计算机是如何描述并绘制出一个3D游戏的。这些知识虽然并不能让大家现在就直接写出酷炫的3D画面,但是这是打开思维的第一步,一旦我们了解了3D渲染管线的工作原理,那么之后的各个细节的讲解就会变的很容易。大家在之后设计程序的时候也就更容易理解每一步的原理和目的,从而更好的学习。如果大家在之前对数据结构和算法这些已经很熟悉的话,那么应该就会发现其实c,c++这些语言在或大型,或复杂的程序设计里面所起的作用就是一个沟通人与电脑的工具,我们大部分时间在处理的都是架构,算法等问题。那么图形学以及游戏程序设计也是一样的,在学习之前我们需要了解我们最终要达到的目的和效果是什么,为什么需要某部分的知识以及如何设计算法和架构才能达到这个效果。之后我们再来使用相关的API以及程序语言来进行实现就是水到渠成的事情了。
这一篇文章呢,主要是讲解在学习图形学之前,大家需要至少了解一些的必要知识。(这也就是说,学习这些知识还是需要一些基础知识的deth,如比如你要是c语言都写的比较吃力的话就得先补补基础),那么必要的知识到底需要多少呢。其实并不算很多,基本上大家大一学的课程都掌握的比较熟练的话就算是可以了,下面是我认为大家需要提前了解的部分:
1,至少要熟悉一种程序语言,3D游戏开发除了脚本部分以外基本上CPU的部分都是用C++来开发的(像unreal连脚本都是C++的),所以我们这个教程也是以C++作为开发语言的。那么大家需要对C++熟悉多少呢.........其实最好的情况是大家能够轻松的使用c++完成各种复杂的数据结构,并且能够很好地架构一些中小型的系统(几百几千行的那种就可以了)因为大家回头学起来就会发现,相比于学校里面的小型程序,3D游戏的程序随便写写工程量就会很大,而且随着学习的深入还会附带一大堆复杂的算法,如果大家之前语言基础不是很好的话会在debug的过程中消耗大量的时间,而且众所周知的是图形学程序出了问题一般还真不好找,因为你要调cpu的问题的同时还得关注着gpu上是不是有bug.
..........当然啦,即便大家现在不擅长c++也是可以直接上手学习的,还可以顺便训练训练C++,前期一般不会有太大的问题,只不过需要你有足够的毅力去挑战自我啦
。
2,要了解一些线性代数和基本的数学知识,因为整个图形学的程序设计基本上都离不开矩阵,向量,方程这些的......当然,刚开始学的话不需要了解太深,比如线代的话知道矩阵和向量的作用,了解求逆,转置,正交这些名词的意思就好了。我想大家大一的时候应该都会学习这些课吧,如果还没学到的话我在下面会将一些相关的知识讲一部分,也算是帮助大家理解。