4 Rendering pipeline 总结
从一个Vertex,加上Primitve变成Triangle,Triangle光栅化(Rasterizing)成很多的Pixel,Pixel再经过Raster operation之后进到framebuffer中。
这是一个适合平行化的结构,以Pixel operation为例,因为每个Pixel之间是独立的,因此我可以使用十条平行的Pixel operation管线,一次处理十个Pixel的数据。而这是Rasterizing算法的优点之一。
虽然稍微提到了些硬件,但是基本上目前介绍的Pipeline是很概念式的。它并没有限定要在什么样的硬件上完成。也没有限定是openGL pipeline或者是Direct3D pipeline。
事实上这些运算通通在CPU中完成也是可以的,只是效率的问题而已。笔者修过的Computer Graphic基础课程,其作业便是要将简单的3D pipeline实作出来(当然,不可以使用任何的library或API)。事实上以今日的CPU能力也能达到简单的Rendering效果(甚至没使用MMX、SSE3、SSE3等加速指令集)。 有了一个基础的Redering pipeline之后,我们可以进入下一部份的讨论:这个概念式的pipeline,要怎么转换为一个易于让程序设计者操作使用的pipeline?又有哪些地方是可以做硬件加速(Hardware Acceleration)的呢? 第一个问题的解答是API: OpenGL & Direct3D (当然,还有绝种的Glides..)。 第二个问题的解答,让我们从voodoo1代开始,直到G80与R600架构做个硬件巡礼。 API的发展与硬件的发展是息息相关的,因此这两个问题也可以说是一个问题,在接下来的章节中,我们将讨论这个问题的过去、现在,或许提到一些未来:)
|