基元处理

  • 一、曲面细分
    • 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版)之第八章基元处理相关推荐

  1. 《OpenGL超级宝典第5版》学习笔记(一)—— 第一个OpenGL程序

    // GLTools库包含了一个用于操作矩阵和向量的3D数学库,并依靠GLEW获得OpenGL3.3中用来产生和渲染一些简单3D对象的函数, // 以及对视觉平截头体.相机类和变换矩阵进行管理的函数的 ...

  2. OpenGL超级宝典第7版环境配置

    1.下载源码 地址:http://www.openglsuperbible.com/ 2.运行Cmake,编译glfw库 打开项目后,编译工程(Debug和Release下都编译). 把E:\open ...

  3. 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渲染管线 ...

  4. OpenGL超级宝典(第五版)环境配置

    本文转自:http://blog.csdn.net/sunny_unix/article/details/8056807,感谢作者分享. OpenGL超级宝典(第五版)环境配置 Vs2008+winX ...

  5. OpenGL超级宝典(第五版)环境配置【转】

    OpenGL超级宝典(第五版)环境配置 Vs2008+winXP  后续会整理Ubuntu 12.04LTS下的配置作者:sunny_unix 1.各种库的配置 (1)glew 下载:https:// ...

  6. OpenGL超级宝典(第五版) 环境配置

    特别提醒:有些在word中或者其他中的代码复制到vs中会报错,原因是word中有些隐含的字符,复制到vs中就会报错:重新输一遍就可以解决问题,这里只是提醒下! 可以参阅我前面转载的一篇文章,进行比较然 ...

  7. OpenGL超级宝典(第五版) 环境配置(WinXp+VS2008)

    转自:http://blog.csdn.net/sunny_unix/article/details/8056807 OpenGL超级宝典(第五版)环境配置 1.各种库的配置 (1)glew 下载:h ...

  8. [转]OpenGL超级宝典 5e 环境配置

    OpenGL超级宝典(第五版)环境配置 1.各种库的配置 (1)glew 下载:https://sourceforge.net/projects/glew/files/glew/1.7.0/glew- ...

  9. OpenGL超级宝典学习笔记——操作矩阵

    为了更强大的功能和灵活性,我们有时需要直接操作矩阵.在OpenGL中4x4的矩阵用包含16个浮点数值的一维数组来表示,而不是用二维的4x4的数组来表示.OpenGL之所以这么做,因为使用一维数组更高效 ...

  10. win7 上配置openGL开发环境(配套openGL 超级宝典Super Bible 6th)

    此教程配套openGL 超级宝典super Bible圣经 第六版基于最新openGL4.3,但只有英语版 第六版比第五版(第五版目前有中文版基于openGL3.2)跨了一个时代,改变非常巨大,所以笔 ...

最新文章

  1. squid启动失败的解决办法
  2. android 蓝牙低耗能(LBE)技术介绍
  3. python 发邮件 timeout_python发送邮件
  4. 最长回文子串 C++
  5. Sql 四大排名函数(ROW_NUMBER、RANK、DENSE_RANK、NTILE)简介
  6. dnn305的一个bug
  7. 服务器数据恢复成功案例(磁盘阵列恢复)
  8. 软件开发工具的使用与开发
  9. css入门1 css简介
  10. ipcalc命令 – 简单的IP地址计算器
  11. dva使用及项目搭建
  12. Photoshop学习(十六):使用矢量蒙版
  13. 搭建dubbo监控中心
  14. 李彦宏对话大学生:走出直线人生
  15. android 皮肤包换肤之Resources加载(一)
  16. SPAMS Matlab 安装
  17. Kinect体感互动解决方案——体感人影粒子
  18. 每天学点说话技巧+人性的弱点 +陈吉宁
  19. C程序|实现使用OPENSSL库 发送HTTPS请求,并接收数据|例如请求12306获取高铁、动车、火车车次信息的方法
  20. 微机原理复试问题整理

热门文章

  1. Windows 98 不同用途启动盘制作(转)
  2. win98万能显卡驱动_win98/98系统 u盘万能驱动
  3. 程序设计导引及在线实践之显示器
  4. java爬虫框架哪个好_Java爬虫(二)Java爬虫框架
  5. Openstack学习笔记(十五)-Horizon源代码学习笔记(五)
  6. 阿里云地域和可用区怎么选?
  7. 史上最简单的Mybatis教程(5天就够了)
  8. 关于soapUi工具的安装使用教程
  9. python和大数据的关系_Java大数据和python大数据哪个更主流?
  10. size函数 matlab 含义,size()函数的使用