Opengl es 在着色器中旋转、移动和缩放遮罩
我想在着色器中移动(或其他动作)遮罩。但我不知道如何在着色器中执行这些动作 我的代码:Opengl es 在着色器中旋转、移动和缩放遮罩,opengl-es,libgdx,shader,Opengl Es,Libgdx,Shader,我想在着色器中移动(或其他动作)遮罩。但我不知道如何在着色器中执行这些动作 我的代码: @Override public void create() { batch = new SpriteBatch(); background = new Texture(Gdx.files.internal("images/background.png")); spritebackgournd = new Sprite(background,Gdx.graphics.
@Override
public void create() {
batch = new SpriteBatch();
background = new Texture(Gdx.files.internal("images/background.png"));
spritebackgournd = new Sprite(background,Gdx.graphics.getWidth(),Gdx.graphics.getHeight());
foreground = new Texture(Gdx.files.internal("images/foreground.png"));
mask = new Texture(Gdx.files.internal("images/mask.png"));
spriteforegournd = new Sprite(foreground,Gdx.graphics.getWidth(),Gdx.graphics.getHeight());
shader = new ShaderProgram(Gdx.files.internal("shaders/shader1.vert"), Gdx.files.internal("shaders/shader1.frag"));
}
@Override
public void render() {
batch.begin();
spritebackgournd.draw(batch);
batch.setShader(shader);
Gdx.graphics.getGL20().glActiveTexture(GL20.GL_TEXTURE0);
spriteforegournd.getTexture().bind(0);
//texture.bind(0);
shader.setUniformi("u_texture", 0);
Gdx.graphics.getGL20().glActiveTexture(GL20.GL_TEXTURE1);
//spritemask.getTexture().bind(1);
mask.bind(1);
shader.setUniformi("u_mask", 1);
Gdx.graphics.getGL20().glActiveTexture(GL20.GL_TEXTURE0);
spriteforegournd.draw(batch);
batch.end();
batch.setShader(null);
}
顶点着色器:
attribute vec4 a_position;
attribute vec4 a_color;
attribute vec2 a_texCoord0;
uniform mat4 u_projTrans;
varying vec2 v_texCoords;
void main() {
v_texCoords = a_texCoord0;
gl_Position = u_projTrans * a_position;
}
片段着色器:
varying vec2 v_texCoords;
uniform sampler2D u_texture;
uniform sampler2D u_mask;
uniform mat4 u_projTrans;
void main() {
vec4 texColor = texture2D(u_texture, v_texCoords);
vec4 maskColor = texture2D(u_mask, v_texCoords);
gl_FragColor = texColor * maskColor.a;
}
我希望能够在着色器中缩放、旋转和移动遮罩。我如何才能做到这一点?最好的方法取决于您的最终目标。有很多不同的精灵需要不同方向的面具吗?或者一堆精灵共用同一个面具?@Tenfour04一个面具和一个精灵(spriteforeground)。最好的方法取决于你的最终目标。有很多不同的精灵需要不同方向的面具吗?或者一堆精灵共用同一个面具?@Tenfour04一个面具和一个精灵(spriteforeground)。