IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

OpenGL Discussion :

texture float: OpenGL vs OpenGL ES


Sujet :

OpenGL

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 106
    Par défaut texture float: OpenGL vs OpenGL ES
    Bonjour,

    Je suis un peu perdu sur la manière de créer une texture float, entre OpenGL 2.0 et OpenGL ES 2.0...

    J'avais l'habitude avec OpenGL de les déclarer de la manière suivante:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA32F, width, height, 0, GL_RGBA, GL_FLOAT, data);
    glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA16F_ARB, width, height, 0, GL_RGBA, GL_FLOAT, data);
    glTexImage2D(GL_TEXTURE_2D, 0, GL_ALPHA32F_ARB, width, height, 0, GL_ALPHA, GL_FLOAT, data);
    glTexImage2D(GL_TEXTURE_2D, 0, GL_ALPHA16F_ARB, width, height, 0, GL_ALPHA, GL_FLOAT, data);
    Le 3em argument étant le format de stockage interne (VRAM), le 7em le nombre de canaux dans l'image source (RAM), et le 8em le format de stockage des canaux l'image source (RAM).

    Seulement j'ai l'impression que ces conventions ne sont plus d'actualité dans OpenGL ES 2, le manuel n'est vraiment pas clair à ce sujet... De ce que j'ai compris seul le 8em argument définie le format de canaux du stockage interne (VRAM) ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, width, height, 0, GL_RGBA, GL_FLOAT, data);
    glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, width, height, 0, GL_RGBA, GL_HALF_FLOAT_OES, data);
    glTexImage2D(GL_TEXTURE_2D, 0, GL_ALPHA, width, height, 0, GL_ALPHA, GL_FLOAT, data);
    glTexImage2D(GL_TEXTURE_2D, 0, GL_ALPHA, width, height, 0, GL_ALPHA, GL_HALF_FLOAT_OES, data);
    1/ Est-ce que j'ai bien compris les conventions ?
    2/ Existe t-il une manière universelle (compatible GL/GL ES) de déclarer une texture float ?
    3/ En GL ES, à quoi servent les defines GL_RGBA32F_EXT, GL_RGBA16F_EXT, GL_ALPHA32F_EXT et GL_ALPHA16F_EXT ?
    4/ En GL ES, quand on crée une texture FLOAT16, il considère que l'image source est obligatoirement stocké sous forme FLOAT32 ?

    Merci !

  2. #2
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    27 054
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 27 054
    Billets dans le blog
    141
    Par défaut
    Bonjour,

    Je conseillerai de bien lire la spécification pour connaître les format disponible sur OpenGL ES (il arrive que certains formats ne soient pas supportés sur les plateformes OpenGL ES alors que ceux ci le sont sur OpenGL).
    Ensuite, je conseille aussi d'utiliser glGetError() après chaque appel, ce qui permettra de savoir si les arguments passés à la fonction sont corrects.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, width, height, 0, GL_RGBA, GL_FLOAT, data);
    Cette manière me semble universelle.

    3/ En GL ES, à quoi servent les defines GL_RGBA32F_EXT, GL_RGBA16F_EXT, GL_ALPHA32F_EXT et GL_ALPHA16F_EXT ?
    C'est le support des formats (pour se rapprocher de OpenGL), sauf que c'est implémenté par une extension. Si l'extension n'est pas disponible, cela ne fonctionnera pas.

    4/ En GL ES, quand on crée une texture FLOAT16, il considère que l'image source est obligatoirement stocké sous forme FLOAT32 ?
    Je doute, mais cela dépend du format des données entrantes, que l'on peut spécifier. Le problème, c'est plus : "Est-ce que votre plateforme embarquée supporte des floats sur 32bits" (ce qui n'est pas toujours le cas, lorsque la plateforme supporte les float )
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 106
    Par défaut
    J'ai trouvé un peu plus d'infos, donc je me répond:

    Il y a effectivement une implémentation différente de glTexImage2D (en ce qui concerne les formats float) entre OpenGL et OpenGL ES. Un ingénieur de Google spécialiste du sujet en parle ici:
    https://www.khronos.org/webgl/public.../msg00142.html
    Et on retrouve effectivement ces différences dans les registres OpenGL et OpenGL ES:
    http://www.opengl.org/registry/specs...ture_float.txt
    New Tokens:
    ...
    RGBA32F_ARB 0x8814
    RGBA16F_ARB 0x881A
    ALPHA32F_ARB 0x8816
    ALPHA16F_ARB 0x881C
    http://www.khronos.org/registry/gles...ture_float.txt
    New Tokens:
    ...
    HALF_FLOAT_OES 0x8D61
    FLOAT 0x1406
    Ce qui correspond bien aux 2 exemples que je donnais dans le premier post.
    Ecrire glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, width, height, 0, GL_RGBA, GL_FLOAT, data) en OpenGL créera une image RGBA8 en mémoire, à partir d'une image RGBA32F.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Appliquer des textures dans un widget OpenGL
    Par dourouc05 dans le forum Téléchargez
    Réponses: 0
    Dernier message: 09/11/2010, 20h55
  2. Impossible d'appliquer une texture avec Glut et Opengl
    Par akrogames dans le forum OpenGL
    Réponses: 5
    Dernier message: 29/10/2010, 10h20
  3. Dialog OpenGL + Fenetre OpenGL = Blocage.
    Par tazer dans le forum OpenGL
    Réponses: 1
    Dernier message: 08/11/2007, 16h34
  4. Texture float / shaders
    Par Codeur masqué dans le forum OpenGL
    Réponses: 0
    Dernier message: 14/09/2007, 12h04
  5. [FAQ] [OpenGL] The OpenGL Extension Registry déménage
    Par shenron666 dans le forum Contribuez
    Réponses: 2
    Dernier message: 07/07/2006, 16h39

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo