OpenGL Shading language学习总结

这篇文章是根据<OpenGL ES 2.0游戏开发(上卷):基础技术和典型案例 >中对应章节的总结,看了好几本OpenGL ES的入门图书,只有这本让我在入门的时候不那么迷茫,强烈推荐!非常遗憾,这本书没有电子正版,我只能购买一本正版图书,然后下载一个pdf版本在公交上阅读。


着色语言概述

OpenGL ES 着色语言是一种高级的图形编程语言,其源自于广泛使用的C语言,同时具有RenderMan以及其他着色语言的一些优良特性,易于被开发人员掌握。简单来说,OpenGL ES着色语言主要包括一下特性:
  • OpenGL ES 着色语言是一种高级的过程语言(注意,不是面向对象)
  • 对顶点着色器、片元着色器使用的是同样的语言,不做区分
  • 基于C/C++的语法以及流程控制
  • 完美支持向量和矩阵的各种操作
  • 通过类型限定符来管理输入和输出
  • 拥有大量的内置函数来提供丰富的功能

着色语言基础

一. 数据类型概述

总体来说,数据类型可以分为标量,向量,矩阵,采样器,结构体以及数组等几类。
1. 标量:标量也被称为“无向量”,其值只具有大小,并不具有方向。OpenGL ES 着色语言支持的标量类型有bool、int、float。
2. 向量:OpenGL ES 着色语言中,向量可以看做是同样类型的标量组成的,其基本类型也分为bool、int以及float 3种。每个向量可以由2个、3个或者4个相同的标量组成。向量在着色器代码的开发中有着十分重要的作用,可以很方便地存储以及操作颜色、位置、纹理坐标等不仅包含一个组成部分的量。访问向量中的各个分量不但可以采用“.”加上不同的分量名,还可以将向量看成一个数组,用下标来进行访问。
3. 矩阵:矩阵按尺寸可以分为2x2矩阵,3x3矩阵,以及4x4矩阵。OpenGL ES 着色语言中,矩阵是按列顺序组织的,也就是一个矩阵可以看作为几个列向量组成的。对于矩阵的访问,可以将矩阵作为列向量的数据来访问,如:matrix为一个mat4,可以使用matrix[2]来获取该矩阵的第3列,其为一个vec4。
4. 采样器:采样器是着色语言中不同于C语言的一种特殊的基本数据类型,其专门用来进行纹理采样的相关操作。一般情况下,一个采样器变量代表一幅或一套纹理贴图。
5. 结构体:OpenGL ES 着色语言还提供了类似于C语言中的用户自定义结构体,同样也是使用struct关键字进行声明。
6. 数组:在着色语言中,开发人员可以声明任何类型的数组。声明数组的方式主要有两种:
        
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值