原文:Directx11教程(17) D3D11管线(6)

      VS shader输出clip空间的顶点位置及参数信息(比如颜色)到一个FIFO中,之后PA(primitive assembly)会从该FIFO中取得顶点位置信息,并根据IA传来的primitive信息,把单独的顶点装配成点、线或者三角形。经过PA阶段后,我们不再是处理单个顶点,而是处理整个体元。

参考资料:http://fgiesen.wordpress.com/2011/07/01/a-trip-through-the-graphics-pipeline-2011-part-5/

  

 

除了装配primitive外,PA阶段还会做一些其它的工作:

多边形裁剪:通过clip长方体的六个面来裁剪体元,把长方体(frustum)外的部分裁剪掉。

透视除法:(x/w,y/w,z/w,1),经过透视除法,把clip空间转化为归一化的clip空间,该空间依然是个长方体,但-1<=x<=1, –1<=y<=1, 0<=z<=1(注意:opengl的归一化裁剪空间-1<=z<=1)

视口转化:把归一化的x,y坐标从(-1,1)转化到像素的窗口坐标。比如窗口为800*600,就要在它们之间做个映射关系。

三角形背面剔除:主要是根据三角形的法向剔除背面渲染。

计算体元的梯度:计算得到的梯度会在光栅化阶段使用。

填充模式的处理。

     PA阶段后,会进入光栅化阶段,primitive会被光栅化成fragment(通常是quad, 2*2像素), 在光栅化的过程中,RS block会访问depth block,以便判定是否需要把该fragment传入到PS shader中去,同时也会更新depth block(此时更新depth block称为early z)。

    光栅化算法不在这儿讨论了,有兴趣可以随便找一本计算机图像学的书看看。

最新文章

  1. 【转】c# Image获得图片路径的三种方法 winform
  2. spring listener监听器
  3. ~0u &gt;&gt; 1
  4. C基础--函数指针的使用
  5. EXTJS 4.2 资料 控件之Grid 添加行,编辑行,删除行
  6. 如何使用Gmail的别名功能?
  7. 相对路径json无法获取
  8. 简单VR照片 使用陀螺仪、姿态角(Roll、Pitch、Yaw )、四元数
  9. POJ-2632 Crashing Robots模拟
  10. Linux 内存管理之highmem简介
  11. oracle之数据恢复(delete误删)
  12. 线段树(segment_tree)
  13. 转 Mac 使用ab性能测试工具
  14. 从零搭建和配置OSX开发环境
  15. flask入门小方法
  16. Sword STL之仿函数概念介绍
  17. multi-threads JavaEE 容器
  18. Appium+python HTML测试报告(1)(转)
  19. 秒杀多线程第七篇 经典线程同步 互斥量Mutex(续)
  20. FrameWork中SQLServer数据源使用宏函数出错解决办法

热门文章

  1. Docker镜像之commit
  2. 数据交换格式之 - XML
  3. 2019-8-31-dotnet-如何调试某个文件是哪个代码创建
  4. leetcode 665
  5. GitBook的使用方法
  6. python 基础(while 循环、格式化输出、运算符、编码初识)
  7. 你需要一个新的model实体的时候必须new一个.奇怪的问题: 使用poi解析Excel的把数据插入数据库同时把数据放在一个list中,返回到页面展示,结果页面把最后一条数据显示了N次
  8. free内存监控
  9. Leetcode6.ZigZag ConversionZ字形变换
  10. Ajax--art-template + 调用天气接口