Masking image that contains alpha makes the inner mask black
I'm trying to mask a background image that is smaller than the mask. and the space between the background and mask appears 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 kind function combinations without any success. probably i'm missing something.
Update
Attaching chart that I build of all possible (relevant) results of src and dst blending function. Fortunately none of the below is working, and as I guessed there is something more need to be done in order to achieve the result.
Gdx.gl20.glColorMask(true, true, true, true);
batch.setBlendFunction(src_func, dst_func);
batch.draw(texture, getX(), getY());
使用FrameBuffer解决它。
batch.end();
spriteBatch.begin();
buffer.begin();
Gdx.gl20.glColorMask(false, false, false, true);
spriteBatch.setBlendFunction(GL20.GL_ONE, GL20.GL_ZERO);
spriteBatch.draw(mask, 0,0);
Gdx.gl20.glColorMask(true, true, true, true);
spriteBatch.setBlendFunction(GL20.GL_DST_ALPHA, GL20.GL_ZERO);
spriteBatch.draw(texture, 0,0);
spriteBatch.setBlendFunction(GL20.GL_SRC_ALPHA, GL20.GL_ONE_MINUS_SRC_ALPHA);
buffer.end();
spriteBatch.end();
batch.begin();
batch.draw(buffer.getColorBufferTexture(), getX(), getY());
Just taking a look at your images, it looks like:
In other words, you only want alpha where both images have alpha.
I haven't yet been able to look into more of the blending functions and how they work, and may update with further details on how to achieve your goals as I figure it out, but maybe knowing what you are trying to accomplish will help you figure it out before I get to it.
How to do blending in LibGDX - this question seems interesting, combining the source and destination images in a grid to show the effects.
链接地址: http://www.djcxy.com/p/30310.html上一篇: 在三星Galaxy设备上同时访问前后相机
下一篇: 包含alpha的蒙版图像会使内蒙版变黑