OpenGL渲染管线
OpenGL渲染管线具有一系列顺序处理阶段。两个图形信息数据,顶点数据与像素数据,在管线中被处理、组合,最终写入帧缓存。注意,OpenGL可以将处理过的数据送回到你的程序中。(参考灰色区域)

OpenGL管线
显示列表
显示列表是一组保存(编译)起来以便后面执行的OpenGL命令。所有数据,几何(顶点)与像素数据,都可以保存在显示列表中。由于命令与数据在显示列表中缓存起来,因此显示列表可以提高性能。当OpenGL程序在网络上执行时,你可以使用显示列表来降低网络中的数据传输。由于显示列表作为服务器状态的一部分且保存在服务器上,客户端只需向服务器发送一次命令与数据。(详细请查看显示列表。)
顶点操作
每个顶点与法向坐标通过GL_MODELVIEW矩阵进行变换(从模型坐标到观察坐标)传递。如果开启灯光,逐顶点像素光照计算被执行,转换顶点与法向数据。(详细介绍请查看变换)
图元装配
顶点操作之后,图元(点、线与多边形)通过投影矩阵再次转换,接着由视锥裁剪平面进行裁剪操作,从观察坐标到裁剪坐标。在此之后,执行除以w的透视除法,并且为了实现3D场景到窗口空间的映射,视口变换被应用。图元装配最后要做的是在裁剪功能开启时的裁剪测试操作。
像素传递操作
在像素从客户端内存中解包(读取)出来之后,就对这些数据执行缩放、偏移、映射与截取。这些操作称作像素传递操作。这些传递后的数据保存在纹理内存或直接光栅化到片段。
纹理内存
为了作用于几何对象,纹理图片被载入到纹理内存中。
光栅化
光栅化就是把几何数据与像素数据转化为片段的过程。片段是包含颜色、深度、线宽、点大小与反走样计算(GL_POINT_SMOOTH、GL_LINE_SMOOTH、GL_POLYGON_SMOOTH)的矩形列表。如果着色模式为GL_FILL,多边形区域的内部像素(区域)将在此阶段填充。每个片段对应帧缓存中的一个像素。
片段操作
它是将片段转化到帧缓存中像素的最后阶段。该阶段首先要做的工作是纹理生成;每个纹理单元从纹理内存中产生且作用于单个片段。接着,进行雾计算。再次之后,依次进行多个帧测试:裁剪测试=>Alpha测试=>模板测试=>深度测试。
最后,执行混合、抖动、逻辑操作与根据位掩码的屏蔽操作,最终实现的像素数据保存在帧缓存中。
反馈
OpenGL通过glGet*()与glIsEnabled()命令返回大多数状态与信息。此外,可以使用glReadPixels()从帧缓存中读取矩形区域像素数据,以及可以通过glRenderMode(GL_FEEDBACLK)获取完整的装换后的顶点数据。glCopyPixels()并不返回像素数据到指定系统内存中,而直接复制到另一个帧缓存,如从前缓存复制到后缓存。
英文原文:http://www.songho.ca/opengl/gl_pipeline.html
OpenGL渲染管线的更多相关文章
- 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渲染管线介绍
原文摘选自 现代OpenGL渲染管线介绍 此文对最新的OpenGL做一个简单的介绍,如有理解错误,敬请指正.英文原文: https://glumpy.github.io/modern-gl.html ...
- 图形渲染的大致过程和关于OpenGL渲染管线的一些零碎知识,openglpipeline,vao,vbo,ebo.
重要!!! OpenGL新人一枚,希望可以再此和大家分享有用的知识,少走弯路 文章会定期更新,把前面几段已经整理过的知识更完后,接下来每周至少会更两次. 文章如果有不对的,理解错误的地方,也非常希望在 ...
- openGL图形渲染管线
在OpenGL中,任何事物都在3D空间中,而屏幕和窗口却是2D像素数组,这导致OpenGL的大部分工作都是关于把3D坐标转变为适应屏幕的2D像素.3D坐标转为2D坐标的处理过程是由OpenGL的图形渲 ...
- OpenGL shader 中关于顶点坐标值的思考
今天工作中需要做一个事情: 在shader内部做一些空间距离上的计算,而且需要对所有的点进行计算,符合条件的显示,不符合条件的点不显示. 思路很简单,在vertex shader内知道顶点坐标,进行计 ...
- CSharpGL(27)讲讲清楚OpenGL坐标变换
CSharpGL(27)讲讲清楚OpenGL坐标变换 在理解OpenGL的坐标变换问题的路上,有好几个难点和易错点.且OpenGL秉持着程序难以调试.难点互相纠缠的特色,更让人迷惑.本文依序整理出关于 ...
随机推荐
- hibernate中validate的使用(转)
原文链接:http://blog.csdn.net/xing_sky/article/details/8484551 首先是要加入下面两个包 hibernate-validator-4.1.0.Fin ...
- X3850M2安装CertOS 7 KVM 2--DMMP
1,在DS8000中调整vg为单台服务器.检查另一台服务器内已经没有磁盘信息. 2,在余下的服务器中安装DMMP. 参考:http://edwin-wang.com/2012/08/device-ma ...
- 拓扑排序&&欧拉(回)路
摘要:最近是不适合写代码么?忘记初始化wa到死<_=_=_>.唔--最近在学习图论,从基础搞起,先搞了拓扑排序和欧拉(回)路. Part 0. 拓扑排序 ==挖坑== Part 1. 欧拉 ...
- iOS学习之观察者模式
观察者模式: 观察者具体应用有两个:通知机制(notification)和KVO(key-value-observing)机制 通知机制: 谁要监听值的变化,谁就注册通知 ,特别要注意,通知的接受者必 ...
- Python学习路程day21
本节内容: 项目实战:开发一个WEB聊天室 功能需求: 用户可以与好友一对一聊天 可以搜索.添加某人为好友 用户可以搜索和添加群 每个群有管理员可以审批用户的加群请求,群管理员可以用多个,群管理员可以 ...
- centos6.3安装MySQL 5.6(转)
1.下载地址:http://dev.mysql.com/downloads/mysql/5.6.html#downloads 选择“Source Code”, 用已经注册好的oracle账户登录后才能 ...
- (spring-第21回【MVC基础篇】)SpringMVC一点就通
概述 Spring MVC通过一套MVC注解,让POJO变成处理请求的控制器,无需实现任何接口,同时,SpringMVC还支持REST风格的URL请求:注解驱动和REST风格的Spring MVC是S ...
- 易图软件之EaseMap Desktop 1.0发布
概述 易图软件之EaseMap Desktop 1.0是一款基于arcgis runtime for wpf开发的地图编辑软件. 软件代码编写历时1个月终于完成. 目前这个版本的功能包括: 地图基本操 ...
- [转]Jenkins使用 管理节点
现在我们已经搭建好了基本的Jenkins环境,在这一集里,我们说一说如何管理节点. 进入“系统管理”中的“管理节点”. 创建Windos系统的奴隶节点 先创建一台安装了Win7系统的虚拟机,作为Jen ...
- XenServer安全重启xapi的方法
XenServer安全重启xapi的方法 2012-11-29 12:58:07| 分类: 虚拟化-XenServer|字号 订阅 平常我们很常用到重启xapi命令,在这介绍下xapi: XAPI( ...