sure.
this method is called via GLSurfaceView.queueEvent(Runnable) to make sure it's called in GL thread.
private void changeSkyBox() throws Exception {
Log.v(LOG_TAG, "changing background to: " + background);
TextureBank.unloadSkyBoxTextures(buffer);
MemoryHelper.compact();
TextureBank.loadSkyBoxTextures(glContext, background);
MemoryHelper.compact();
TextureManager.getInstance().preWarm(renderer.buffer);
Log.i(LOG_TAG, "changed background to: " + background);
}
the unloadSkyBoxTextures method:
public static void unloadSkyBoxTextures(FrameBuffer buffer) {
TextureManager tm = TextureManager.getInstance();
if (tm.containsTexture("SB_BACK.JPG")) {
System.out.println("unloading skybox");
tm.removeAndUnload("SB_BACK.JPG", buffer);
tm.removeAndUnload("SB_FRONT.JPG", buffer);
tm.removeAndUnload("SB_LEFT.JPG", buffer);
tm.removeAndUnload("SB_RIGHT.JPG", buffer);
tm.removeAndUnload("SB_BOTTO.JPG", buffer);
tm.removeAndUnload("SB_TOP.JPG", buffer);
}
}
loadSkyBoxTextures method. here context is an interface with desktop and AE implementations. it loads the texture, replaces or adds to TextureManager
public static void loadSkyBoxTextures(Context context, String skyBoxName) throws Exception {
context.loadTexture("SB_BACK.JPG", "/images/skybox/" + skyBoxName + "/sb_back.jpg", Context.ALPHA_DONT_USE, SKYBOX_CREATE_MIPMAP, SKYBOX_COMPRESS, SKYBOX_KEEP_PIXEL_DATA);
context.loadTexture("SB_FRONT.JPG", "/images/skybox/" + skyBoxName + "/sb_front.jpg", Context.ALPHA_DONT_USE, SKYBOX_CREATE_MIPMAP, SKYBOX_COMPRESS, SKYBOX_KEEP_PIXEL_DATA);
context.loadTexture("SB_LEFT.JPG", "/images/skybox/" + skyBoxName + "/sb_left.jpg", Context.ALPHA_DONT_USE, SKYBOX_CREATE_MIPMAP, SKYBOX_COMPRESS, SKYBOX_KEEP_PIXEL_DATA);
context.loadTexture("SB_RIGHT.JPG", "/images/skybox/" + skyBoxName + "/sb_right.jpg", Context.ALPHA_DONT_USE, SKYBOX_CREATE_MIPMAP, SKYBOX_COMPRESS, SKYBOX_KEEP_PIXEL_DATA);
context.loadTexture("SB_BOTTO.JPG", "/images/skybox/" + skyBoxName + "/sb_bottom.jpg", Context.ALPHA_DONT_USE, SKYBOX_CREATE_MIPMAP, SKYBOX_COMPRESS, SKYBOX_KEEP_PIXEL_DATA);
context.loadTexture("SB_TOP.JPG", "/images/skybox/" + skyBoxName + "/sb_top.jpg", Context.ALPHA_DONT_USE, SKYBOX_CREATE_MIPMAP, SKYBOX_COMPRESS, SKYBOX_KEEP_PIXEL_DATA);
}