opengl es 第五课(分解图片)

进入 GLSL 阶段

把kunkun大卸4块的代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
precision highp float;
uniform sampler2D Texture;
varying highp vec2 TextureCoordsVarying;

void main() {
vec2 uv = TextureCoordsVarying.xy;
// if (uv.x < 1.0 / 3.0) {
// uv.x = uv.x * 3.0;
// } else if (uv.x < 2.0 / 3.0) {
// uv.x = (uv.x - 1.0 / 3.0) * 3.0;
// } else {
// uv.x = (uv.x - 2.0 / 3.0) * 3.0;
// }
// if (uv.y <= 1.0 / 3.0) {
// uv.y = uv.y * 3.0;
// } else if (uv.y < 2.0 / 3.0) {
// uv.y = (uv.y - 1.0 / 3.0) * 3.0;
// } else {
// uv.y = (uv.y - 2.0 / 3.0) * 3.0;
// }

if (uv.x - uv.y <= 0.04 && uv.x - uv.y >= -0.04) {
if (uv.x - uv.y <= 0.01 && uv.x - uv.y >= -0.01){
// gl_FragColor = vec4(1.0, 0.0, 0.0, 1.0);
}
else{
gl_FragColor = vec4(0.0, 0.0, 0.0, 1.0);
}
}
else if(uv.x + uv.y <= 1.04 && uv.x + uv.y >= 0.96){
if(uv.x + uv.y <= 1.01 && uv.x + uv.y >= 0.99){
// gl_FragColor = vec4(1.0, 0.0, 0.0, 1.0);
}
else{
gl_FragColor = vec4(0.0, 0.0, 0.0, 1.0);
}
}
else{

if(uv.x + uv.y < 1.0){
uv.x = uv.x + 0.025;
uv.y = uv.y + 0.025;
}
else{
uv.x = uv.x - 0.025;
uv.y = uv.y - 0.025;
}
gl_FragColor = texture2D(Texture, uv);
}
}

顶点着色

1
2
3
4
5
6
7
8
9

attribute vec4 Position;
attribute vec2 TextureCoords;
varying vec2 TextureCoordsVarying;

void main (void) {
gl_Position = Position;
TextureCoordsVarying = TextureCoords;
}