2017-07-18 5 views
0

Antonio BejaranoのLWJGLによる3Dゲーム開発に従っています。私はスクリーンにクワッドをレンダリングできるという点に達しました。頂点インデックスバッファを実装した後、クワッドの三角形だけが画面にレンダリングされるので、問題はそのコードであると仮定することは安全だと思います。LWJGL頂点インデックスバッファにより「メッシュ」の半分が読み込まれる

 // Vertex Index Buffer 
     idxVboId = glGenBuffers(); 
     vertsIdxBuffer = MemoryUtil.memAllocInt(indices.length); 
     vertsIdxBuffer.put(indices).flip(); 
     glBindBuffer(GL_ELEMENT_ARRAY_BUFFER,idxVboId); 
     glBufferData(GL_ELEMENT_ARRAY_BUFFER,vertsIdxBuffer,GL_STATIC_DRAW); 

インデックスバッファへの参照が削除され、フルクワッドが表示されるので、頂点バッファとカラーバッファのコードが機能します。私はミスを犯してきたところ、私は時間のために、このを見つめてきたよう

shaderProgram.bind(); 

     //bind to vao 
     glBindVertexArray(mesh.getVaoId()); 
     //enable positions buffer 
     glEnableVertexAttribArray(0); 
     //enable colour buffer 
     glEnableVertexAttribArray(1); 

     //draw verts 
     glDrawElements(GL_TRIANGLES, 
     mesh.getVertexCount(),GL_UNSIGNED_INT,0); 

     //restore state (?) 
     glDisableVertexAttribArray(0); 
     glDisableVertexAttribArray(1); 
     glBindVertexArray(0); 

     shaderProgram.unbind(); 

任意の提案が高く評価されており、実際に見ることができない。私はまた、新しいタイプをレンダリングするために考慮してレンダリング方法を変更しました。

EDIT:クワッドメッシュコード

 renderer.init(); 

    float[] positions = new float[]{ 
      -0.5f, 0.5f, 0.0f, 
      -0.5f, -0.5f, 0.0f, 
      0.5f, 0.5f, 0.0f, 
      0.5f, 0.5f, 0.0f, 
      -0.5f, -0.5f, 0.0f, 
      0.5f, -0.5f, 0.0f, 
    }; 

    float[] colours = new float[]{0.5f,0f,0f,0f,0.5f,0f,0f,0f,0.5f,0f,0.5f,0.5f}; 

    int[] indices = new int[]{ 
      0, 1, 3, 3, 1, 2, 
    }; 

    mesh = new BMesh(positions,colours,indices); 

2ND編集 位置配列の変更

Before

After

+0

*バックフェースカリング*の可能性がありますか?あなたは 'GL_CULL_FACE'を有効にしていますか? (https://www.khronos.org/opengl/wiki/Face_Cullingを参照)。また、クワッドメッシュデータを宣言した場所と方法を表示します。 – meowgoesthedog

+0

返信いただきありがとうございます。今、間抜けを調べるつもりです。クワッドメッシュを形成するコードを追加しました。 –

答えて

0

前と後のクアッドメッシュの初期化コードを見た後、それはそうです誤差は頂点が3および0123であるためです第2クワッド上のは同じ頂点であり、すなわち両方とも(0.5, 0.5, 0.0)にある。おそらく間違って4番目と5番目の頂点をあなたの配列にコピーしたでしょうか?

は、おそらくあなたは

float[] positions = new float[]{ 
     -0.5f, 0.5f, 0.0f, 
     -0.5f, -0.5f, 0.0f, 
     0.5f, 0.5f, 0.0f, 
     0.5f, -0.5f, 0.0f 
}; 

EDITを持っているためのもの、すなわち:あなたのインデックスが間違っているように見えます。それらをに変更します。

+0

提案した変更が達成したことを示す2つの写真を添付し​​ました。 2つの別々の三角形が現れているようですが、それらはもはや整列していませんが、これはインデックスバッファ内の値と新しい位置配列で並んでいないことが関係していると思います。 –

+0

あなたのインデックスが間違っているので、@ LiamDevlinはい。私は答えを更新します – meowgoesthedog

+0

あなたの助けをありがとう、それは問題を解決しました。物語の道徳的:あなたの座標を確認してください:D –

関連する問題