DirectX 图形流水线
Direct3D 的可编程流水线用来为实时游戏渲染图形(一个词概括——实时渲染)

上面的图是Dx11的实时渲染流水线,Dx的几个版本都是向下兼容的。
Input-Assembler Stage: 输入汇集阶段,将所有的数据(三角形,线,点)提供给流水线。
Vertex-Shader Stage:顶点着色阶段,这一阶段主要处理顶点。主要的操作有:变换(transformation)、纹理?(skinning)、照明(lighting)。一个定点着色器永远接纳单一的顶点输入并产生单一的顶点输出。
Geometry-Shader Stage:几何体着色器阶段,这一阶段处理整个原始基本几何体。输入是一个完整的基本几何体(三个顶点一个三角形、两个顶点一条线、一个顶点一个点)。除此之外,每一个基本元还包括邻近边的顶点数据,意味着三角形额外包含3个顶点,一条线额外包含两个顶点。几何体着色器还支持有限的几何体放大和缩小。给定一个输入基本元,几何体着色器可以忽略或放弃该基本元。
Stream-Output Stage:将基本元数据从流水线中流进内存进行光栅化。流进内存的数据可以作为输入数据回环进流水线。
Rasterizer Stage: 光栅器围绕基本元,为像素着色器准备基本元(片元?)。光栅器决定了如何调用像素着色器。
Pixel-Shader Stage:像素着色器为一个基本元接收插值数据并产生每一个像素数据(比如颜色)。
Output-Merger Stage: 输出合并阶段,根据渲染目标和深度/模板缓冲区的内容组合各种类型的输出数据,然后产生最后的流水结果。
Hull-shader,曲面细分(Tessellator,镶嵌器),域着色器阶段,这些共同组成了tessellation阶段。曲面细分阶段将高阶的面(曲面,不在同一平面上)转化为三角形,来渲染。
DirectX 图形流水线的更多相关文章
- CUDA编程-(3)图形流水线时代
图形流水线时代 图中所说的顶点,为多边型的角.GeForce系列设计图形流水型的目的就是渲染三角形的图元,这里指三角线图元的角.三角形图元越小,图片的质量就越好. 顶点控制的作用:从CPU中,接受参数 ...
- 【原创】Linux环境下的图形系统和AMD R600显卡编程(9)——R600显卡的3D引擎和图形流水线
1. R600 3D引擎 R600核心是AMD一款非常重要的GPU核心,这个核心引入了统一处理器架构,其寄存器和指令集同以前的GPU 都完全不同,对其编程也有比较大的区别. 图1显示了R600 GPU ...
- 64 计算机图形学入门(1)——OpenGL环境配置与图形流水线(图像管线)
0 引言 最近想学一下计算机图形学方面的知识,原因如下.目前本人接触了数字图像处理(opencv)以及点云处理(PCL)方面的知识,对从图像和点云中提取特征信息,并将特征转化为底层/中层语义信息有了一 ...
- 【转载】关于OpenGL的图形流水线
本文转载自 http://blog.csdn.net/racehorse/article/details/6593719 GLSL教程 这是一些列来自lighthouse3d的GLSL教程,非常适合入 ...
- 【GLSL教程】(一)图形流水线 【转】
http://blog.csdn.net/racehorse/article/details/6593719 这是一些列来自lighthouse3d的GLSL教程,非常适合入门.我将边学习边翻译该教程 ...
- DirectX 发展历程
在Windows下开发游戏,大家都会联想到DirectX.实际上,DirectX并不等同于游戏,它也不是写游戏程序的唯一选择.其实,DirectX只是提供了一种更直接的控制硬件的API库而已.当然,它 ...
- 两天学会DirectX 3D之第二天
提要 前几天非常easy地跑了一个DirectX 9 程序,以为DirectX就那么绘制,事实证明有点Naive了. 之前的那个程序最多也就是个固定流水线的东西. 可是今天要用DirectX11来写一 ...
- 3D图形渲染管线
3D图形渲染管线 什么是渲染(Rendering) 渲染简单的理解可能可以是这样:就是将三维物体或三维场景的描述转化为一幅二维图像,生成的二维图像能很好的反应三维物体或三维场景(如图1): ...
- Windows 8 DirectX 和Xaml UI 混合处理方案
原文 http://www.cnblogs.com/chenkai/archive/2012/11/29/2794983.html [如果不想读这么长问题描述和通用的解决方案. 可以直接skip 这段 ...
随机推荐
- JS和PHP和JAVA的正则表达式的区别(java没有分解符,java中的转义字符是\\)
JS和PHP和JAVA的正则表达式的区别(java没有分解符,java中的转义字符是\\) 一.总结 js正则:var patrn=/^[0-9]{1,20}$/; php正则:$pattern='/ ...
- MinGW 与MSVC的区别
Qt 中有两种方式编译,一种是MinGW ,另一种MSVC. 其中:MSVC是指微软的VC编译器 MingGW是指是Minimalist GNU on Windows的缩写.它是一个可自由使用和自由发 ...
- 用SQL找出前N名
业务系统中常常会有排名的需求,考试和比赛中则更普遍了.Excel 中也有个 Rank 函数供排名之用,数据库中更不例外了. 如果须要找出工资最高的前三个员工工资(及其员工号). 只是."前三 ...
- Android 报错 Error:(303, 27) 错误: 找不到符号 符号: 方法 sin(float) 位置: 类 FloatMath
今天更新了sdk,升级到Android SDK 23.发现Android studio用23编译 SlidingMenu时出错,错误如下: 报错的地方这这里: float distanceInflue ...
- 三列自适应布局的实现方式(兼容IE6+)
1.绝对定位方式 <div class="nm-3-lr"> <div class="aside-f"> <p>侧边栏1固定 ...
- html页面保存数的两种方式
原文链接:https://blog.csdn.net/qq_37936542/article/details/78866755 需求:微信开发时,在某个页面授权获取用户的openid,但是每次刷新页面 ...
- 【22.17%】【codeforces718B】 Efim and Strange Grade
time limit per test 1 second memory limit per test 256 megabytes input standard input output standar ...
- SEO那些事:一句代码一键分享网站
这是很久以前就已经写过的笔记了,有一个习惯,每次遇到一个问题,都会进行百度,然后把解决问题的关键点记录下来,有人问我,为什么更新频率如此之快,大部分都是从前积累的知识点. 其实每天工作所涉及的知识点都 ...
- qt-4.8.4安装和环境变量配置
在Linux中分别安装应用于不同平台的Qt:PC.嵌入式X86:ARM. 这三者PC版.嵌入式X86版和ARM版的差别主要体如今:当configure时分别加了不同的參数,详细差别是: PC平台(X1 ...
- Tricks(四十七)—— 布尔矩阵(0-1矩阵)取反
假定 X 是一个 0-1 元素构成的布尔矩阵,则对其取反,0 变成 1,1 变为 0(True 变为 False,False 变成 True),只需要一步简单的操作: Y = (X == False)