在着色器中剪切sampler2D

时间:2016-05-21 15:29:16

标签: webgl shader fragment-shader vertex-shader

我想在返回texture2D之前在着色器中剪切或剪切加载的sampler2D纹理的左侧。

目前我在传递到着色器之前进行纹理编辑,但这会发生多次帧,这会破坏性能。纹理编辑可以在着色器中完成吗?

我先传递纹理:

gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, gl.RGBA, gl.UNSIGNED_BYTE, canvas);

然后在着色器中将其用作制服.. 我会在片段着色器或顶点着色器中剪切它吗?

1 个答案:

答案 0 :(得分:1)

clip the texture是什么意思?你没有剪辑纹理。您从纹理中读取数据并决定要对该数据执行的操作。实施例

// don't draw anything if the texture coords reference the right half
// of the texture.
if (someTexCoords.x > 0.5) {
   discard;
}
gl_FragCoord = texture2D(someSampler, someTexCoords);

或者

// Draw red if texture coords access the right half of the texture
vec4 texColor = texture2D(someSampler, someTexCoords);
gl_FragCoord = mix(texColor, vec4(1,0,0,1), step(0.5, someTexCoords.x));

等。