2017-10-02 3 views
0

Je passe donc d'un programme à l'autre et je n'arrive pas à comprendre pourquoi mais GL_QUADS ne s'affichera plus avec le même code. Pour essayer de comprendre pourquoi l'ancien code ne fonctionnait pas, j'ai fait ce nouveau code simple et ça ne marche toujours pas.GL_TRIANGLES fonctionne mais GL_QUADS n'affiche rien

La configuration:

vector <vec3f> squarepoints; 
vec3f temper(-0.5f, 0.5f, 0.5f); 
squarepoints.push_back(temper); 
temper.x += 1.0f; 
squarepoints.push_back(temper); 
temper.y -= 1.0f; 
squarepoints.push_back(temper); 
temper.x -= 1.0f; 
squarepoints.push_back(temper); 
vector <unsigned int> squareindex; 
squareindex.push_back(0); 
squareindex.push_back(1); 
squareindex.push_back(2); 
//squareindex.push_back(0); 
//squareindex.push_back(2); 
squareindex.push_back(3); 
GLuint VAOO; 
GLuint IBOO; 
GLuint VBOO; 


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

glGenBuffers(1, &VBOO); 
glBindBuffer(GL_ARRAY_BUFFER, VBOO); 
glBufferData(GL_ARRAY_BUFFER, sizeof(vec3f) * squarepoints.size(), &squarepoints[0], GL_STATIC_DRAW); 
glEnableVertexAttribArray(0); 
glVertexAttribPointer(0, 3, GL_FLOAT,GL_FALSE, 0, 0);  


glGenBuffers(1, &IBOO); 
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, IBOO); 
glBufferData(GL_ELEMENT_ARRAY_BUFFER, sizeof(unsigned int) * squareindex.size(), &squareindex[0], GL_STATIC_DRAW); 
glBindVertexArray(0); 

Le dessin:

glBindVertexArray(VAOO); 
    glDrawElements(GL_QUADS, squareindex.size(), GL_UNSIGNED_INT, 0); 
    glBindVertexArray(0); 

Cela affiche rien. Maintenant, si j'ajoute dans les deux lignes commentées dans la configuration pour faire 6 points et que je le change en GL_TRIANGLES dans le dessin, tout s'affiche parfaitement. Je ne sais pas où la faute est là, mais j'ai essayé de régler le chargement de mon modèle et d'autres fonctionnalités si longtemps que je suis sûr que je suis en train de négliger quelque chose d'évident à ce stade.

+4

Quelle version d'OpenGL ciblez-vous? Il n'y a pas de "GL_QUADS" dans un profil de base. – BDL

Répondre