I am trying to mask a background image that is smaller than a mask. and the space between the background and the mask turns black.


This is the code I'm using:
batch.end(); batch.begin(); Gdx.gl20.glColorMask(false, false, false, true); batch.setBlendFunction(GL20.GL_ONE, GL20.GL_ZERO); batch.draw(mask, getX(), getY()); batch.flush(); Gdx.gl20.glColorMask(true, true, true, true); batch.setBlendFunction(GL20.GL_DST_ALPHA, GL20.GL_ONE_MINUS_DST_ALPHA); batch.draw(texture, getX(), getY()); batch.flush(); batch.setBlendFunction(GL20.GL_SRC_ALPHA,GL20.GL_ONE_MINUS_SRC_ALPHA); batch.end(); batch.begin();
I tried all kinds of combinations of functions without any success. maybe I missed something.
Update
Attaching a graph in which I build all the possible (relevant) results of the src and dst mixing functions. Fortunately, none of the below works, and, as I already guessed, you need to do something else to achieve the result.
Gdx.gl20.glColorMask(true, true, true, true); batch.setBlendFunction(src_func, dst_func); batch.draw(texture, getX(), getY());

opengl libgdx
Rami
source share