渲染流水线(笔记)

《DirectX 12 3D游戏开发实战》
第一阶段:
输入装配阶段:
会从显存中读取几何数据(顶点和索引,vertex and index),在将他们装配为几何图元(三角形和线条这种构成图形的基本元素);
1)顶点
2)图元拓扑
在Direct3D中,通过一种名为顶点缓冲区的特殊数据结构,将顶点与渲染流水线绑定。顶点缓冲区利用连续的内存来存储一系列顶点。但是仅仅凭这一点并不能说明这些顶点究竟是怎么组成的几何图元。
通过指定图元拓扑来告知Direct3D如何组成利用顶点数据来表示几何图元。(在用户通过命令列表修改图元拓扑之前,所有绘制调用都会沿用当前设置的图元拓扑方式)。
3)点列表:
当使用点列表拓扑时,所有的顶点都将在绘制调用的过程中被绘制成一个单独的点;
4)线条带
当使用线条带拓扑时,顶点将在绘制调用过程中被连接为一系类的连续线段。所以,在这种拓扑模式下,如果有n+1个顶点就会生成n条线段;
5)线列表
当使用线列表的使坏,每对顶点在绘制调用的过程中都会组成单独的线段;所以2n个点就会生成n条线段。线列表与线条带的区别是:线列表中的线段可以彼此分开,而线条带中的线段则是相连的。如果线段相连的话,绘制同样数量的线段便会占用更少的顶点,因为每个处于线条带中间位置的顶点都可以同时被两条线段所公用;
6)三角形带
当使用三角形拓扑时,所绘制的三角形图像将被连接成带状。在这种三角形连接的结构中,处于中间位置的顶点将被相邻的三角形所共同使用;利用n个顶点将生成n-2个三角形;
重点:在DirectX中置换的是后两个顶点的书序,在OpenGL中置换的才是前两个顶点的顺序。为了保证三角面的正反向(剔除的时候),需要把连续组成的三角形顶点进行绕序,保证他们的三角形都是同一个方向!(GPU会在对这些顶点顺序进行调换)
7)三角形列表
当使用三角形列表来进行拓扑时,在绘制调用的过程中会将每3个顶点独立装配成三角形。所以每3n个顶点会被装配成n个三角形;
三角形列表和三角形带的区别是:三角形列表中的三角形可以彼此分离,而三角形带中的三角形是相连的。
8)具有邻接数据的图元拓扑
对于存有邻接数据的三角形列表而言,每个三角形都有3个与之相邻的邻接三角形;在几何着色器中,往往需要访问这些邻接三角形来实现特定的几何着色算法。为了几何着色器可以顺利的获得这些邻接三角形的信息,就需要借助顶点缓冲区与索引索引缓冲区将他们随着主三角形一并提交至渲染流水线中;只有这样,渲染流水线才能得知如何以顶点缓冲区中的顶点来构建主三角形及其邻接三角形。
注意:邻接图元的顶点只能用作几何着色器的输入数据,却不会被绘制出来。即便程序没有用到几何着色器,但依旧不会绘制邻接图元;
9)控制点面片列表
将顶点数据解释为具有N个控制点的面片列表。此图元常用在渲染流水线的曲面细分阶段(此环节为可选阶段)。以后再说。
10)索引
三角形是3D实体对象的基本组成部分。(三

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值