Fonctionnalités manquantes de WebGL et OpenGL ES

10

J'ai commencé à utiliser WebGL et je suis ravi de la facilité avec laquelle je peux tirer parti de mon expérience OpenGL (et par extension OpenGL ES). Cependant, ma compréhension est la suivante:

  • OpenGL ES est un sous-ensemble d'OpenGL
  • WebGL est un sous-ensemble d'OpenGL ES

Est-ce correct pour les deux cas? Si oui, existe-t-il des ressources pour détailler les fonctionnalités manquantes?

Par exemple, une caractéristique manquante notable est glPushMatrixet glPopMatrix. Je ne les vois pas dans WebGL, mais dans mes recherches, je ne les trouve pas non plus référencées dans le matériel OpenGL ES.

Chris Smith
la source

Réponses:

9

Le wiki WebGL contenait une section dans sa hiérarchie FAQ pour " Différences WebGL et OpenGL " qui semble se concentrer sur les différences entre WebGL et les implémentations OpenGL "de bureau" et, hélas, n'est pas très détaillée (il s'agit principalement du comportement, pas de l'API) .

Si cela ne vous donne pas suffisamment de détails, vous devrez peut-être comparer manuellement la dernière version de WebGL avec les spécifications OpenGL ES ou OpenGL .


la source
9

Avez-vous vérifié la dernière version de WebGL?

Selon le projet en cas de contradiction, la spécification OpenGL ES 2.0 est l'autorité finale.

Le chapitre 6 décrit les différences entre OpenGL ES 2.0 et WebGL.

http://www.khronos.org/registry/webgl/specs/latest/

Tadeu Maia
la source
Vous avez eu une bonne réponse, que j'ai votée positivement, mais avez accepté l'autre réponse car elle indiquait d'autres ressources à vérifier. Merci de votre aide.
Chris Smith
0

Une façon de voir les choses est WebGL est OpenGL ES 2.0 et OpenGL ES 2.0 est OpenGL avec toutes les anciennes versions supprimées.

Depuis Shaders ont été ajoutés tout l'héritage pipeline de fonction fixe glPushMatrix, glLight,glVertex etc tous aucun sens de garder autour.

Ces fonctionnalités sont-elles «manquantes» ou correctement et correctement «obsolètes»?

Quelles fonctionnalités spécifiques recherchez-vous?

WebGL / OpenGL ES 2.0 sont des shaders de vertex et de fragments de base. Il y a un support limité pour les textures non puissantes de 2 et seulement quelques formats de texture (pas vraiment une limite est que 99% de toutes les textures sont RGB8 ou RGBA8). La prise en charge des textures à virgule flottante est facultative, mais la majorité des appareils les prennent en charge. La prise en charge du rendu en textures à virgule flottante est cependant plus rare. Peu ou pas d'appareils mobiles prennent en charge le rendu en texture à virgule flottante.

WebGL2 (qui vient d'être livré) et OpenGL ES 3.0 ont ajouté une tonne de nouveaux formats de texture, notamment des textures et des textures 3D basées sur des nombres entiers. Il a supprimé les limites de texture sans puissance de 2. Il a ajouté une rétroaction de transformation (la possibilité pour un vertex shader d'écrire dans un tampon). Il a également ajouté des requêtes d'occlusion. Les objets Vertex Array sont standard (ils étaient facultatifs dans WebGL / ES 3.0). Il y a un tas d'autres fonctionnalités plus mineures.

ES 3.1 (et probablement la prochaine version de WebGL) ajoute des shaders de calcul (la possibilité pour un shader de fragment d'effectuer des écritures à accès aléatoire). Les shaders de fragments ne peuvent écrire que sur le fragment / pixel qui leur est demandé pour le moment, alors que les shaders de calcul et écrivent où ils veulent.

Quelles autres fonctionnalités vouliez-vous utiliser?

gman
la source