GLSL Tessellation Shader的编程入门介绍

本文介绍了OpenGL4.0中的Tessellation Shader,包括Tessellation Control和Evaluation Shader的工作原理,以及如何设置细分等级。Tessellation Shader用于曲面细分,通过指定内外部细分级别实现对几何形状的平滑处理。文章还讨论了Tessellation Shader的输入输出、数据类型选择以及局部坐标系下的坐标变换处理。
摘要由CSDN通过智能技术生成

Tessellation Shader是OpenGL4.0引入的新特性,由Tessellation Control ShaderTessellation Evaluation Shader两部分构成,在管线中位于Vertex Shader和Geometry Shader中间。引入了这两个Shader之后的OpenGL管线如下图所示

Rendering Pipeline Flowchart

这两个Shader正如其名,是为了做曲面细分而存在的。他们的输入叫Patch,是由多个顶点组成的一个结构;输出是图元(Primitive),也就是Geometry Shader输入输出的那个。

OpenGL中添加这两个Shader和添加其他Shader的过程类似,先create,链上代码,编译,最后连接到Shader程序。也就是调用glCreateShader,glShaderSource,glCompileShader,glAttachShader这几个函数。只提一下glCreateShader,建立Tessellation Control Shader用GL_TESS_CONTROL_SHADER,建立Tessellation Evaluation Shader用GL_TESS_EVALUATION_SHADER。如下:

tcs_shader = glCreateShader(GL_TESS_CONTROL_SHADER);
tes_shader = glCreateShader(GL_TESS_EVALUATION_SHADER);

前面提到Tessellation Shader的输入是由多个顶点组成的Patch,这个Patch的顶点数是在OpenGL中调用glPatchParameteri指定的。

void glPatchParameteri​(GLenum pname​​, GLint value​​)
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值