03 WebGL 着色器编程语言GLSL ES的变量类型、赋值和类型转换、运算符
来源:互联网 发布:包装版面设计软件 编辑:程序博客网 时间:2024/06/05 03:09
GLSL ES是强类型语言
GLSL ES不像JavaScript,使用var关键字来声明所有变量。GLSL ES要求你具体地指明变量的数据类型。我们在示例程序中用来这种方式声明变量:
<类型><变量名>
如:
vec4 a_Position;我们知道,在定义如main()函数这类函数的时候,必须制定函数的返回值。同样,在进行赋值操作(=)的时候,等号两侧的数据类型也必须一样,否则就出错。
因此,GLSL ES被称为强类型语言,你必须时刻注意变量的类型。
基本类型:
为变量制定类型有利于WebGL系统检查代码错误,提高程序的运行效率。下面是一些声明基本类型变量的例子:
float klimt; //变量为一个浮点数int utrillo;//变量为一个整型数bool doga;//变量为一个布尔值
使用等号(=)可以将值赋给变量。我们说过,GLSL ES是强类型语言,所以如果等号左侧变量的类型与等号右侧的值(或变量)类型不一致,就会出错。
int i = 8; //没问题float f1 = 8;//错误float f2 = 8.0;//没问题float f3 = 8.0f;//错误:c语言中常用的像8.0f这样的表达式是不被允许的在语义上,8和8.0其实是一个数值。但是,当你将8赋值给浮点型变量f1时,确实会出错。而且,你将看到如下的错误信息:
failed to compile shader: ERROR: 0:11:'=' : cannot convert from 'const mediump int' to 'float'.要将一个整型数值赋值给浮点型变量,需要将整型数转换成浮点数,这个过程称为类型转换。比如,我们可以使用内置的函数float()来讲整型数转换成浮点数,如下所示:
int i = 8;float f1 = float(i);//将8转换为8.0并赋值给f1float f2 = float(8);//同上GLSL ES支持以下几种用于类型转换的内置函数,如下:
运算符:
GLSL ES支持的运算类型与javascript类似:
阅读全文
0 0
- 03 WebGL 着色器编程语言GLSL ES的变量类型、赋值和类型转换、运算符
- 02 WebGL 着色器编程语言GLSL ES的数据值类型、变量
- 12 WebGL 着色器编程语言GLSL ES的全局变量和局部变量
- 08 WebGL 着色器编程语言GLSL ES的运算符优先级
- 06 WebGL 着色器编程语言GLSL ES的数组
- 10 WebGL 着色器编程语言GLSL ES的函数
- 04 WebGL 着色器编程语言GLSL ES的矢量和矩阵
- 01 WebGL 着色器编程语言GLSL ES概述
- WebGL 着色器语言(GLSL ES)
- 09 WebGL 着色器编程语言GLSL ES的程序流程控制(分支ifelse和循环for)
- 07 WebGL 着色器编程语言GLSL ES的取样器(纹理)
- 05 WebGL 着色器编程语言GLSL ES的结构体
- 11 WebGL 着色器编程语言GLSL ES的内置函数
- 13 WebGL 着色器编程语言GLSL ES的精度限定字
- 14 WebGL 着色器编程语言GLSL ES的预处理指令
- 第二节 WebGL中着色器语言(GLSL ES)的简介
- 变量的赋值和类型转换
- 【OpenGL ES】着色语言GLSL
- 解决Zookeeper启动zkServer.cmd闪退问题
- Python sorted() 函数
- Unresolved error code 0x80040266
- 栈的利用,这题主要读懂题意
- Python(编程小白的第一本 Python 入门书) 学习笔记
- 03 WebGL 着色器编程语言GLSL ES的变量类型、赋值和类型转换、运算符
- 一些c++的知识点
- nested exception is org.apache.ibatis.exceptions.PersistenceException
- controller中的变量值,直接在浏览器中显示,无需jsp页面
- stylus之条件(Conditionals)
- Android打造万能的对话框Dialog(三)
- 一起艳恶学习打造一个通用的JDBC
- JS实现倒计时,包含开始,停止;根据毫秒数和格式,返回毫秒数的时间日期;终止setInterval循环;兼容IE8,
- PDFObject.js的使用