Cesium 1.102新老版本webgl区别

Cesium 1.102以上的版本主要支持WebGL 2,这意味着着色器语言(GLSL)的版本也有所变化。在WebGL 2环境下,GLSL ES 3.00版本被广泛采用,而WebGL 1则通常使用GLSL ES 1.00版本。这种版本的改变影响了着色器的编写方式和可用的API。

下面是一些关键的语法区别:

1. texture 函数

在WebGL 1中,纹理采样使用texture2D函数,而在WebGL 2中,推荐使用texture函数。texture函数提供了更多灵活性,并且能够支持不同类型的纹理单元。

WebGL 1 (GLSL ES 1.00):

vec4 texColor = texture2D(uTextureSampler, vTexCoord);

WebGL 2 (GLSL ES 3.00):

vec4 texColor = texture(uTextureSampler, vTexCoord);

2. 数据类型

在WebGL 2中引入了一些新的数据类型,例如uintint等,以及更高精度的浮点数类型。

WebGL 1 (GLSL ES 1.00):

float myFloat;

WebGL 2 (GLSL ES 3.00):

uint myUint;
int myInt;
float myFloat;

3. 精度修饰符

WebGL 2增加了highpmediumplowp精度修饰符的支持,这允许开发者更加精细地控制着色器中的精度。

WebGL 1 (GLSL ES 1.00):

varying vec2 vTexCoord;

WebGL 2 (GLSL ES 3.00):

varying mediump vec2 vTexCoord;

4. 着色器构造

WebGL 2允许使用更复杂的着色器结构,例如struct,以及更高级的数学函数。

WebGL 2 (GLSL ES 3.00):

struct Light {
    vec3 position;
    vec3 color;
};

Light light;

void main() {
    ...
}

5. discard 关键字

在WebGL 2中,discard关键字可以用来丢弃一个像素的片段,这在WebGL 1中是不允许的。

WebGL 2 (GLSL ES 3.00):

if (someCondition) {
    discard;
}

6. inout 关键字

在WebGL 2中,attributevaryinginout关键字所取代。

WebGL 1 (GLSL ES 1.00):

attribute vec4 aVertexPosition;
varying vec2 vTexCoord;

WebGL 2 (GLSL ES 3.00):

in vec4 aVertexPosition;
out vec2 vTexCoord;

7. layout 关键字

在WebGL 2中,layout关键字可以用来指定变量的位置和其他属性。

WebGL 2 (GLSL ES 3.00):

layout(location = 0) in vec4 aVertexPosition;

8. 函数重载

在WebGL 2中,可以定义多个同名但参数类型不同的函数,这在WebGL 1中是不允许的。

9. 纹理采样器类型

WebGL 2支持多种类型的纹理采样器,例如sampler2D, samplerCube, isampler2D等。

9. 片段着色器中用于输出最终颜色gl_FragColor改为out_FragColor

WebGL 1 (GLSL ES 1.00):

 gl_FragColor = mix(gl_FragColor,helsing_invisibleAreaColor,.5);

WebGL 2 (GLSL ES 3.00):

 out_FragColor = mix(out_FragColor ,helsing_invisibleAreaColor,.5);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

GIS-CL

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值