Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

LibGDX not running render() method

I'm experiencing a problem using LibGDX.

I have a Screen and in its render method I have:

public class LoadingScreen implements Screen{
private OrthographicCamera guiCam;
private TankChallenge tankChallenge;
private SpriteBatch batcher;
private GL10 OpenGL;

public LoadingScreen(TankChallenge tankChallenge) {
    this.tankChallenge=tankChallenge;
    Gdx.graphics.setTitle("RobotChallange Beta - Loading");

    float AR = Gdx.graphics.getHeight()/Gdx.graphics.getWidth();
    guiCam = new OrthographicCamera(10,10 * AR);
    guiCam.position.set(10f/2,AR*10f/2,0);
    batcher = new SpriteBatch();

    OpenGL = Gdx.graphics.getGL10();
    //loadAssets();
}

@Override
public void render(float delta) {
    OpenGL.glClearColor(1, 0.5f, 1, 1);
    OpenGL.glClear(GL10.GL_COLOR_BUFFER_BIT);

    System.out.print("e");
    guiCam.update();
    Sprite sp = new Sprite();
    sp.setColor(1f,1f,0, 1);
    sp.setSize(100,100);
    sp.setOrigin(20, 0);

    batcher.setProjectionMatrix(guiCam.combined);
    batcher.begin();
    batcher.disableBlending();
    sp.draw(batcher);
    batcher.end();
}

I call this by setting it in the implementes ApplicationListener class. I know it is arriving the LoadingScreen because Title is actually set to "RobotChallenge Beta - Loading".

like image 678
yafrack Avatar asked Mar 17 '13 22:03

yafrack


3 Answers

I found a solution for both problems. I added to the Game extending class this:

public void render() {
    super.render();
}

Thanks to this the problem is solved and I don't need to override the SetScreen method. Thanks!

like image 57
yafrack Avatar answered Oct 31 '22 15:10

yafrack


Immediately after setting this as your screen, you need to call super.render() in your Game extending class. For instance, I use the following method in my main Game extending class for setting the screen:

@Override
public void setScreen(Screen screen)
{
    super.setScreen(screen);
    super.render();
}

This seems to kick off render() being called.

like image 23
Matt Cain Avatar answered Oct 31 '22 15:10

Matt Cain


Just remove @Override render() in your Game extending class, that fixes the problem. Overriding setScreen method causes flickering you mentioned.

like image 1
milechainsaw Avatar answered Oct 31 '22 15:10

milechainsaw