我正在通过网络下载图像并将它们作为图像演员添加到我的 libgdx UI 中,使用以下命令:
Pixmap pm = new Pixmap(data, 0, data.length);
Texture t = new Texture(pm);
TextureRegion tr = new TextureRegion(t,200,300);
TextureRegionDrawable trd = new TextureRegionDrawable(tr);
Image icon = new Image();
icon.setDrawable(trd);
鉴于此,我需要一些重新加载纹理数据的方法,因为当 OpenGL 上下文丢失时(例如,因为屏幕进入睡眠状态),纹理数据也会丢失。
我尝试制作自己的经理课程,添加
DynamicTextureManager.register(t, pm); // Register texture together with the source pixmap
到上面的片段,在resume()
我做:
DynamicTextureManager.reload();
经理类:
public class DynamicTextureManager {
private static LinkedHashMap<Texture, Pixmap> theMap = new
LinkedHashMap<Texture,Pixmap>();
public static void reload() {
Set<Entry<Texture,Pixmap>> es = theMap.entrySet();
for(Entry<Texture,Pixmap> e : es) {
Texture t = e.getKey();
Pixmap p = e.getValue();
t.draw(p, 0, 0);
}
}
public static void register(Texture t, Pixmap p) {
theMap.put(t, p);
}
}
但这无济于事 - 我最终仍然会卸载纹理和白色区域而不是图像。
这应该怎么做?我还没有找到任何代码来证明这一点!