Adreno SDK Graphics(1)

一、Shader简介

着色器(Shader)是运行在GPU上的小程序。这些小程序为图形渲染管线的某个特定部分而运行。从基本意义上来说,着色器只是一种把输入转化为输出的程序。着色器也是一种非常独立的程序,因为它们之间不能相互通信;它们之间唯一的沟通只有通过输入和输出。
基于Adreno SDK实现的场景渲染及动画制作中,着色器在其中也会被大量的使用到。

二、Shader实现

基本实现过程详解:
着色器是使用一种叫GLSL的类C语言写成的。GLSL是为图形计算量身定制的,它包含一些针对向量和矩阵操作的有用特性。着色器的开头总是要声明版本,接着是输入和输出变量、uniform和函数。每个着色器的入口点都是函数,在这个函数中我们处理所有的输入变量,并将结果输出到输出变量中。

顶点着色器示例:
在这里插入图片描述着色器的开头总是要声明版本,接着是输入和输出变量、uniform和函数。每个着色器的入口点都是函数,在这个函数中我们处理所有的输入变量,并将结果输出到输出变量中。
Uniform是一种从CPU中的应用向GPU中的着色器发送数据的方式,但uniform和顶点属性有些不同。首先,uniform是(Global)。全局意味着uniform变量必须在每个着色器程序对象中都是独一无二的,而且它可以被着色器程序的任意着色器在任意阶段访问。第二,无论你把uniform值设置成什么,uniform会一直保存它们的数据,直到它们被重置或更新。

片段着色器示例:
在这里插入图片描述
GLSL定义in和out关键字实现输入与输出。

当这两部分定义好了之后,就需要编译和链接着色器,有以下几个步骤:
1、编译着色器。此处对顶点着色器以及片段着色器创建句柄,使用Gluint glCreateShader()函数来实现,之后通过glShaderSource()、glCompileShader()实现句柄编译过程。在Adreno SDK的Freamework之中有头函数对其进行了详细的解释说明,当然,它同时也是OpenGL实现过程的一个标准用法,在其教程中解释的最为深入,大家有兴趣可以网上搜索OpenGL的相关教程进行学习了解。
2、检查是否编译成功。
3、将着色器添加到着色器程序中,此处用到了glCreateProgram()来创建着色器程序对外的接口。并将编译好的顶点着色器及片段着色器与其进行绑定。
4、着色器程序进行链接。
5、删除句柄。

下图为详细实现细节,g_hShaderProgram最终在Adren SDK的delete()函数里被删除。
在这里插入图片描述
三、总结
以上主要讲解了OpenGL的着色器实现过程。在基于Adreno SDK的应用开发过程中,将会大量的使用到OpenGL的知识点,因此掌握好OpenGL的基础是很有必要的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值