openGL系列文章目录

文章目录

  • openGL系列文章目录
  • 前言
  • 一、贝塞尔曲面细分原理
  • 二、代码
    • 1.主程序c++
  • 效果

前言

现在让我们扩展我们的程序,使它将我们简单的矩形网格转换为贝塞尔曲面。细分网格
应该为我们提供了足够的顶点来对曲面进行采样(如果我们想要更多的话,我们可以增加
内部/外部细分级别)。我们现在需要的是通过管线发送控制点,然后使用这些控制点执行计
算以将细分网格转换为我们所需的贝塞尔曲面。
假设我们希望建立一个立方体贝塞尔曲面,我们将需要16 个控制点。我们可以通过VBO
从C++端发送它们,或者我们可以在顶点着色器中硬编码写死它们。图12.4 概述了来自C++端的控制点的过程。

图1

一、贝塞尔曲面细分原理

现在是更准确地解释曲面细分控制着色器(TCS)如何工作的好时机。与顶点着色器类
似,TCS 对每个传入顶点执行一次。另外,回想一下第2 章,OpenGL 提供了一个名为
gl_VertexID 的内置变量,它保存一个计数器,指示顶点着色器当前正在执行哪次调用。曲
面细分控制着色器中存在一个类似的内置变量gl_InvocationID。
曲面细分的一个强大功能是TCS(以及TES)着色器可以同时访问数组中的所有控制
点顶点。首先,当每个调用都可以访问所有顶点时,TCS 对每个顶点执行一次可能会让人
感到困惑。在每个TCS 调用中,冗余地在赋值语句中指定曲面细分级别也是违反直觉的。
尽管所有这些看起来都很奇怪,但这样做是因为曲面细分的架构设计使得TCS 调用可以
并行运行。
OpenGL 提供了几个用于TCS 和TES 着色器的内置变量。我们已经提到过的是
gl_InvocationID,当然还有gl_TessLevelInner 和gl_TessLevelOuter。以下是一些最有用的内
置变量的更多细节和描述。
曲面细分控制着色器(TCS)内置变量。

openGL贝塞尔曲面细分相关推荐

  1. OpenGL深入探索——曲面细分

    转载自:曲面细分[对翻译欠妥的地方进行了修正,增加了程序运行结果图,并进行补充说明] 原文链接:英文原文​​​​​ 背景 曲面细分( Tessellation )是 OpenGL4.x 中的一个令人兴 ...

  2. 曲面细分(subdivision)曲面细分着色器GPU的LOD

    曲面细分是指将一个模型的面合理的分成更多小的面,从而提升模型精度,提高渲染效果 曲面简化是指将一个模型的面合理的合成更少的面,从而降低模型精度,为特定情形下提供使用(如LOD技术) .这一过程是可以在 ...

  3. NeHe OpenGL第二十八课:贝塞尔曲面

    NeHe OpenGL第二十八课:贝塞尔曲面 贝塞尔曲面: 这是一课关于数学运算的,没有别的内容了.来,有信心就看看它吧. 贝塞尔曲面 作者: David Nikdel ( ogapo@ithink. ...

  4. OpenGL中的曲面细分和几何着色器

    [摘要]本文我们先介绍OpenGL中的曲面细分的一些基本概念,然后给两个例子说明不得不用这项技术的理由. 曲面细分是OpenGL 4.0之后才定义的功能,使用之前请确认你的显卡驱动支持OpenGL4. ...

  5. openGL曲面细分

    openGL系列文章目录 文章目录 openGL系列文章目录 前言 一.OpenGL 中的曲面细分 二.代码 1.主程序c++ 效果 前言 术语Tessellation(镶嵌)是指一大类设计活动,通常 ...

  6. 【一步步学OpenGL 31】 -《PN(Point-Normal)三角形曲面细分》

    教程 31 PN(Point-Normal)三角形曲面细分 原文: http://ogldev.atspace.co.uk/www/tutorial31/tutorial31.html CSDN完整版 ...

  7. 计算机图形学【GAMES-101】5、几何(距离函数SDF、点云、贝塞尔曲线、曲面细分、曲面简化)

    快速跳转: 1.矩阵变换原理Transform(旋转.位移.缩放.正交投影.透视投影) 2.光栅化(反走样.傅里叶变换.卷积) 3.着色计算(深度缓存.着色模型.着色频率) 4.纹理映射(重心坐标插值 ...

  8. Surface Shaders with DX11 / OpenGL Core Tessellation 表面着色的曲面细分 - Unity Shader Reference 系列5

    Surface Shaders with DX11 / OpenGL Core Tessellation DX11/OpenGL核心下表面着色器的曲面细分 本文档主要是对Unity官方手册的个人理解与 ...

  9. [OpenGL] 曲面细分特性实践

    参考资料: https://www.nvidia.cn/object/tessellation_cn.html https://www.opengl.org/wiki/Tessellation 背景 ...

最新文章

  1. linux命令输入错误怎么弄,Linux下用shopt命令来帮我们自动纠错输入cd 错误
  2. Matlab中函数使用
  3. mongoose只更新数组中某一项的字段
  4. 后端在插入数据发现重复如何正确的弹出警告_前百度面试官整理的——Java后端面试题(一)...
  5. linux cat cd,linux 文件系统命令 cat cd chmod
  6. CoordinatorLayout 使用综述系列(二)与AppBarLayout结合上下联动效果
  7. 低格硬盘用什么软件_迟来的评测:用了三年后的固态硬盘会变成什么样呢?
  8. python 千位分隔符_玩转千位分隔符输出 - leejun2005的个人页面 - OSCHINA - 中文开源技术交流社区...
  9. Python实现B样条代码
  10. 思科路由器配置命令(三)
  11. 怎么样学习Java?
  12. Three Bags CodeForces - 1467C (贪心)
  13. 用计算机弹抖音上最火的纯音乐,抖音十大最火歌曲排名,包含几首超燃bgm纯音乐...
  14. 博弈论(van♂游戏) 笔记
  15. manjaro 中文输入法
  16. 解决win10 自动同步时间灰色
  17. 【JokerのZYNQ7020】INTERRUPT(PL产生,PS处理)。
  18. 《Windows 程序设计(第3版)》——导读
  19. unity3D 点击按钮 播放音频
  20. oracle计算一个日期加上指定工作日(排除周六周日和一系列节假日)时间

热门文章

  1. Let_god_knows
  2. 猕猴桃酵素的功效_过路老熊_新浪博客
  3. 数据安全与销毁:数据安全已经上升到了国家战略层面
  4. 免费pdf合并在线,这几个神仙网站请收好
  5. 2015年,我的创业记忆片段
  6. Debugging RJS
  7. DC report_timing 报告分析(STA)
  8. 越狱苹果手机导出网易云音乐歌曲(以及缓存文件转换)
  9. week16 实验B ZJM要抵御宇宙射线
  10. Camera基本结构及原理