Je calcule beaucoup de sommets, puis je les affiche avec des quadrichromie pour un tracé de surface 3D.Existe-t-il une connexion entre glPushMatrix() et glBegin()?
J'avais un comportement étrange pour certains sommets, changeant les couleurs de façon imprévisible. J'ai essayé de le réparer et par hasard, j'ai trouvé que le problème est résolu, quand je mets glPushMatrix()
et glPopMatrix
avant et après. Est-ce que quelqu'un sait quel pourrait être le problème sous-jacent? Dois-je généralement utiliser push/pop autour de glBegin
/glEnd
?
Voici mon code de travail:
for (int i = 1; i < vec.size(); i++) {
glPushMatrix();
glBegin(GL_QUAD_STRIP);
for (int j = 0; j < vec[i].size(); j++) {
glNormal3dv(vertex_normal[i][j]);
glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, reflectance[i][j]);
glVertex3d(vec[i][j].x(), vec[i][j].y(),vec[i][j].z());
glNormal3dv(vertex_normal[i-1][j]);
glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, reflectance[i-1][j]);
glVertex3d(vec[i-1][j].x(), vec[i-1][j].y(), vec[i-1][j].z());
}
glEnd();
glPopMatrix();
}
Vous ne devez pas utiliser l'API obsolète. –