回顾写整个渲染流水线

来源:互联网 发布:咖啡菜单设计软件 编辑:程序博客网 时间:2024/04/29 00:46

手写的CPU光栅化渲染流水线做了要三周,到今天终于算是完工了,共有三次大的版本,一次是顶点变化,导入的3DS模型的顶点变换到世界坐标系下,然后变换到摄影机坐标系下,最后通过投影变换和视口变换变换到屏幕上。看似过程很明确,而且整个过程其实就是设定几个矩阵,并且设定矩阵的几个参数就差不多了,可是因为数学知识的欠缺,这个理解的过程可没那么简单。第二个版本是给顶点插值出线框,并进行线框的纹理映射,虽然当初做得比较快,但后来才知道取得的图素是错误的。第三个版本写了一个深度缓冲区,用来写zbffer消隐算法。开始的时候线性插值深度,后来做了矫正。后来继续写了纹理映射,lighting,Gourand着色,phong shading,出现了很多问题,不得不写了个小的测试程序测试了很多的三角形。程序基本就实现了这些功能,并没有实现整个流水,以后再加!

收获了很多知识,有数学方面的,有图形学方面的,还有一些程序的测试方面的方法技巧:程序中用到了很多的宏开关,打印出了很多数据便于对照,专门拿出一个小三角形检验计算是否正确。算法上效率应该不高,设计上也出现了很多问题在后期加Gourand和phong的时候改动代码太大,很多地方都是重写,不过基本满足了资源和对象实例分开的原则,整个框架的结构还算明晰,而且解决了内存问题。

以前也写过小的游戏demo,完全不用去管如何去进行光栅化,给顶点,给法线,给贴图坐标,给颜色,固定顶点渲染像素渲染通道就全做出来了。不过要写出好的效果,用可编程的渲染通道就要麻烦了,很多原理都不懂写不出好的效果。而且估计以后就要从事图形方面的工作了,作为一个合格的图形程序员,理应把图形内部的原理搞得清楚一点,对以后新技术的学习和好的效果的研究总会有好处的。

整个程序设计的计算机图形学方面的算法原理不多,还有大量的知识体系有待建立。

原创粉丝点击