2016-05-30 19 views
0

ShapeRendererオブジェクトが画面上に円を描いていない理由がわかりません。射影行列を変更したり、私のshaperendererオブジェクトの行列をバッチ行列に変換したり、shaperenderer.begin()の前にbatch.end()を追加するなどの提案を含めるようにコードを修正しようとしました。ShapeRenderer LibGdxが動作しない

public void draw (Batch batch, float parentAlpha){ 
    super.draw(batch, parentAlpha); 
    batch.end(); 
    shapeRend.setProjectionMatrix(batch.getProjectionMatrix()); 
    shapeRend.setTransformMatrix(batch.getTransformMatrix()); 
    float x = body.getWorldCenter().x; 
    float y = body.getWorldCenter().y; 
    shapeRend.translate(x, y, 0); 


    shapeRend.begin(ShapeType.Filled); 
    shapeRend.setColor(Color.RED); 
    shapeRend.circle(0, 0, Constants.PLAYER_RADIUS); 
    shapeRend.end(); 
    batch.begin(); 


} 

本当に私はそのContants.player_radius = 0.2、違いを作るべきではありません以外を提供することができ、他のコードがありません。ここに私のコードです。私は私の世界のレンダラー(Box2D物理学)が見えるが、shaperenderer円はそこにはない。もともと私はtranslate関数を置いておらず、xとyを直接shapeRend.circle(x、y、r)メソッド呼び出しに入れましたが、私はちょうど異なる方法をテストしていました。どんな提案も役に立ちます。ありがとうございました。

+0

何も設定しないと、shaperendererはピクセル座標を使用すると思います。最初にこれをテストし、それが動作することを知ったときに変換を追加することをお勧めします。 –

答えて

1
@Override 
public void create() { 
    shapeRenderer = new ShapeRenderer(); 
    camera = new OrthographicCamera(Gdx.graphics.getWidth(), Gdx.graphics.getHeight()); 
} 

@Override 
public void render() { 
    Gdx.gl.glClearColor(1, 1, 1, 1); 
    Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT); 
    Gdx.gl.glEnable(GL20.GL_BLEND); 
    Gdx.gl.glBlendFunc(GL20.GL_SRC_ALPHA, GL20.GL_ONE_MINUS_SRC_ALPHA); 
    Gdx.gl.glDisable(GL20.GL_BLEND); 

    shapeRenderer.setColor(Color.RED); 
    shapeRenderer.begin(ShapeType.FilledCircle); 
    shapeRenderer.filledCircle(25, 25, 25); 
    shapeRenderer.end(); 
} 
+0

ShapeTypeクラスにはFilledCircleという静的定数はなく、ShapeRendererクラスにはfilledCircleメソッドがありません。私もそれをチェックした。彼らはそれを取り除いたと思う。あなたの提案の最初の部分を私のコードに加えましたが、それはやりませんでした。私はすでにglClearColorとclClearを持っていましたが、ブレンド関数はありませんでした。しかし、提案をありがとう。 –

1

私の質問で混乱している可能性がある皆さんには申し訳ありません。私は何が間違っているかを知った。私は、左下の小さな正方形である投影行列を持つ別の正射投影カメラを使用しています。私は投影行列をより小さな左隅に変更できませんでした。

shapeRend.setProjectionMatrix(camera.combined);

バッチの投影行列がカメラに構成されておらず、それが失敗した理由です。

私が使用してテクスチャが優れていると考えているので、私はとにかくもうshapeRendererを使用していない

。答えた皆様に感謝します。

関連する問題