我将原生Android游戏迁移到libGDX。这就是我使用翻转图形的原因。显然NinePatch
不能被翻转。 (它们是不可见的或look strange。)
什么会更有效:
TextureAtlas
并加载两次(翻转和解压缩)或TextureAtlas
,为NinePatch图形使用第二个小的一个?A型:
public static TextureAtlas atlas, atlas2;
public static void load() {
// big atlas (1024 x 1024)
atlas = new TextureAtlas(Gdx.files.internal("game.atlas"), true);
// find many AtlasRegions here
// Same TextureAtlas. Loaded into memory twice?
atlas2 = new TextureAtlas(Gdx.files.internal("game.atlas"), false);
button = ninepatch.createPatch("button");
dialog = ninepatch.createPatch("dialog");
}
B型:
public static TextureAtlas atlas, ninepatch;
public static void load() {
// big atlas (1024 x 1024)
atlas = new TextureAtlas(Gdx.files.internal("game.atlas"), true);
// find many AtlasRegions here
// small atlas (128 x 64)
ninepatch = new TextureAtlas(Gdx.files.internal("ninepatch.atlas"), false);
button = ninepatch.createPatch("button");
dialog = ninepatch.createPatch("dialog");
}
答案 0 :(得分:0)
现在我没时间测试,我阐述了这个想法,但我认为它可以工作,基于纹理而不是纹理图集以简化。
short metadata = 2;
Texture yourTextureMetadata = new Texture(Gdx.files.internal(metaDataTexture));
int width = yourTextureMetadata.getWidth() - metadata;
int height = yourTextureMetadata.getHeight() - metadata;
TextureRegion yourTextureClean = new TextureRegion(yourTextureMetadata,
1, 1, width, height);
我假设元数据大小为2,现在我不记得了,抱歉
这个想法会采用最大的纹理,带有元数据然后将它们切割成另一边的干净,以便你可以转身,我希望能够工作。
对于texturealtas类似,findRegions和cut metadata并保存它们没有元数据
另一方面,请注意你有静态纹理,我认为当android更改上下文,你的应用程序到另一个应用程序,然后回到你的应用程序,你可以给出错误可视化,你的图像可以黑色显示