OpenGL渲染管线中的着色器(抽象画)

举报
天元浪子 发表于 2021/11/25 15:39:07 2021/11/25
【摘要】 OpenGL的工作流程通常被描述为渲染管线(rendering pipeline),该管线上的每一个环节都依赖相应的着色器(shader)来处理数据。在OpenGL 3.0版本(包括该版本)之前,用户可以使用固定功能管线(fixed-function pilpline)以避免编写着色器程序,但是从3.1版本开始,OpenGL从核心模式中移除了固定功能管线,使用着色器成了用户唯一的选择。

       OpenGL的工作流程通常被描述为渲染管线(rendering pipeline),该管线上的每一个环节都依赖相应的着色器(shader)来处理数据。在OpenGL 3.0版本(包括该版本)之前,用户可以使用固定功能管线(fixed-function pilpline)以避免编写着色器程序,但是从3.1版本开始,OpenGL从核心模式中移除了固定功能管线,使用着色器成了用户唯一的选择。

渲染管线.png

       上图是根据我自己的理解绘制的渲染管线处理流程示意图。可以看出,整个管线上有四个环节使用四种不同的着色器,分别是顶点着色器、细分着色器、几何着色器和片元着色器,其中细分着色器又分为细分控制着色器和细分估值着色器。渲染管线中的细分着色器、几何着色器并非必需,使用它们是为了获得更好的效果。一般情况下,仅适用顶点着色器和片元着色器就可以生成模型。

       除了上述四种着色器外,还有一种独立于渲染管线之外的着色器,叫做计算着色器,用于处理其他着色器程序所创建的和使用的缓存数据。

       不同类型的着色器源码经过编译、连接后生成着色器程序,编译时需要为着色器源码指定着色器类型。下面是OpenGL为不同类型的着色器预定义的常量。

着色器   常量名
常量值
顶点着色器  GL_VERTEX_SHADER 35633 
细分控制着色器  GL_TESS_CONTROL_SHADER 36488 
细分估值着色器  GL_TESS_EVALUATION_SHADER  36487 
几何着色器  GL_GEOMETRY_SHADER  36313 
片元着色器  GL_FRAGMENT_SHADER 35632
计算着色器  GL_COMPUTE_SHADER  37305 

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。