Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to draw a line using libgdx?

Tags:

libgdx

I am trying to draw some lines for debugging using libgdx but I failed. this is my code

public class MainMenu extends Screen implements InputProcessor {

private OrthographicCamera camera;
SpriteBatch myBatch;
ShapeRenderer shapeDebugger;

public MainMenu(Game game) {
    super(game);
    camera= new OrthographicCamera(Gdx.graphics.getWidth(), Gdx.graphics.getHeight());
    camera.setToOrtho(true, Gdx.graphics.getWidth(), Gdx.graphics.getHeight());
    camera.update();}

@Override
public void render(float delta) {
    Gdx.gl.glClearColor(0, 0, 0, 1);
    Gdx.gl.glClear(GL10.GL_COLOR_BUFFER_BIT);

    myBatch.begin();
    stage.draw();
    Gdx.gl10.glLineWidth(10);
    shapeDebugger.setProjectionMatrix(camera.combined);
    shapeDebugger.begin(ShapeType.Line);
    shapeDebugger.setColor(1, 1, 1, 1);
    shapeDebugger.line(2, 2, 5, 5);
    myBatch.end();
    }
}

I get an error from line

shapeDebugger.setProjectionMatrix(camera.combined);

@Pranav008

thank you very much. I didn't expect that I need to initiate it. but I've got a true problem. I draw the line to center of the game screen like this.

    Gdx.gl10.glLineWidth(2);
    shapeDebugger.setProjectionMatrix(camera.combined);
    shapeDebugger.begin(ShapeType.Line);
    shapeDebugger.setColor(1, 1, 1, 1);
    shapeDebugger.line(Gdx.graphics.getWidth()/2, 0,Gdx.graphics.getWidth()/2, Gdx.graphics.getHeight());
    shapeDebugger.end();

when I try to resize the screen it doesn't update the to center it goes far away to right.

like image 837
kifcaliph Avatar asked Jan 13 '23 20:01

kifcaliph


2 Answers

You must have got nullpointerException because you haven't made any object of ShapeRenderer. Insert this line in your constructor.

shapeDebugger=new ShapeRenderer();
like image 89
Pranav008 Avatar answered Jan 15 '23 11:01

Pranav008


Remember that nesting Shaperender with a SpriteBatch may cause problems.

Check this link.

like image 42
Nine Magics Avatar answered Jan 15 '23 11:01

Nine Magics