我正在创建一个我手动布局a texture atlas的应用程序。整点是图像本身不应该是透明的 - 它具有一致的背景颜色,然后应该在代码中删除。
我遇到的问题是,我似乎无法从我正在处理的Pixmap
中移除像素 - 使它们变得透明。我已确保对Pixmap
Format
使用RGBA_8888
,这肯定会支持透明度。
以下是我遇到问题的代码:
pixmap.drawPixel(x, y, 0x00000000);
很明显,0x00000000
将为零 - 即使从十六进制转换为基数十 - 严重,它是相同的数字!
根据我的观察,我注意到drawPixel
方法将一个像素绘制到当前的像素上。我想要的是让它变得透明。使用上面提到的代码,它将透明度绘制到不透明的东西上 - 最终不会改变任何东西。就好像你什么都没有添加东西一样,东西仍然存在。
Pixmap
及其drawPixel
方法找到了。
也许有人可以指出我如何制作Pixmap
透明像素的正确方向?
答案 0 :(得分:3)
正如您已经发现的那样,您无法在现有像素上绘制混合透明像素,因为您无法看到任何内容。首先,您需要禁用Pixmap混合。
Pixmap.setBlending(Pixmap.Blending.None); // before you start drawing pixels.
pixmap.drawPixel(x, y, 0x00000000);
// And all pixels you want to draw
Pixmap.setBlending(Pixmap.Blending.SourceOver); // if you want to go back to blending
如果要维护现有像素的RGB,则必须获取当前像素颜色并仅手动将alpha分量设为黑色:
pixmap.drawPixel(x, y, pixmap.getPixel(x, y) & 0xffffff00);