web-dev-qa-db-fra.com

Quelles sont les différences entre OpenGL ES 2.0 et OpenGL ES 3.0

Je veux savoir quelles sont les différences entre OpenGL ES 2.0 et OpenGL ES 3.0.

Quel est le principal avantage de OpenGL ES 3.0?

30
pushyu

Je pense qu'il serait préférable de lire la section "Version 3.0 et avant -> Nouvelles fonctionnalités" sur le site officiel spécifications

Et il est rétrocompatible avec ES 2.0.

13
Alexey Odintsov

Directement de Wikipedia :

La spécification OpenGL ES 3.0 a été publiée en août 2012. OpenGL ES 3.0 est rétrocompatible avec OpenGL ES 2.0, permettant aux applications d'ajouter progressivement de nouvelles fonctionnalités visuelles aux applications.

Les nouvelles fonctionnalités de la spécification OpenGL ES 3.0 incluent:

  • de multiples améliorations du pipeline de rendu pour permettre l'accélération d'effets visuels avancés, notamment: requêtes d'occlusion, rétroaction de transformation, rendu instancié et prise en charge de quatre cibles de rendu ou plus,
  • compression de texture ETC2/EAC de haute qualité en standard, éliminant le besoin d'un ensemble de textures différent pour chaque plate-forme,
  • une nouvelle version du langage d'ombrage GLSL ES avec une prise en charge complète des opérations en virgule flottante entière et 32 ​​bits;
  • fonctionnalité de texturation grandement améliorée, y compris la prise en charge garantie des textures à virgule flottante, des textures 3D, des textures de profondeur, des textures de vertex, des textures NPOT, des textures R/RG, des textures immuables, des textures de tableau 2D, des swizzles, LOD et mip pinces de niveau, cartes de cube sans couture et objets échantillonneurs,
  • un ensemble complet de formats requis de texture et de tampon de rendu de taille explicite, réduisant la variabilité de l'implémentation et facilitant l'écriture d'applications portables.
8
David Rönnqvist

Dans l'ensemble, les changements augmentent la flexibilité avec des tampons plus grands, plus de formats, plus d'uniformes, etc. Des fonctionnalités supplémentaires telles que le rendu instancié, les objets de tampon de pixels et les requêtes d'occlusion offrent des possibilités d'optimisation. Selon votre plate-forme, cela pourrait être révolutionnaire, mais de nombreuses fonctionnalités clés étaient déjà des extensions sur des plates-formes telles que iOS.

Pour mon travail personnel, les changements les plus importants sont:

  • objets de tableau de sommets
  • rendu instancié
  • Formats de compression de texture ETC2/EAC (Auparavant sur Android chaque fabricant de cartes ne supportait que ses propres formats de texture)

Voici une liste des changements décrits dans la spécification liée par Alexey:

Les nouvelles fonctionnalités d'OpenGL ES 3.0 incluent:

  • OpenGL Shading Language ES 3.00
  • transformer les commentaires 1 et 2 (avec restrictions)
  • objets tampons uniformes, y compris des tableaux de blocs
  • objets de tableau de sommets
  • objets d'échantillonneur
  • synchroniser les objets et les clôtures
  • objets tampon pixel
  • mappage de sous-plages de tampons
  • objet tampon pour tamponner les copies d'objet 314
  • requêtes d'occlusion booléenne, y compris le mode conservateur
  • rendu instancié, via la variable shader et/ou le diviseur d'attribut vertex
  • plusieurs cibles de rendu
  • Tableau 2D et textures 3D
  • spécification de stockage de texture simplifiée
  • Textures R et RG
  • texture bouillonne
  • cartes de cube sans soudure
  • textures sans puissance de deux avec prise en charge complète du mode enveloppement et mipmapping
  • texture LOD pinces et décalage de base du niveau mipmap et pince max.
  • au moins 32 textures, au moins 16 pour les fragments et les vertex shaders
  • Textures à virgule flottante 16 bits (avec filtrage) et 32 ​​bits (sans filtrage)
  • Afficheurs, textures et attributs de sommet entiers signés et non signés 32 bits, 16 bits et 8 bits
  • Textures et tampons d'image sRGB 8 bits (sans rendu mixte RGB/sRGB)
  • 11/11/10 textures RVB à virgule flottante
  • exposant partagé textures RGB 9/9/9/5
  • 10/10/10/2 textures entières normalisées et non normalisées non signées
  • 10/10/10/2 attributs de sommet normalisés signés et non signés
  • Attributs de sommet à virgule flottante 16 bits
  • Textures normalisées signées 8 bits par composant
  • Formats de compression de texture ETC2/EAC
  • formats de texture internes dimensionnés avec une précision minimale garantie
  • tampons de rendu multi-échantillons
  • Afficheurs de rendu normalisés 8 bits non signés
  • textures de profondeur et comparaison des ombres
  • Rembourrage et textures de profondeur 24 bits
  • Rendeurs et textures de profondeur/pochoir 24/8
  • 32 bits de profondeur et 32 ​​F/8 de profondeur/tampons de rendu et textures de pochoir
  • stretch blits (avec restrictions)
  • conseils d'invalidation de framebuffer
  • redémarrage primitif avec index fixe
  • indices d'éléments entiers non signés avec au moins 24 bits utilisables
  • commande draw permettant de spécifier la plage des éléments accessibles
  • possibilité d'attacher n'importe quel niveau mipmap à un objet framebuffer
  • équations de mélange minimum/maximum
  • binaires de programme, y compris interrogation de binaires à partir de programmes GLSL liés
  • compilateur en ligne obligatoire
  • matrices uniformes non carrées et transposables
  • état de stockage de pixels supplémentaire
  • requêtes de chaînes d'extension indexées
7
Justin Meiners