GLSL ES 语言—变量数值类型

数值类型

GLSL 支持两种数据值类型:

  • 数据类型:整数(比如:0、1、2)和浮点数(比如:3.14、29.98)。没有小数点(.)的值被认为是整数,而有小数点的值则被认为是浮点数。

  • 布尔值类型:true和false两个布尔常量。

注意:GLSL ES 不支持字符串类型

变量

变量名需要符合下面规则:

  • 只包括 a~z, A~Z, 0~9 和下划线(_)。

  • 变量名的首字母不能是数字 。

  • 不能以 gl、webgl 或 webgl 开头,这些已经被OpenGL ES 保留了。

  • 不能是 GLSL ES 中的关键字和保留字,但你的变量的一份可以是它们。

GLSL ES是强类型语言

GLSL ES 要求你具体指明变量的数据类型: <类型> <变量名>vec4 a_position。 在进行赋值操作(=)时,等号左右两侧的数据类型必须一样,否则会出错。

基本类型

类型描述
float单精度浮点数类型
int整型数
bool布尔值

下面是声明基本类型变量的例子:

float klimt; //变量为一个浮点数	
int utrillo; //变量为一个整型数	
bool doga;   //变量为一个布尔值

赋值和类型转换

使用等号(=)可以将值赋给变量,GLSL ES 是强类型语言,在语义上 8 和 8.0 是一个值,但是,将 8 赋值给浮点型变量时会出错。

要将一个整型数值赋值给浮点型变量,需要将整形数转换成浮点数,这个过程称为类型转换。 我们可以使用内置函数 float() 将整型数转换为浮点数,如下所示: int i = 0; float f1 = float(i); float f2 = float(8);

GLSL ES 类型转换内置函数:

转换函数描述
转换为整型数int(float)去掉浮点数小数部分,转换为整型数

int(bool)true 转换为1,false 转换为0
转换为浮点点float(int)将整型数转换为浮点数

float(bool)true 转换为1.0,false转换为0.0
转换为布尔值bool(int)0转换为false,非0转换为true

bool(float)0.0 转换为false,非0转换为 true

运算符

GLSL ES 支持运算类型如下:

类别GLSL ES 数据类型描述
-取负int 或 float
*乘法int 或 float,运算的返回值类型与参与运算的值类型相同
/除法
+加法
-减法
++自增(前缀或后缀)int 或 float,运算的返回值类型与参与运算的值类型相同
--自减(前缀或后缀)
=赋值int、float 或 bool
+= -= *= /=算术赋值int 或 float
< > <= >=比较
== !=比较(是否相等)int、float 或 bool
!取反bool 或结果为bool类型的表达式
&&逻辑与
\\\
^^逻辑异或
condition ? expression1 : express 2三元选择condition的类型为bool,expression1 和 expression2 的类型可以是除数组外的任意类型

640?wx_fmt=jpeg

《WebGL编程指南》是入门WebGL的绝佳好书,对了解游戏引擎底层渲染原理大有裨益,「奎特尔星球」公众号计划将书中内容拆解成若干篇的知识点笔记,方便大家在碎片时间学习,邀你一起学习!


640?wx_fmt=jpeg

  1. GLSL ES 语言基础

  2. CreatorPrimer 30篇教程汇总

  3. CreatorPrimer|飞机大战(一)

  4. CreatorPrimer|飞机大战(三)

  5. CreatorPrimer|飞机大战(二)

  6. 贝塞尔曲线动作小工具

  7. Creator2.x摄像跟随实现RPG地图

  8. Cocos实现对ETC2的支持

  9. CreatorPrimer|组件编码心得(上)

  10. CreatorPrimer|组件编码心得(中)

  11. CreatorPrimer|组件编码心得(下)

640?wx_fmt=png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值