《OpenGL编程指南》读书笔记1—第1章 OpenGL概述
来源:互联网 发布:好听的淘宝店铺音乐 编辑:程序博客网 时间:2024/06/16 16:46
OpenGL渲染管线
OpenGL首先接收用户提供的几何数据(顶点和几何图元),并且将它输入到一系列着色器阶段中进行处理,包括顶点着色、细分着色(它本身包含两个着色器),以及最后的几何着色,然后它将被送入光栅化单元(rasterizer)。光栅化单元负责对所有剪切区域(clipping region)内的图元生成片元数据,然后对每个生成的片元都执行一个片元着色器。
1 顶点着色
对于绘制命令传输的每个顶点,OpenGL都会调用一个顶点着色器来处理顶点相关的数据。通常来说,一个复杂的应用程序可能包含多个顶点着色器,但是在同一时刻只能有一个顶点着色器起作用。
2细分着色
细分着色会使用Patch来描述一个物体的形状,并且使用相对简单的Patch几何体连接来完成细分的工作,其结果是几何图元的数量增加,并且模型的外观会变得更为平顺。细分着色阶段会用到两个着色器来分别管理Patch数据并且生成最终的形状。
3几何着色
允许在光栅化之前对每个几何图元做更进一步的处理,例如创建新的图元。
4图元装配
将顶点与相关的结合图元之间组织起来,准备下一步的剪切和光栅化工作。
5剪切
顶点可能会落在视口(viewport)之外——也就是我们可以进行绘制的窗口区域——此时顶点相关的图元会做出改动,以保证相关的像素不会在视口外绘制。这一过程叫做剪切(clipping),它是由OpenGL自动完成的。
6光栅化
剪切之后马上要执行的工作,就是将更新后的图元传递到光栅化单元,生成对应的片元。我们可以将一个片元视为一个“候选的像素”,也就是可以放置在帧缓存中的像素,但是它也可能被最终剔除,不再更新对应的像素位置。
7片元着色
最后一个可以通过编程控制屏幕上显示颜色的阶段,叫做片元着色阶段。在这个阶段中,我们使用着色器来计算片元的最终颜色(尽管在“逐片元的操作“阶段时可能还会改变颜色一次)和它的深度值。在这里会使用纹理映射的方式对顶点处理阶段所计算的颜色值进行补充,还可以丢弃(discard)不应该继续绘制的片元。
8逐片元的操作
在这个阶段会使用深度测试(depth test,或z-buffering)和模板测试(stencil test)的方式来决定一个片元是否可见。
如果一个片元成功地通过了所有激活的测试,那么它就可以被直接绘制到帧缓存中了,它对应的像素的颜色值(也可能包括深度值)会被更新,如果开启了融合(blending)模式,那么片元的颜色会与该像素当前的颜色相叠加,形成一个新的颜色值并写入帧缓存中。
- 《OpenGL编程指南》读书笔记1—第1章 OpenGL概述
- 学习《Opengl编程指南》第7版 第1章
- 《OpenGL编程指南》读书笔记2—第2章 着色器基础
- Opengl编程指南读书笔记-Opengl着色器
- OpenGL编程指南1:OpenGL简介
- OpenGL编程指南读书笔记-第一章
- OpenGL 编程指南笔记——第8章 OpenGL 绘制像素、位图、字体和图像
- OpenGL系列1:OpenGL概述
- OpenGL编程指南学习笔记@1
- OpenGL(1)概述
- OpenGL编程指南 - 第二章
- OpenGL 学习1–OpenGL 概述
- OpenGL学习笔记1:OpenGL概述
- OpenGL编程指南
- OpenGL编程指南
- OpenGL编程指南
- OpenGL编程指南 - 第一章
- OpenGL编程指南目录
- 关于JAVA的几个概念
- php var_export 用法
- 事务在日志的应用
- Linux下c语言多线程编程
- Hadoop-2.5.0-cdh5.2.0 获取源码及编译
- 《OpenGL编程指南》读书笔记1—第1章 OpenGL概述
- altium designer 绘制pcb步骤
- Android中通过xml资源文件定义数组
- java web简单权限管理设计
- 程序设计中的常见概念
- 廖雪峰Python教程学习笔记
- RecyclerView用法(一)------展示单一类型Item数据
- 关于DevOps(二)
- 通过Nopi实现对execl的操作