2017-08-27 4 views
0

Runs une seule foisglfw glDrawElements triangle dessin étranges

GLfloat vertices[] = { 
    -0.5f, -0.5f, 0.0f, 
    0.5f, -0.5f, 0.0f, 
    0.5f, 0.5f, 0.0f, 
    -0.5f, 0.5f, 0.0f 
}; 

GLuint triangles[] = {0,1,2}; 

int lengthV = 3; //Number of vertices 
int lenfthT = 1; //Number of triangles 

glGenVertexArrays(1, &vaoID); 
glBindVertexArray(vaoID); 

glGenBuffers(vaoID, &verticesVBOID); 
glBindBuffer(GL_ARRAY_BUFFER, verticesVBOID); 
glBufferData(GL_ARRAY_BUFFER, lengthV*sizeof(GLfloat)*3, vertices, GL_STATIC_DRAW); 

glGenBuffers(vaoID, &trianglesVBOID); 
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, trianglesVBOID); 
glBufferData(GL_ELEMENT_ARRAY_BUFFER, lengthT*sizeof(GLuint)*3, triangles, GL_STATIC_DRAW); 

Runs une fois par trame

glEnableVertexAttribArray(0); 
glBindBuffer(GL_ARRAY_BUFFER, verticesVBOID); 
glVertexAttribPointer(0, lengthV, GL_FLOAT, GL_FALSE, 0, nullptr); 

glUseProgram(program); 
//glDrawArrays(GL_TRIANGLES, 0, verticeCount*3); 
glDrawElements(GL_TRIANGLES, lengthT,GL_UNSIGNED_INT, nullptr); 
glDisableVertexAttribArray(0); 

glfwSwapBuffers(window); 

Quand je lance ceci, cela rend, ce qui est juste.
When I run this, this renders, which is right.

Lorsque je change le nombre de sommets à 4 pour essayer de rendre un quad finalement.

int lengthV = 4; 

Cela se produit.
This happens.
Je ne comprends pas pourquoi cela se produit parce que j'ai seulement changé le nombre de sommets.

Ive J'ai essayé de trouver une réponse mais je n'ai pas pu. J'ai regardé ce problème de personnes et son code ressemble au mien après avoir appliqué la réponse. No display from glDrawElements

Répondre

3

Vous avez mal interprété le deuxième paramètre de glVertexAttribPointer.

Le paramètre size spécifie le nombre de composants d'un attribut (qui correspond essentiellement au nombre de flottants qu'il obtient). Puisque vous avez toujours un vec3 (3 flottants) par sommet lorsque vous dessinez un quad, ce nombre ne doit pas être changé.

+0

Merci J'ai regardé ce site et j'ai pensé que cela signifiait le nombre de sommets. Je suppose que j'aurais dû regarder plus longtemps. :) – LearningThings2