Je sais que pour sauvegarder/restaurer l'état de la matrice, vous utilisez les opérations push/pop standard. Je n'ai pas été en mesure de trouver une convention décente pour sauver/restaurer l'état, comme lors de l'utilisation de glLineWidth() ou glColor4ub().La bonne façon d'enregistrer/restaurer l'état OpenGL ES
Il semble pas vraiment nécessaire tant que vous définissez votre largeur de ligne ou la couleur correctement lorsque vous voulez dessiner quelque chose, mais je peux voir un exemple d'où vous êtes dans votre propre fonction de dessin, appeler une fonction de dessin distincte qui change la largeur de la ligne sur vous à votre insu, et puis quand vous allez continuer à dessiner, il ne sortira pas comme prévu. Pour corriger cela, vous pouvez réinitialiser votre largeur de ligne après avoir appelé une fonction que vous ne savez pas ce qu'il fait, mais qui semble inélégant et je pense qu'il devrait déjà y avoir une solution à cela, mais que j'ai manqué en quelque sorte.
Pour mon code, je l'ai fait cela au début de chaque fonction de dessin:
GLfloat savedLineWidth = 1.0f;
glGetFloatv(GL_LINE_WIDTH, &savedLineWidth);
glLineWidth(lineWidth);
Et puis restaurer l'état à la fin de la fonction de dessin comme ceci:
glLineWidth(savedLineWidth);
Cela ne m'aide pas vraiment à moins que je suppose que chaque fonction de dessin dont je ne connais pas l'intérieur est agréable et restaure l'état tout seul.
Dois-je faire cette hypothèse? Ou est-ce que je manque quelque chose?
C'est cool. Je ne savais pas que glPushAttrib() et glPopAttrib() étaient disponibles dans la variante non ES d'OpenGL. Je n'ai pas non plus pensé à boucher le bus avec des demandes. Oui, j'ai le code. C'est juste un code de dessin avec lequel je triture actuellement pour essayer d'apprendre OpenGL ES. Je cherchais juste des conseils avant de développer de mauvaises habitudes. – djdrzzy