前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >GLSL ES 语言—变量数值类型

GLSL ES 语言—变量数值类型

作者头像
张晓衡
发布2019-09-11 18:09:24
3K0
发布2019-09-11 18:09:24
举报

数值类型

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 的类型可以是除数组外的任意类型

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-06-17,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Creator星球游戏开发社区 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 数值类型
  • 变量
  • GLSL ES是强类型语言
  • 基本类型
  • 赋值和类型转换
  • 运算符
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档