openGL贝塞尔曲面细分
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贝塞尔曲面细分相关推荐
- OpenGL深入探索——曲面细分
转载自:曲面细分[对翻译欠妥的地方进行了修正,增加了程序运行结果图,并进行补充说明] 原文链接:英文原文 背景 曲面细分( Tessellation )是 OpenGL4.x 中的一个令人兴 ...
- 曲面细分(subdivision)曲面细分着色器GPU的LOD
曲面细分是指将一个模型的面合理的分成更多小的面,从而提升模型精度,提高渲染效果 曲面简化是指将一个模型的面合理的合成更少的面,从而降低模型精度,为特定情形下提供使用(如LOD技术) .这一过程是可以在 ...
- NeHe OpenGL第二十八课:贝塞尔曲面
NeHe OpenGL第二十八课:贝塞尔曲面 贝塞尔曲面: 这是一课关于数学运算的,没有别的内容了.来,有信心就看看它吧. 贝塞尔曲面 作者: David Nikdel ( ogapo@ithink. ...
- OpenGL中的曲面细分和几何着色器
[摘要]本文我们先介绍OpenGL中的曲面细分的一些基本概念,然后给两个例子说明不得不用这项技术的理由. 曲面细分是OpenGL 4.0之后才定义的功能,使用之前请确认你的显卡驱动支持OpenGL4. ...
- openGL曲面细分
openGL系列文章目录 文章目录 openGL系列文章目录 前言 一.OpenGL 中的曲面细分 二.代码 1.主程序c++ 效果 前言 术语Tessellation(镶嵌)是指一大类设计活动,通常 ...
- 【一步步学OpenGL 31】 -《PN(Point-Normal)三角形曲面细分》
教程 31 PN(Point-Normal)三角形曲面细分 原文: http://ogldev.atspace.co.uk/www/tutorial31/tutorial31.html CSDN完整版 ...
- 计算机图形学【GAMES-101】5、几何(距离函数SDF、点云、贝塞尔曲线、曲面细分、曲面简化)
快速跳转: 1.矩阵变换原理Transform(旋转.位移.缩放.正交投影.透视投影) 2.光栅化(反走样.傅里叶变换.卷积) 3.着色计算(深度缓存.着色模型.着色频率) 4.纹理映射(重心坐标插值 ...
- Surface Shaders with DX11 / OpenGL Core Tessellation 表面着色的曲面细分 - Unity Shader Reference 系列5
Surface Shaders with DX11 / OpenGL Core Tessellation DX11/OpenGL核心下表面着色器的曲面细分 本文档主要是对Unity官方手册的个人理解与 ...
- [OpenGL] 曲面细分特性实践
参考资料: https://www.nvidia.cn/object/tessellation_cn.html https://www.opengl.org/wiki/Tessellation 背景 ...
最新文章
- linux命令输入错误怎么弄,Linux下用shopt命令来帮我们自动纠错输入cd 错误
- Matlab中函数使用
- mongoose只更新数组中某一项的字段
- 后端在插入数据发现重复如何正确的弹出警告_前百度面试官整理的——Java后端面试题(一)...
- linux cat cd,linux 文件系统命令 cat cd chmod
- CoordinatorLayout 使用综述系列(二)与AppBarLayout结合上下联动效果
- 低格硬盘用什么软件_迟来的评测:用了三年后的固态硬盘会变成什么样呢?
- python 千位分隔符_玩转千位分隔符输出 - leejun2005的个人页面 - OSCHINA - 中文开源技术交流社区...
- Python实现B样条代码
- 思科路由器配置命令(三)
- 怎么样学习Java?
- Three Bags CodeForces - 1467C (贪心)
- 用计算机弹抖音上最火的纯音乐,抖音十大最火歌曲排名,包含几首超燃bgm纯音乐...
- 博弈论(van♂游戏) 笔记
- manjaro 中文输入法
- 解决win10 自动同步时间灰色
- 【JokerのZYNQ7020】INTERRUPT(PL产生,PS处理)。
- 《Windows 程序设计(第3版)》——导读
- unity3D 点击按钮 播放音频
- oracle计算一个日期加上指定工作日(排除周六周日和一系列节假日)时间