2016-04-15 7 views
1

オブジェクト。私はそれらからいくつかのモデルインスタンスを作成する1つの正方形モデルを持っています。モデルが1つしかない場合は、レンダリングがうまくいきます。 enter image description hereレンダリング複数の3Dは、私がlibGdxでオブジェクトをレンダリングする方法を学んでいる

しかし、それ以上のインスタンスがあると正しく動作しません。前面のオブジェクトが最初の描画、背景が最後の描画のように見えるので、常に背景のオブジェクトが表示され、前面のオブジェクトが表示されます。 enter image description here

私は、次の

Gdx.gl.glViewport(0,0,Gdx.graphics.getWidth(), Gdx.graphics.getHeight()); 
    Gdx.gl20.glClearColor(1f, 1f, 1f, 1f); 
    Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT | GL20.GL_DEPTH_BUFFER_BIT); 

    mb.begin(cam); 
    worldManager.render(mb, environment); 
    mb.end(); 

メガバイト変数はModelBatchのインスタンスであり、worldManager.render各モデルインスタンス内で次のように描画され使用レンダリングするには:

mb.render(model, environment); 

私はありません何が起こっているか確かめてください。しかし、私はそれが私が有効にする必要があるいくつかのGLの属性だと思う

postのために100%ではない、はい、それはlibgdxのようにOPENGLを使用するので、そのソリューションで提供されているソリューションは動作していないと私は問題が来ると思うModelBatchから

libgdx

Reproduction of the problem

+3

この1多分 'glEnableです(GL_DEPTH_TEST)'? //:それはまた、あなたがそれを有効にしますが、深度バッファを作成し、すべてはあなたが(HTTP [LibGDXを使用して反対の深さの順序でのOpenGL ES 2.0表示オブジェクト]の – Guiroux

+1

可能な複製を有効にしていないとまったく同じように動作していないことが考えられstackoverflow.com/questions/25070612/opengl-es-2-0-displaying-objects-in-opposite-depth-order-using-libgdx) – Guiroux

+0

、それはlibgdxを使用してOpenGLのだから、私は、重複としてフラグを立て、あなたが同じ問題を抱えて多分受け入れられた答えはあなたを助けるでしょう – Guiroux

答えて

3

あなたは正しくセットアップカメラをしませんでした。まずカメラのニアプレーンは0fです。これは無限に小さいことを意味します。少なくとも1fの値に設定します。第二に、自分の位置を見るようにカメラを設定します。これは不可能です(自分の目を見ることはできません)。 、ところでhttp://www.badlogicgames.com/wordpress/?p=1550

https://xoppa.github.io/blog/basic-3d-using-libgdx/

カメラワークが見ている方法の詳細については:あなたはおそらくここに開始したい

camera = new PerspectiveCamera(90, Gdx.graphics.getWidth(), Gdx.graphics.getHeight()); 
camera.position.set(0, 10, 0); 
camera.lookAt(0,0,0); 
camera.near = 1f; 
camera.far = 100f; 
camera.update(); 

だから、次のようになりますGdx.gl20.glEnable(GL20.GL_DEPTH_TEST);を呼び出すと、その場所に助けにはなりませんし、ModelBatchと混合したときに確実に行われるべきではありません。 ModelBatchは独自のレンダリングコンテキストを管理し、より多くの情報のためのマニュアルを参照してください。https://github.com/libgdx/libgdx/wiki/ModelBatch

+0

問題はカメラにありがとう。はい、私はmodelbatchが自分自身のレンダリングコンテキストを持っていることを知っています。それは問題がそこにあったと思っていて、modelbatchコンテキストでdepth_testを有効にしようとしています。しかし問題はカメラだった。ありがとう! –

1

から存在可能な答えがたくさんありますが、私はあなたがまだそれを行っていない場合

glEnable (GL_DEPTH_TEST) ; 

を助けることができると言うでしょう。また、深度バッファを有効にするのは、実際に深度バッファを持っている場合にのみ機能します。つまり、必要なバッファがあることを確認する必要があります。

+0

私はその行を有効にしてもまだ動作しません。問題は、libgxのModelBatchからのものだと私は思う。また、私もこの行を入れ、まだ動作していないbatch.getRenderContext()。setDepthTest(GL20.GL_DEPTH_BITS); –

関連する問題