bobbyrne01
bobbyrne01

Reputation: 6735

rayHandler.render() causes black screen in box2DLightsVersion

If I comment rayHandler.render() out, I see this screen ..

screenshot

However when I uncomment it, the screen goes black. Any ideas?

public class GameScreen implements Screen {

    private ColorCatch game;
    private OrthographicCamera camera;

    private World world;
    private RayHandler rayHandler;
    private Body body;

    private ShapeRenderer shapeRenderer = new ShapeRenderer();

    public GameScreen (final ColorCatch gam) {

        this.game = gam;

        camera = new OrthographicCamera();
        camera.setToOrtho(false, 800, 480);

        world = new World(new Vector2(0.0f, -98.0f), true);
        rayHandler = new RayHandler(world);
        new PointLight(rayHandler, 1000, new Color(1,1,1,1), 5.0f, Gdx.graphics.getWidth() / 2, Gdx.graphics.getHeight() / 2);

        CircleShape shape = new CircleShape();
        shape.setRadius(3.0f);
        FixtureDef fd = new FixtureDef();
        fd.shape = shape;
        BodyDef bd = new BodyDef();
        bd.position.set(new Vector2(Gdx.graphics.getWidth() / 2, Gdx.graphics.getHeight() / 2));
        bd.type = BodyType.DynamicBody;

        body = world.createBody(bd);
    }

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

        camera.update();
        shapeRenderer.setProjectionMatrix(camera.combined);

        world.step(Gdx.graphics.getDeltaTime(), 8, 1);

        Vector2 pos = body.getPosition();

        shapeRenderer.begin(ShapeType.Filled);
        shapeRenderer.setColor(Color.RED);
        shapeRenderer.identity();
        shapeRenderer.translate(pos.x, pos.y, 0);
        shapeRenderer.circle(0.0f, 0.0f, 66.0f);
        shapeRenderer.end();

        shapeRenderer.begin(ShapeType.Filled);
        shapeRenderer.setColor(0, 1, 0, 1);
        shapeRenderer.identity();
        shapeRenderer.rect(5, 5, 10, 10);
        shapeRenderer.circle(25, 25, 10);
        shapeRenderer.end();

        rayHandler.setCombinedMatrix(camera);
        rayHandler.update();
        //rayHandler.render(); //FIXME this line causes blank screen
    }

    @Override
    public void dispose() {
        game.getBatch().dispose();
        bg.dispose();
    }

    @Override
    public void show() {
                // TODO Auto-generated method stub
    }

    @Override
    public void resize(int width, int height) {
        // TODO Auto-generated method stub
    }

    @Override
    public void pause() {
        // TODO Auto-generated method stub
    }

    @Override
    public void resume() {
        // TODO Auto-generated method stub
    }

    @Override
    public void hide() {
        // TODO Auto-generated method stub
    }
}

Upvotes: 1

Views: 222

Answers (1)

bobbyrne01
bobbyrne01

Reputation: 6735

Turns out the radius of my PointLight was too small, so not visable.

Heres what worked ..

new PointLight(rayHandler, 1000, new Color(1, 1, 1, 1), 50.0f, Gdx.graphics.getWidth() / 2, Gdx.graphics.getHeight() / 2);

Upvotes: 1

Related Questions