sto scaricando immagini in rete e aggiungerli al mio libgdx UI come attori immagine usando questo:Come ricaricare libgdx Texture non gestito dopo la perdita di contesto OpenGL
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);
Dato questo ho bisogno di qualche modo per ricaricare la trama dati da quando è perso quando il contesto OpenGL è perso (ad esempio perché lo schermo va a dormire).
Ho provato a fare la mia classe di manager, aggiungendo
DynamicTextureManager.register(t, pm); // Register texture together with the source pixmap
al frammento di sopra, e in resume()
faccio:
DynamicTextureManager.reload();
La classe dirigente:
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);
}
}
Ma questo non aiuta - finisco con la texture che viene scaricata e le aree bianche invece della i mago.
Come dovrebbe essere fatto? Non sono stato in grado di trovare alcun codice che dimostri questo!
La mia ipotesi è che una 'Texture' non _magicamente_ ricrei l'handle di texture sottostante. Prova a ricreare la 'Texture' stessa, o passa ai cosiddetti dati texture _managed_ (controlla le sottoclassi di' TextureData'; 'PixmapTextureData' non supporta questa nozione. –
Ho un compito che è molto simile a questo. lo faccio ancora, ma se riesco a farlo funzionare (che penso coinvolgerà la ricostruzione della Pixmap dai dati binari) aggiornerò questo con una risposta: – Jyro117
@ Jyro117 Ho aggiunto la mia soluzione attuale come risposta, sentitevi liberi di migliorare! – johlo