我不确定是否有更简单的方法,但是我创建了一种方法来处理掩码,并将掩码与原始像素图组合成一张结果像素图。
public void pixmapMask(Pixmap pixmap, Pixmap mask, Pixmap result, boolean invertMaskAlpha){
int pixmapWidth = pixmap.getWidth();
int pixmapHeight = pixmap.getHeight();
Color pixelColor = new Color();
Color maskPixelColor = new Color();
Pixmap.Blending blending = Pixmap.getBlending();
Pixmap.setBlending(Blending.None);
for (int x=0; x<pixmapWidth; x++){
for (int y=0; y<pixmapHeight; y++){
Color.rgba8888ToColor(pixelColor, pixmap.getPixel(x, y)); // get pixel color
Color.rgba8888ToColor(maskPixelColor, mask.getPixel(x, y)); // get mask color
maskPixelColor.a = (invertMaskAlpha) ? 1.0f-maskPixelColor.a : maskPixelColor.a; // IF invert mask
pixelColor.a = pixelColor.a * maskPixelColor.a; // multiply pixel alpha * mask alpha
result.setColor(pixelColor);
result.drawPixel(x, y);
}
}
Pixmap.setBlending(blending);
}
Shader
可以做到,但我对它一无所知。这就是我在问题中的意思,我没有经验。所以,如果您能提供给我代码,我将非常感激。 - iibrahimbakr