我试过在LibGDX论坛上问这个问题没有运气。
基本上,我已经创建了自己的打包程序,它需要多个spritesheets like these并将它们打包成like this。因此,我可以将这些打包文件作为TextureRegions的数组加载它们的X和Y偏移量,这样就可以将它们绘制成实际上具有所有这些不必要的透明像素。
无论如何,这就是我的所作所为:
与Pixmap相关的代码段:
图片加载:
final Pixmap image = new Pixmap(imageData.getFileHandle());
将图像绘制成更小的部分:
final Pixmap tile =
new Pixmap(imageData.getTileWidth() - offsetLeft - offsetRight, imageData.getTileHeight()
- offsetTop - offsetBottom, image.getFormat());
tile.drawPixmap(image, -columnIndex * imageData.getTileWidth() - offsetLeft,
-rowIndex * imageData.getTileHeight() - offsetTop);
为打包图像创建新的Pixmap:
Pixmap packedImage =
new Pixmap(packedImageWidth, packedImageHeight, image.getFormat());
将片段绘制成像素图:
packedImage.drawPixmap(frame.getPixmap(), frame.getOriginX(), frame.getOriginY());
保存打包图像:
final PixmapIO.PNG png = new PixmapIO.PNG();
png.setCompression(Deflater.NO_COMPRESSION);
png.setFlipY(false);
try {
png.write(chosenDirectory.child(packedFileName + FILE_FORMAT), packedImage);
} catch (final IOException exception) {
throw new RuntimeException(exception);
}
因此,颜色有些扭曲:
(左:包装后,右:包装前,装载并呈现为纹理。)
我打包的任何步骤都会扭曲图像还是保存部分?我是否必须寻找另一种解决方案(纯Java图像处理?)或者有没有办法使用LibGDX API保留颜色?
答案 0 :(得分:3)
由于您不希望将这些精灵混合到目标Pixmap上,而是替换那里的像素,我认为您要在开始调用任何内容Pixmap.setBlending(Blending.None);
之前设置drawPixmap