libgdx - Shaperender BspLine与正交相机无法正常工作

时间:2014-01-15 14:18:34

标签: java libgdx shape renderer bspline

我正在尝试使用BSpline和ShapeRenderer绘制曲线。 透过相机,我发现自己能够做到这一点。 如果我尝试使用OrthographicCamera,则不会在屏幕上呈现任何内容。 我的目标是绘制一个带有ShapeRenderer的BSPline和一个遵循与Shape相同设计的Sprite。 谁能告诉我如何解决这个/我做错了什么? 非常感谢

public class MyGdxGame extends GdxTest implements ApplicationListener {
    private SpriteBatch spriteBatch;
    ParticleEffect effect;
    int emitterIndex;
    Array<ParticleEmitter> emitters;
    int particleCount = 10;
    float fpsCounter;
    InputProcessor inputProcessor;

    int CAMERA_WIDTH = 640; //Gdx.graphics.getWidth(); if use this function an exception is arose
    int CAMERA_HEIGHT = 480; //Gdx.graphics.getHeight(); if use this function an exception is arose

    BspHbCached hb;
    ShapeRenderer renderer;
    int nPoints;
    private OrthographicCamera camera;

    @Override
    public void create () {
    hb = new BspHbCached(CAMERA_WIDTH/4, CAMERA_WIDTH/4); // caching points for curve to draw
    renderer = new ShapeRenderer();
    nPoints = hb.getNumSamplePoints();

    camera = new OrthographicCamera(CAMERA_WIDTH, CAMERA_HEIGHT);

    camera.position.set(CAMERA_WIDTH / 2f, CAMERA_HEIGHT / 2f, 0);  
    camera.update();    

    spriteBatch = new SpriteBatch();

    effect = new ParticleEffect();
    effect.load(Gdx.files.internal("data/test.p"), Gdx.files.internal("data"));
    effect.setPosition(Gdx.graphics.getWidth() / 2, Gdx.graphics.getHeight() / 2);
    // Of course, a ParticleEffect is normally just used, without messing around with its emitters.
    emitters = new Array(effect.getEmitters());
    effect.getEmitters().clear();
    effect.getEmitters().add(emitters.get(0));

    inputProcessor = new InputProcessor() {
    public boolean touchUp (int x, int y, int pointer, int button) {
    return false;
    }

以下是我的其他重要方法:

    public void render () {

    float delta = Gdx.graphics.getDeltaTime();
    Gdx.gl.glClear(GL10.GL_COLOR_BUFFER_BIT);


    renderer.setProjectionMatrix(camera.combined);
    spriteBatch.setProjectionMatrix(camera.combined);
    for(int i = 0; i < nPoints - 1; i++) // all points contained in bspline to draw
    {

    renderer.begin(ShapeType.Line);
    renderer.setColor(Color.RED);
    renderer.line(p1,p2);
    renderer.end();
    }


    spriteBatch.begin();
    effect.draw(spriteBatch, delta);
    spriteBatch.end();

    fpsCounter += delta;
    if (fpsCounter > 3) {
    fpsCounter = 0;
    int activeCount = emitters.get(emitterIndex).getActiveCount();
    Gdx.app.log("libgdx", activeCount + "/" + particleCount + " particles, FPS: " + Gdx.graphics.getFramesPerSecond());
    }

    }   
}

注意:我的出发点是Path Interface Splines

0 个答案:

没有答案