红宝书阅读笔记——OPENGL渲染管线
之前读的时候一直觉得红宝书是很艰涩难懂的,不如NEHE的教程简单。
后来才发觉是自己没基础,几番折腾之后也只能用OPENGL做些简单的东西。半年没写,连glBegin都给忘了。
图形学的大作业要求写个ZBuffer扫描线算法,虽然算法看的很明白,但到了要写的时候总还是很晕,不知道什么时候转换坐标,什么时候消隐。今天重看OPENGL编程指南,才发现这些早已在第一章就写得清清楚楚,心里暗悔早点看到便好了。又或者是,只有自己折腾过了,才觉得这一块看的更加明白了呢。关于图形学,我知道的还是太少太少了。
第一章其实内容不多,主要就是渲染管线:
书中提到,如果读者刚开始涉足三维图形编程,可能会对接下来的内容感到吃力。读者现在可以跳过这部分内容,但在读完本书的每一章时,都应该重温一下图1-2。考虑到我当时很忙并且赶着把红宝书看完好去做毕设。所以这里我一定直接跳过了,只是后来读完每一章的时候,已经忘记去重温这张图了。好在毕设用到OPENGL不多,后来写图形学的作业就很吃力了。如果不是有前人的代码做参考,我想我也许到现在都还没写出来。
废话不说了,接下来逐个解释。
1. 显示列表 Display list
不管是像素还是几何图元,都要保存在显示列表里的。书上说还可以不保存,直接对数据进行处理,称作立即模式(immediate mode)。我到现在还没用过显示列表= =。第七章
2. 求值器 Evaluators
如果用的是参数化的曲线曲面,这里需要计算出顶点的坐标,因为所有的几何图元最终都要通过顶点来描述。它可以根据控制点产生表面法线,纹理坐标,颜色以及空间坐标值。第十二章
3. 基于顶点的操作 Per-vertex operations
就是把顶点变换为图元。原本我们的顶点都是世界坐标系中的,为了在屏幕中显示出来,需要将其转换为屏幕坐标。第三章
如果启用了纹理,它还会计算纹理坐标。如果启用光照,将会根据综合变换后的顶点、表面法线、光源位置、材料属性以及其他光照信息进行光照计算,产生最终的颜色值,这个在第五章讲述。
4. 图元装配 Primitive assembly
这里的主要内容是裁剪,消除位于半空间之外的那部分几何图元(如果你定义了其他裁切平面的话 第三章)。如果使用的是透视试图,这里还要进行透视除法的步骤。接下来是适口和深度操作(这里的深度操作说的不是消隐,其实我不知道它说的是什么。。囧)。图元装配生成完整的几何图元,也就是根据相关的颜色、深度(有时还有纹理坐标值以及和光栅化处理有关的一些指导信息)进行了变换和裁剪的顶点。
5. 像素操作 Pixel operations
首先,将来自系统内存的一个数组中的像素进行解包,从某种格式(像素的原始格式可能有很多种)解包为适当数量的数据成分。接着,这些数据被缩放、便宜,并根据一副像素图进行处理。处理结果先进行截取,然后写入到纹理内存或者发送到光栅化阶段。第八章
如果像素数据是从帧缓冲区中读取的,就对它们执行像素转换操作(缩放、偏移、映射和截取)。然后,这些结果被包装为一种适当的格式,并返回到系统内存的一个数组中。
6. 纹理装配 Texture assembly
我还没搞清楚是干嘛的,反正是对纹理图像进行一些处理。。第九章
7. 光栅化 Rasterization
光栅化就是把几何数据或数据像素转换成为片段fragment的过程。每个片段方块对应于帧缓冲区中的一个像素。这里要考虑直线的宽度、点的大小、抗锯齿等因素。
8. 片段操作 Per-fragment operations
在数据实际存储到帧缓冲区之前,将要执行一系列的操作。这些操作可能会修改甚至丢弃这些片段。所有这些操作都可以被启用或者禁用。
第一个可能执行的操作是纹理处理,将纹理单元texel应用到片段上。接着是雾计算、裁剪测试、alpha测试、模板测试和深度缓冲区测试(消隐被遮挡的表面)。随后执行的可能是混合、抖动、逻辑操作以及根据一位掩码的屏蔽操作。 第六章和第十章。
最后片段被绘制到适当的缓冲区,成为一个像素并到达它的最终栖息地。
OVER~
本文原创,转载请注明出处:
http://blog.163.com/sara_athena/ 或
http://www.cnblogs.com/luluathena/
转载于:https://www.cnblogs.com/luluathena/archive/2010/08/20/1804540.html
红宝书阅读笔记——OPENGL渲染管线相关推荐
- 红宝书阅读笔记(持续更新)
今天是2021年8月15日 ,在自学的同时开始阅读前端相关的书籍,愿不断在学习中进步. 这一本是<JavaScript高级程序设计>(第四版),也俗称红宝书,第四版中加入了ES6. 下一本 ...
- 红宝书阅读笔记——缓冲区对象
前面的顶点数组使得几何图元的显示方便了很多,但是如果每次都要向OPENGL发送一大块数据,而这数据其实并没有修改过,那么这传输就是冗余的.所以这里添加了缓冲区对象,将顶点数组存储在服务器端的缓冲区对象 ...
- 红宝书背诵笔记 — 基础词
红宝书基础词 基础词-Unit1 基础词-Unit2 基础词-Unit3 基础词-Unit4 基础词-Unit5 基础词-Unit6 基础词-Unit7 基础词-Unit8 基础词-Unit9 基础词 ...
- 红宝书背诵笔记 — 简单基础词语
简单基础词 a开头的简单基础词 b开头的简单基础词 c开头的简单基础词 d开头的简单基础词 e开头的简单基础词 f开头的简单基础词 g开头的简单基础词 h开头的简单基础词 i开头的简单基础词 j开头的 ...
- 《JavaScript高级程序设计(第四版)》红宝书学习笔记(2)(第四章:变量、作用域与内存)
个人对第四版红宝书的学习笔记.不适合小白阅读.这是part2.持续更新,其他章节笔记看我主页. (记 * 的表示是ES6新增的知识点,记 ` 表示包含新知识点) 第四章:变量.作用域与内存 4.1 原 ...
- 《JavaScript高级程序设计(第四版)》红宝书学习笔记(1)
个人对第四版红宝书的学习笔记.不适合小白阅读.这是part1,包含原书第二章(HTML中的Javascript)和第三章(语言基础).持续更新,其他章节笔记看我主页. (记 * 的表示是ES6新增的知 ...
- JS红宝书·读书笔记
JavaScript高级程序设计 花了半个多月的时间,终于又把"JS红宝书"又撸了一遍. 第一次读"JS红宝书"还是2015年初学JS的时候,那时候只是把语法部 ...
- [OpenGL红宝书]第一章 OpenGL概述
第一章 OpenGL概述 标签(空格分隔): OpenGL 第一章 OpenGL概述 1 什么是OpenGL 2 初识OpenGL程序 3 OpenGL语法 4 OpenGL渲染管线 41 准备向Op ...
- 红宝书读书笔记 第八章
对象.类与面向对象编程 属性的类型 内部属性用两个中括号如[ [ Enumerable ] ] 开发者不能直接访问 数据属性 数据属性:数据属性包含一个保存数据值的位置.值会从这个位置读取,也会写入到 ...
最新文章
- Python 技术篇-利用pymouse库操作windows系统电脑实现鼠标指针移动、点击
- Linux Restart PHP
- firefox设置代理服务器
- 手机定位和什么有关?关机后的手机还能被定位吗?
- react学习(60)--ant design中getFieldDecorator
- linux内存锁定什么意思,Linux内存子系统——Locking Pages(内存锁定)
- GNOME下也是Alt+F2,输入gnome-terminal
- Nginx 反向代理可以缓存 HTTP POST 请求页面吗?
- Spring(三)之自动装配、表达式
- C++中的XML配置文件编程经验
- python ljust函数,Python 字符串左对齐-Python 指定字符串左对齐-python ljust() 函数-python ljust() 函数用法-嗨客网...
- 阶段3 2.Spring_08.面向切面编程 AOP_4 spring基于XML的AOP-配置步骤
- 笔记本无法启用免费wifi
- sx1278lora模块的常见问题解答
- 野指针的成因_C语言
- 文献管理软件Zotero配置及使用
- 怎么用java做全民飞机大战_基于VC++和OpenCV实现的全民飞机大战游戏
- Ubuntu 22.04 LTS 入门安装配置优化、开发软件安装一条龙
- python网络编程能用来做什么_python网络编程是什么意思
- wps云文档回收站在哪_获得自己的云并回收数据
热门文章
- Pyotrch —— 优化器Optimizer(一)
- 吴恩达机器学习 —— 2.7 计算图
- 差分隐私中随机响应的抛硬币问题(LDP)
- Java出现No enclosing instance of type Test is accessible. Must qualify the allocation with an enclosin
- python3 ftp启动_python3利用pyftpdlib模块启动ftp服务
- php tp框架选择题,thinkPHP框架单元测试库tpunit用法示例
- python 找出图片中的差异点,python opencv对目录下图片进行去重的技巧
- 天锋w2019_天锋W2019叫板三星,三星欲哭无泪,网友称这也太逼真了!
- python size(0)_对x.view(x.size(0), -1)的一些理解
- oracle 讲师费用,20080929--ORACLE培训笔记未整理版(讲师:ORA-600)