OpenGL超级宝典(第7版)之第八章基元处理
基元处理
- 一、曲面细分
- 1.曲面细分基元模式
- 2.曲面细分子分段模式
- 3.数据在曲面细分着色器之间的传递
- 4.着色器调用通信
- 5.示例:地形渲染
- 6.示例:三次贝塞尔面片
- 二、几何着色器
- 1.传递几何着色器
- 2.在应用程序中使用几何着色器
- 3.删除几何着色器中的几何
- 4.修改几何着色器中的几何体
- 5.在几何着色器中生成几何体
- 6.修改几何着色器中的基元类型
- 7.多条储存流
- 8.通过几何着色器引入新基元类型
- 9.多次视口转换
一、曲面细分
将一个三角形(或四边形等),网格化生成更多的内部三角形
1.曲面细分基元模式
gl_TessLevelInner[]:图形内部
gl_TessLevelOuter[]:图形外部
(1)使用四视图的曲面细分
四视图:四边形
gl_TessLevelInner[]:长度为2,图形内部,分别控制长、宽分成的段数
gl_TessLevelOuter[]:长度为4,图形外部,分别控制四边分成的段数
(2)使用三角形的曲面细分
gl_TessLevelInner[]:长度为1
gl_TessLevelOuter[]:长度为4
(3)使用等值线的曲面细分
gl_TessLevelOuter[]:只有这个,长度为2,分别控制线的数量和线分成的段数
(4)曲面细分点模式
以点的方式渲染
2.曲面细分子分段模式
(1)曲面细分三种子分段模式:
equal_spacing:分段式等间距模式,缺点:曲面细分因子向上舍入到最接近的整数,级别有可能会发生跳变,下面两个就是解决这个问题的
fractional_even_spacing:分段式偶数间距模式,曲面细分因子向下舍入到最接近的偶数
fractional_odd_spacing::分段式奇数间距模式,曲面细分因子向下舍入到最接近的奇数
(2)控制环绕顺序
cw:顺时针
ccw:逆时针
3.数据在曲面细分着色器之间的传递
(1)曲面细分评估着色器和曲面细分控制着色器一样,对每个生成的顶点运行一次,可以访问面片中所有顶点数据
(2)传递顶点数据除了通过数组形式,还可以在整个面片上直接传递各恒定阶段之间的数据(Patch关键字)
(3)无曲面细分控制着色器的渲染,内外部曲面细分等级的默认值为1.0,可通过void glPatchParameterfv()更改
4.着色器调用通信
(1)曲面细分控制着色器中每个输出都是数组,长度等于输出面片中的控制点数量
(2)曲面细分控制着色器可以读取其输出变量,为了确认是否实际写入输出变量,添加了barrier()函数,流控制屏障
5.示例:地形渲染
6.示例:三次贝塞尔面片
二、几何着色器
简述:对基元处理的着色器,一个基元运行一次,一个基元可以是点、线段或三角形。
1.传递几何着色器
输出只能是points、line_strip和triangle_strip,可以使用EndPrimitive()间接变成points、lines和triangles
2.在应用程序中使用几何着色器
顶点着色器输出到几何着色器会变成数组形式,因为几何着色器是以基元为一个处理单位的
3.删除几何着色器中的几何
简述:减少顶点个数,可实现不同角度的剔除物体
4.修改几何着色器中的几何体
简述:修改几何体的基元,可实现模型分解和模型爆破
5.在几何着色器中生成几何体
简述:通过增加顶点数来生成多的物体
6.修改几何着色器中的基元类型
简述:改变基元类型,可实现法向量可视化
7.多条储存流
简述:可以配置4个输出流,进行同时渲染几何体并存储数据到变换缓存中
限制:1.输出基元模式必须是点 2.只能渲染第一个流,其他流用于存储
8.通过几何着色器引入新基元类型
GL_LINES_ADJACENCY
GL_LINE_STRIP_ADJACENCY
GL_TRIANGLES_ADJACENCY
GL_TRIANGLE_STRIP_ADJACENCY
没看懂,日后再看。
9.多次视口转换
opengl至少支持16个视口
void glViewportIndexedf()设置视口大小和边界
void glViewportIndexedfv()设置视口绑定
void glDepthRangeIndexed()设置视口深度范围
若一次性设置多个视口,则可以考虑使用glViewportArrayv()和glDepthRangeArrayv()
内置变量gl_ViewportIndex可以选择渲染到那个视口
OpenGL超级宝典(第7版)之第八章基元处理相关推荐
- 《OpenGL超级宝典第5版》学习笔记(一)—— 第一个OpenGL程序
// GLTools库包含了一个用于操作矩阵和向量的3D数学库,并依靠GLEW获得OpenGL3.3中用来产生和渲染一些简单3D对象的函数, // 以及对视觉平截头体.相机类和变换矩阵进行管理的函数的 ...
- OpenGL超级宝典第7版环境配置
1.下载源码 地址:http://www.openglsuperbible.com/ 2.运行Cmake,编译glfw库 打开项目后,编译工程(Debug和Release下都编译). 把E:\open ...
- OpenGL超级宝典(第7版)笔记4 渲染管线介绍 清单2.3-2.7
OpenGL超级宝典(第7版)笔记4 渲染管线介绍 清单2.3-2.7 文章目录 OpenGL超级宝典(第7版)笔记4 渲染管线介绍 清单2.3-2.7 1 OpenGL简介 2 OpenGL渲染管线 ...
- OpenGL超级宝典(第五版)环境配置
本文转自:http://blog.csdn.net/sunny_unix/article/details/8056807,感谢作者分享. OpenGL超级宝典(第五版)环境配置 Vs2008+winX ...
- OpenGL超级宝典(第五版)环境配置【转】
OpenGL超级宝典(第五版)环境配置 Vs2008+winXP 后续会整理Ubuntu 12.04LTS下的配置作者:sunny_unix 1.各种库的配置 (1)glew 下载:https:// ...
- OpenGL超级宝典(第五版) 环境配置
特别提醒:有些在word中或者其他中的代码复制到vs中会报错,原因是word中有些隐含的字符,复制到vs中就会报错:重新输一遍就可以解决问题,这里只是提醒下! 可以参阅我前面转载的一篇文章,进行比较然 ...
- OpenGL超级宝典(第五版) 环境配置(WinXp+VS2008)
转自:http://blog.csdn.net/sunny_unix/article/details/8056807 OpenGL超级宝典(第五版)环境配置 1.各种库的配置 (1)glew 下载:h ...
- [转]OpenGL超级宝典 5e 环境配置
OpenGL超级宝典(第五版)环境配置 1.各种库的配置 (1)glew 下载:https://sourceforge.net/projects/glew/files/glew/1.7.0/glew- ...
- OpenGL超级宝典学习笔记——操作矩阵
为了更强大的功能和灵活性,我们有时需要直接操作矩阵.在OpenGL中4x4的矩阵用包含16个浮点数值的一维数组来表示,而不是用二维的4x4的数组来表示.OpenGL之所以这么做,因为使用一维数组更高效 ...
- win7 上配置openGL开发环境(配套openGL 超级宝典Super Bible 6th)
此教程配套openGL 超级宝典super Bible圣经 第六版基于最新openGL4.3,但只有英语版 第六版比第五版(第五版目前有中文版基于openGL3.2)跨了一个时代,改变非常巨大,所以笔 ...
最新文章
- squid启动失败的解决办法
- android 蓝牙低耗能(LBE)技术介绍
- python 发邮件 timeout_python发送邮件
- 最长回文子串 C++
- Sql 四大排名函数(ROW_NUMBER、RANK、DENSE_RANK、NTILE)简介
- dnn305的一个bug
- 服务器数据恢复成功案例(磁盘阵列恢复)
- 软件开发工具的使用与开发
- css入门1 css简介
- ipcalc命令 – 简单的IP地址计算器
- dva使用及项目搭建
- Photoshop学习(十六):使用矢量蒙版
- 搭建dubbo监控中心
- 李彦宏对话大学生:走出直线人生
- android 皮肤包换肤之Resources加载(一)
- SPAMS Matlab 安装
- Kinect体感互动解决方案——体感人影粒子
- 每天学点说话技巧+人性的弱点 +陈吉宁
- C程序|实现使用OPENSSL库 发送HTTPS请求,并接收数据|例如请求12306获取高铁、动车、火车车次信息的方法
- 微机原理复试问题整理