java - libGDX Strange Rendering Bug -


i've started first libgdx game, , going well, renders fine after minute nothing renders, rendering calls still made , sprite batch works fine, i'm left black screen, have changed 'glclearcolor()' i'm still left black screen. i've have no idea whta be.

my main class:

    @override     public void create() {         gdx.graphics.setdisplaymode(settings.screenwidth, settings.screenheight, settings.fullscreen);         gdx.graphics.setvsync(settings.vsync);         gdx.graphics.settitle("trench warfare");          batch = new spritebatch(1000);          previous = system.currenttimemillis();          currentmap = new map(this, 0);          currentmap.addobject(new colourmapobject(this, 0));     }      private void update() {settings.screenheight, settings.fullscreen);         gdx.graphics.setvsync(settings.vsync);         batch.setcolor(new color(settings.brightness, settings.brightness, settings.brightness, 1.0f));          float delta = ((float)(system.currenttimemillis() - previous)) / 1000.0f;         previous = system.currenttimemillis();          currentmap.update(delta);     }      @override     public void render() { //always called         update();          gdx.gl.glclearcolor(1, 0, 0, 1); //red colour still black screen.         gdx.gl.glclear(gl20.gl_color_buffer_bit);          batch.begin();         currentmap.render(batch); //basicly list of textures rendered, never stop rendering (being called) despite black screen.         batch.end();          batch.flush();     } 

edit: we've determined after time spritebatch render black screen on red clear colour, stops rendering texture. i've determined spritebatch's tint or colour stays white during black screen.

edit, code takes in texture , turns different texture different colours:

public class colourmapobject extends mapobject {      public enum type {         dirt,         water,         trench,     }      private texture terrainmap;     private texture trenchmap;     private texture soldiermap;     private texture buildingmap;     private texture shipmap;     private int levelid;      private texture finaltexture;     private type[][] types;      public colourmapobject(trenchmain main, int levelid) {         super(main);         this.levelid = levelid;          //finaltexture = new texture("/map" + string.valueof(levelid) + "/terrainmap.png");         finaltexture = new texture("black.png");         finaltexture.gettexturedata().prepare();         loadmap(levelid);     }      private void loadmap(int levelid) {         //terrainmap = new texture("/map" + string.valueof(levelid) + "/terrainmap.png");         terrainmap = new texture("terrainmap.png");         types = new type[terrainmap.getwidth()][terrainmap.getheight()];          terrainmap.gettexturedata().prepare();         pixmap pixmap = terrainmap.gettexturedata().consumepixmap();          for(int x = 0; x < terrainmap.getwidth(); x++) {             for(int y = 0; y < terrainmap.getheight(); y++) {                 types[x][y] = randommapcolour.gettype(new color(pixmap.getpixel(x, y)));                 if(types[x][y] == null) types[x][y] = type.dirt;             }         }  //      trenchmap = new texture("/map" + string.valueof(levelid) + "/trenchmap.png"); //       //       //      soldiermap = new texture("/map" + string.valueof(levelid) + "/soldiermap.png"); //       //       //      buildingmap = new texture("/map" + string.valueof(levelid) + "/buildingmap.png"); //       //       //      shipmap = new texture("/map" + string.valueof(levelid) + "/shipmap.png");     }      @override     public void update(float delta) {         super.update(delta);          pixmap draw = new pixmap(settings.screenwidth, settings.screenheight, format.rgb888);          float px = (float)terrainmap.getwidth() / (float)draw.getwidth();         float py = (float)terrainmap.getheight() / (float)draw.getheight();          for(int x = 0; x < draw.getwidth(); x++) {             for(int y = 0; y < draw.getheight(); y++) {                 switch(types[(int)((float)x * px)][(int)((float)y * py)]) {                 case dirt:                     draw.drawpixel(x, y, randommapcolour.getdirtcolour());                     break;                 case trench:                     draw.drawpixel(x, y, randommapcolour.gettrenchcolour());                     break;                 case water:                     draw.drawpixel(x, y, randommapcolour.getwatercolour());                     break;                 }             }         }          finaltexture = new texture(draw);     }      @override     public void render(spritebatch batch) {         super.render(batch);         float sx = ((float)trenchmain.getscreenwidth()) / ((float)finaltexture.getwidth());         float sy = ((float)trenchmain.getscreenheight()) / ((float)finaltexture.getheight());          batch.draw(finaltexture, 0, 0, 0, 0, finaltexture.getwidth(), finaltexture.getheight(), sx, sy, 0, 0, 0, finaltexture.getwidth(), finaltexture.getheight(), false, false);     } 

i figuired out, wonder, doing creating new finaltexture every update disposing of old one.

simply dispose of texture. finaltexture.dispose();


Comments

Popular posts from this blog

powershell Start-Process exit code -1073741502 when used with Credential from a windows service environment -

twig - Using Twigbridge in a Laravel 5.1 Package -

c# - LINQ join Entities from HashSet's, Join vs Dictionary vs HashSet performance -