Je suis le développement 3D Game avec le livre LWJGL d'Antonio Bejarano. J'ai atteint le point de pouvoir rendre un quad à l'écran. Après avoir implémenté le buffer d'index de vertex, un seul triangle du quad apparaît à l'écran, donc je pense qu'il est sûr de supposer que le problème est avec ce code.LWJGL Vertex Index Buffer provoque la moitié de "Mesh" à charger
// 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);
Le code pour les sommets tampon et le tampon de couleur fonctionne, comme je l'ai supprimé les références à la mémoire tampon d'index et le quad complet apparaît. J'ai aussi changé la méthode render pour tenir compte du nouveau type à rendre:
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();
Toutes les suggestions sont appréciés comme je l'ai été à regarder pendant des heures et ne peut pas vraiment voir où je l'ai fait l'erreur .
EDIT: Quad code Mesh
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 Modifier Avant et après tableau des positions changement
Peut-être à cause de * backface-culling *? Avez-vous activé 'GL_CULL_FACE', et quelle convention avez-vous défini? (Voir https://www.khronos.org/opengl/wiki/Face_Culling). Indiquez également où et comment vous avez déclaré les données de quadrillage. – meowgoesthedog
Merci pour votre réponse, je vais regarder à l'abattage maintenant, j'ai ajouté le code qui forme le quadrillage –