OpenGL-渲染管线的流程(有图有真相)
视频教程请关注 http://edu.csdn.net/lecturer/lecturer_detail?lecturer_id=440
学习shader之前必须知道的事情,shader(着色语言)到底发生在那个阶段, OpenGL的渲染管线有哪些阶段
对开发人员来说很重要,也许你刚刚接触,或者你在使用已有的产品,很优秀的游戏引擎,或者渲染引擎,你
觉得知道这个没有太大意义,但知道了这些,总归对你没有坏处。
下图是一个非常简化框图流水线的各个阶段,并在他们之间传播的数据。虽然极其简单,它是足够的着色器编程,
提出了一些重要的概念。固定管线中存在很多阶段,并存在很多细节,这里只是粗略的介绍。

(1)顶点变换:
在这里,一个顶点的属性,如在空间的位置,以及它的颜色,法线,纹理坐标,其中包括一组。这个阶段的输入
的各个顶点的属性。由固定的功能所执行的操作,主要完成一下工作:
1. 顶点位置变换
2. 计算顶点观照
3. 纹理坐标变换
(2)图元装配:
这个阶段的输入的变换后的顶点,以及连通性信息。这后者的一块数据告诉顶点如何连接,以形成一种原始的
绘制数据,这个阶段还负责对视锥裁剪操作,背面剔除。光栅扫描确定的片段,和原始的像素位置。
在此上下文中的片段是一块的数据,将用于更新的像素在帧缓冲区中,在特定的位置。片段包含不仅是颜色,
也法线和纹理坐标,其中包括可能的属性,被用来计算新像素的颜色。上面的顶点变换阶段,计算出的值与顶点连接信息相结合,
允许当前阶段来计算相应的属性的片段。比如,每个顶点的变换位置。当考虑到顶点,使一个原语,
是可以计算的原始片段的位置。另一个例子是,使用的颜色。如果一个三角形,然后用不同的颜色有其顶点的颜
色的三角形内的片段片段的相对的顶点的距离加权的三角形的顶点的颜色插值的方式获得。
(3)纹理映射,着色:
插值片段信息是这一阶段的输入。彩色已经在前一阶段的计算是通过内插法,在这里,它可以结合例如一个纹理像素(纹理元素)。
纹理坐标也已经在前一阶段内插。雾也适用于在这个阶段。每个片段的本阶段的共同的最终结果是一个颜色值和深度的片段。
(4)最后阶段的管道上的片段,进行了一系列的测试:
1. 裁减测试
2.Alpha(透明度)测试
3.模板测试
4.深度测试
通过测试的片段信息,然后用于更新的像素的值,根据当前的混合模式。请注意,混合只发生在这个阶段,因为片段纹理和着色阶段,
有没有访问帧缓冲区。帧缓冲区是唯一能够在这个阶段。
下图很明了的说明了各个阶段的任务:

最后这个图画 的比较丑,大家见谅(ps 基本属于文盲),鉴于本人能力有限,对各个阶段的理解如有不错误
还请指教。
最后,到shader上场了,shader具体在那个阶段呢(现在的shader已经出到第四版本了,增加了很多新功能)
vertex shader(顶点shader)发生在顶点变换阶段,通过顶点shader可以修改一些基本的图元属性,颜色,光照,发现等
fragment shader(片段shader)主要发生在 纹理着色阶段,主要是对上一阶段输出的数据,进行再次加工。
OpenGL-渲染管线的流程(有图有真相)的更多相关文章
- 现代OpenGL渲染管线介绍
原文摘选自 现代OpenGL渲染管线介绍 此文对最新的OpenGL做一个简单的介绍,如有理解错误,敬请指正.英文原文: https://glumpy.github.io/modern-gl.html ...
- OpenGL渲染管线
OpenGL渲染管线具有一系列顺序处理阶段.两个图形信息数据,顶点数据与像素数据,在管线中被处理.组合,最终写入帧缓存.注意,OpenGL可以将处理过的数据送回到你的程序中.(参考灰色区域) Open ...
- OpenGL: 渲染管线理论
http://blog.csdn.net/augusdi/article/details/19934463 学习着色器,并理解着色器的工作机制,就要对OpenGL的固定功能管线有深入的了解. 首先要知 ...
- OpenGL渲染管线(rendering pipeline)
OpenGL中的渲染管线包括:顶点着色器(vertex shader).细分着色器(里面包含两种:细分控制着色器和细分控制着色器)(tessellation shader).几何着色器.光栅化及片元着 ...
- 小强学渲染之OpenGL渲染管线详析
什么是OpenGL? OpenGL是一套图形硬件的软件API接口库,它直接和GPU交互,将3D场景渲染绘制到2D屏幕上.总结说,OpenGL的功能是将程序中定义的各种2D或3D模型绘制到帧缓存中,或者 ...
- opengl渲染管线梳理
opengl渲染管线梳理 http://www.cnblogs.com/zhanglitong/p/3238989.html 坐标系变换和矩阵 http://www.cppblog.com/guoji ...
- 图形渲染的大致过程和关于OpenGL渲染管线的一些零碎知识,openglpipeline,vao,vbo,ebo.
重要!!! OpenGL新人一枚,希望可以再此和大家分享有用的知识,少走弯路 文章会定期更新,把前面几段已经整理过的知识更完后,接下来每周至少会更两次. 文章如果有不对的,理解错误的地方,也非常希望在 ...
- openGL图形渲染管线
在OpenGL中,任何事物都在3D空间中,而屏幕和窗口却是2D像素数组,这导致OpenGL的大部分工作都是关于把3D坐标转变为适应屏幕的2D像素.3D坐标转为2D坐标的处理过程是由OpenGL的图形渲 ...
- OPENGL图形渲染管线图解
OPENGL固定图形渲染管线可以粗略地认为由下面的阶段衔接而成: 顶点颜色,光照,材质三个输入在光栅化前控制绘制管线的操作.光照和材质不能单独使用.顶点颜色,光源颜色,材质颜色都有alpha值,它们的 ...
随机推荐
- 0c-39-ARC下单对象内存管理
1.ARC工作原理详述 ARC是Objective-C编译器的特性,而不是运行时特性或者垃圾回收机制,ARC所做的只不过是在代码编译时为你自动在合适的位置插入release或autorelease A ...
- 深入理解MYSQL的MDL元数据锁
1 前言 2 MDL锁与实现 3 MDL锁的性能与并发改进 4 MDL锁的诊断 前言 好久没更新,主要是因为Inside君最近沉迷于一部动画片——<新葫芦娃兄弟>.终于抽得闲,完成了本篇关 ...
- this class is not key value coding-compliant for the key XXX错误的解决方法
转自:http://www.cnblogs.com/zhangronghua/archive/2012/03/16/iOSError1.html 今天在听iOS开发讲座时,照着讲座的demo输入代码, ...
- Cassandra目录
1. cassandra安装 2. 过滤文本文档中的数据并插入Cassandra数据库 3. 用Java实现向Cassandra数据库中插入和查询数据 4. Cassandra在CQL语言层面支持多种 ...
- 配置apache虚拟主机的实例总结
如何实现apache虚拟主机配置. 1.基于ip地址的虚拟主机Listen 80<VirtualHost 172.20.30.40> DocumentRoot /home/httpd/ht ...
- c#如何在win7下设置IE代理的完美解决方案
有人还发现:在window7下, 在一个进程中, 设置和取消不能都执行,---- 要么设置,要么取消. 但如果第一次运行时,只进行设置代理,退出后再进运行,只进行取消,这是没有问题的. 简单说说中医 ...
- ubuntu13.04装配oracle11gR2
http://jingyan.baidu.com/album/bea41d435bc695b4c41be648.html?picindex=2 http://www.360doc.com/conten ...
- 关于在Struts2框架下实现文件的上传功能
struts2的配置过程 (1)在项目中加入jar包 (2)web.xml中filter(过滤器)的配置 <?xml version="1.0" encoding=" ...
- Java基础知识强化之IO流笔记77:NIO之 Selector
Selector(选择器)是Java NIO中能够检测一到多个NIO通道,并能够知晓通道是否为诸如读写事件做好准备的组件.这样,一个单独的线程可以管理多个channel,从而管理多个网络连接. 1. ...
- iOS - UI - UIWebView
1.UIWebView UIWebView 是 苹果提供的用来展示网页的UI控件.它也是最占内存的控件. iOS8.0 webkit框架. WKWebView,相比UIWebView,节省了1/3~1 ...