J'ai entendu dire que GL_QUADS
vont être supprimés dans les versions OpenGL > 3.0, pourquoi ? Mes anciens programmes ne fonctionneront-ils pas à l'avenir ? J'ai fait des tests comparatifs, et GL_TRIANGLES
ou GL_QUADS
n'ont aucune différence dans la vitesse de rendu (il se pourrait même que GL_QUADS
est plus rapide). Alors, quel est l'intérêt ?
Réponses
Trop de publicités?Le fait est que votre GPU rend des triangles, pas des quads. Et il est assez trivial de construire un rectangle à partir de deux triangles, donc l'API n'a pas vraiment besoin d'être chargée de la capacité de rendre des quads en natif. OpenGL est en train de subir un processus d'élagage majeur, en supprimant de nombreuses fonctionnalités qui avaient un sens il y a 15 ans, mais qui ne correspondent plus à la manière dont le GPU fonctionne, ou à la manière dont le GPU est toujours va travail. Le pipeline à fonctions fixes a également disparu des dernières versions, je crois, car, une fois de plus, il n'est plus nécessaire et ne correspond plus à la façon dont le GPU fonctionne (shaders programmables).
Le fait est que plus l'API OpenGL est réduite et resserrée, plus il est facile pour les fournisseurs d'écrire des pilotes robustes et performants, et plus il est facile d'apprendre à utiliser l'API correctement et efficacement.
Il y a quelques années, pratiquement tout ce qui existait dans OpenGL pouvait être réalisé de 3 à 5 façons différentes, ce qui représentait une lourde charge pour le développeur qui devait déterminer quelle implémentation était la plus appropriée. le bon si vous voulez des performances optimales.
Ils essaient donc de rationaliser l'API.
Les gens ont déjà bien répondu à votre question. En plus de leur réponse, l'une des raisons pour laquelle GL_QUADS
est déprécié à cause de la nature indéfinie des quads.
Par exemple, essayez de modéliser un carré 2d avec des points (0,0,0), (1,0,0), (1,1,1), (0,1,0)
. Il s'agit d'un quadriptyque plat dont un coin est tiré vers le haut. Il est impossible de dessiner un carré plat NORMAL de cette manière. Selon les pilotes, il sera divisé en 2 triangles d'une manière ou d'une autre - ce que nous ne pouvons pas contrôler. Un tel modèle DOIT être modélisé avec deux triangles. - Les trois points d'un triangle se trouvent toujours sur un même plan.
Il n'y a rien à faire. Comme pour beaucoup d'autres fonctionnalités, GL_QUADS
a été déprécié dans la version 3.0 et la fonction supprimé dans la version 3.1. Évidemment, tout ceci n'est pas pertinent si vous créez un contexte de compatibilité.
Toute réponse que l'on pourrait donner sur la raison de leur dépréciation ne serait que pure spéculation.