本文主要是介绍详解D3D/OpenGL光栅化(1),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
前言:Rasterizer做什么
本篇 简单地 讨论一个问题: 给出图元(三角形/线/点)的顶点坐标及颜色,DirectX 3D(D3D)/OpenGL(OGL)如何确定最终在屏幕上画出的结果?
从D3D Pipeline看[1],这些工作是由光栅化(Rasterizater)做的,光栅化是D3D/OGL Pipeline中关键的固定功能阶段,其前面的Shader经过基于Vertex/Patch/Geometry的处理后,以为图元基本单位,输出图元各顶点的位置坐标及各种属性(如颜色,纹理坐标等),交由Raster (1)确定图元覆盖到的所有屏幕像素(2)插值计算出这些像素的属性 。 Raster为这些像素触发像素着色器(Pixel Shader),将结果输出给像素着色器进一步处理。
一个例子
这里假设
(1)输入的顶点是屏幕坐标(严格讲,Raster还需要做透视除法及viewport变换才得到屏幕坐标,可认为Shader里完成了这两个步骤),且每个顶点只有Color一种属性;
这篇关于详解D3D/OpenGL光栅化(1)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!