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編集 位置配列の変更
*バックフェースカリング*の可能性がありますか?あなたは 'GL_CULL_FACE'を有効にしていますか? (https://www.khronos.org/opengl/wiki/Face_Cullingを参照)。また、クワッドメッシュデータを宣言した場所と方法を表示します。 – meowgoesthedog
返信いただきありがとうございます。今、間抜けを調べるつもりです。クワッドメッシュを形成するコードを追加しました。 –