GLSL ES 语言—变量数值类型

2019-09-11 18:09:24 浏览数 (1)

数值类型

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

布尔值

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

代码语言:javascript复制
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 的类型可以是除数组外的任意类型

0 人点赞