在这一小节,主要学习GLSL的基本数据类型以及控制结构。GLSL具备了C++和Java的很多特性,我们会先了解所有着色阶段共有的特性,再了解各个着色器的专属特性。 1、着色器的基本结构一个着色器程序和一个C程序类似,都是从main()函数开始执行的。同样支持单行注释//以及多行注释/**/#version 330 core
void main(){
转载
2024-04-07 10:08:36
277阅读
数组
GLSL ES 只支持一维数组,且没有 pop()、push() 等操作,声名数组只需要在变量后加上中括号"[ ]" 和数组长度,如下:
//声明含有4个数浮点数的数组
float floatArray[4];
//声明含2个vec4的对象数组
vec4 vec4Array[2];
数组的长度必须大于 0 的整型常量表达式,如下定义:
整型字面量
用const 限定字修
转载
2021-08-08 00:02:32
1093阅读
GLSL全称是 Graphics Library Shader Language (图形库着色器语言),是着色器使用的语言注释: 单行注释:// 多行注释:/* */GLSL是一个强类型的语言变量: 变量的名称可以使用字母,数字以及下划线,但变量名不能以数字开头,还有变量名不能以gl_作为前缀基本数据类型: (1)标量: 支持使用浮点数(
转载
2024-04-30 22:58:00
194阅读
STEP函数step(a, b);当b > a时, 返回1;当b < a时,返回0。函数原型float step(float a, float x)
{
if (a < x)
{
return x;
}
else
{
return a;
}
}应用对控件着色时,x坐标小于0.5时,使用黑色渲染;x坐标
转载
2024-04-16 16:12:13
408阅读
着色器语言是 WebGL 渲染三维图形的关键(也能渲染二维,在浏览器中还可以使用Canvas API做二维渲染),而 GLSL ES 是专门用来编写着色器的编程语言,即我们常说的 Shader 编程语言的一种。
GLSL ES 编程语言是在 OpenGL 着色器语言的基础上,删除和简化一部分功能后形成的,目标平台是消费类电子产器和嵌入式设备(如智能手或游戏机),简化后的 GLSL ES 能够允许硬
转载
2021-08-08 00:07:21
539阅读
X 视窗系统(X Window System)是一个分布式的、网络透明的、设备独立的、多任务的 windowing 和制图系统,它提供标准工具箱和协议来构建图形用户界面 (GUI), 在 Unix,类 Unix 系统和 OpenVMS-几乎所有的现代操作系统都支持它。X 为 GUI 环境提供基本的架构:绘制和移动屏幕上的视窗和能与鼠标和/或键盘相交互。xserver提供X服务,X server 不
转载
2024-08-01 15:26:27
87阅读
函数
GLSL ES 定义函数与 C 语言接近:
返回类型 函数名(类型0 参数0, 类型1 参数1, 类型2 参数2, ..., 类型n 参数n) {
函数计算
return 返回值;
}
参数类型必须为前面教程中讲过的一种,或者像 main() 函数一样没有参数。如果函数没有返回值,可以不需要return语句,这种情况下函数的返回类型必须为void。
注意:可以将自己定义的结构
转载
2021-08-08 15:41:55
545阅读
目录OpenGL ES的简介OpenGL ES的基本流程和概念 篇外话:本来这篇要写SurfaceView和TextureView相关的,但是没有理解清楚,主要是对于纹理和SurfaceFlinger等认知不足,而纹理又是OpenGL的一个重要概念,所以先开启OpenGL的系列,后面再补上SurfaceView和TextureView。我第一次接触OpenGL ES是一年前,但是看到Op
for 语句
for (初始化表达示; 条件表达示; 循环表达式) {
反复执行这里;
}
例如:
for (int i = 0; i < 3; i++) {
sum += i;
}
注意,循环变量(上例中的i)只能在初始化表达式中定义,条件表达式可以为空,空的条件表达式返回true,此外还有一些限制:
只允许有一个循环变量,而且只能是int 或 float 类
转载
2021-08-07 23:59:29
1449阅读
分支
着色器中的分支与循环与JavaScript 和 c 语言本相同。
if 语句和 if-else 语句
使用 if 和 if-else 进行分支判断,控制流程:
if (条件表达式1) {
如果条件表达式1为true执行这里。
} else if (条件表达式2) {
如果条件表达式1为false,而条件表达式2为true执行这里。
} else {
如果上述两个条件都为
转载
2021-08-08 00:01:51
1511阅读
结构体
GLSL ES 中可以使用 struct关键字定义结构体,将已存在的数据类型聚合到一起,如下:
//定义结构体类型light
struct light {
vec4 color;
vec3 position;
};
light l1, l2;
上面定义了结构体类型 light ,包含color和position两个成员变量。为了书写方便,可以在同一条语句中定义结构体
转载
2021-08-08 00:02:12
242阅读
内置函数
GLSL ES 提供了很多内置函数,我们一起来看下:
角度函数
radians 角度制转孤度制 degrees 弧度制转角度制
三角函数
sin 正弦 cos 余弦 tan 正切 asin 反正弦 acos 反余弦 atan 反正切
指数函数
pow 开方 exp 自然指数 log 自然对数 exp2 2的x方 log2 以2为底对数 sqrt 开平方 inversesqrt
转载
2021-08-08 15:43:39
1102阅读
GLSL ES支持数组类型。与JavaScript中的数组不同的是,GLSL ES只支持一维数组,而且数组对象不支持pop()和push()等操作,创建数组时也不需要使用
原创
2023-01-30 16:18:55
139阅读
变量如下定义:
mat3 m3a, m3b, m3c;
vec3 v3a, v3b, v3c;
float t;
矢量和浮点数的运算
v3b = v3a + f;
其效果是为矢量的每一个分量加上浮点数f,与下面代码相同:
v3b.x = v3a.x + f;
v3b.y = v3a.y + f;
v3b.z = v3a.z + f;
其它操作符 -、*、/ 效果一样。
矢量
转载
2021-08-08 00:03:50
248阅读
数值类型
GLSL 支持两种数据值类型:
数据类型:整数(比如:0、1、2)和浮点数(比如:3.14、29.98)。没有小数点(.)的值被认为是整数,而有小数点的值则被认为是浮点数。
布尔值类型:true和false两个布尔常量。
注意:GLSL ES 不支持字符串类型。
变量
变量名需要符合下面规则:
只包括 a~z, A~Z, 0~9 和下划线(_)。
变量名的首字母不能是数
转载
2021-08-08 00:06:34
906阅读
取样器
GLSL ES 内置一种数据类型为取样器(sampler),我们可以通过该类型变量访问纹理,取样器有两种类型:sampler2d 和 samplerCube。
注意:取样器只能是 uniform 变量(关于 uniform 变量我们后面会专门介绍),看下面代码:
uniform sampler2D u_Sampler;
取样器只能通过 WebGL 方法 gl.uniformli() 进
转载
2021-08-08 00:03:51
282阅读
ES6参考---es5中数组方法一、总结一句话总结:a、值位置:indexOf(value) 或 lastIndexOf(value):得到值在数组中的第一个(最后一个)下标b、遍历回调型:forEach(遍历数组)、map(遍历返回加工之后的数组)、filter(遍历返回符合要求的数组)1. Array.prototype.indexOf(value) : 得到值在数组中的第一个下标2. Arr
转载
2020-03-23 19:38:00
124阅读
2评论
提供一些参考文档的链接给大家
转载
精选
2008-03-06 17:29:49
1051阅读
electron参考文档进入网页后,找到适当的语言。可在线查看
原创
2022-11-08 18:55:22
58阅读
# 创建 jQuery 参考文档的流程与实现
在现代网页开发中,jQuery 是一个非常流行的 JavaScript 库,它简化了 HTML 文档的操作、事件处理和动画效果。如果你是一名刚入行的小白,可能会对如何创建一个 jQuery 参考文档感到困惑。在这篇文章中,我将详细地给你讲解整个流程,并提供必要的代码示例,帮助你快速上手。
## 流程步骤
在实现 jQuery 参考文档之前,我们需
原创
2024-10-16 06:37:21
16阅读