OpenGL渲染管线中的着色器(抽象画)
【摘要】 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从核心模式中移除了固定功能管线,使用着色器成了用户唯一的选择。
上图是根据我自己的理解绘制的渲染管线处理流程示意图。可以看出,整个管线上有四个环节使用四种不同的着色器,分别是顶点着色器、细分着色器、几何着色器和片元着色器,其中细分着色器又分为细分控制着色器和细分估值着色器。渲染管线中的细分着色器、几何着色器并非必需,使用它们是为了获得更好的效果。一般情况下,仅适用顶点着色器和片元着色器就可以生成模型。
除了上述四种着色器外,还有一种独立于渲染管线之外的着色器,叫做计算着色器,用于处理其他着色器程序所创建的和使用的缓存数据。
不同类型的着色器源码经过编译、连接后生成着色器程序,编译时需要为着色器源码指定着色器类型。下面是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)