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 :

Utilité des types OpenGL GLint, GLfloat, GLvoid, etc.


Sujet :

OpenGL

  1. #1
    Membre émérite Avatar de Djakisback
    Profil pro
    Inscrit en
    Février 2005
    Messages
    2 021
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 2 021
    Points : 2 278
    Points
    2 278
    Par défaut Utilité des types OpenGL GLint, GLfloat, GLvoid, etc.
    Bonjour,

    quelqu'un pourrait-il m'expliquer l'utilité d'utiliser les types OpenGL plutôt que les types de base : int, float, void, etc. ?

    Merci d'avance et a+
    Vive les roues en pierre

  2. #2
    Invité(e)
    Invité(e)
    Par défaut
    Bonjour
    Il me semble qu'à l'origine, c'est pour être compatible sur tout les compilateurs / architecture : les types de bases sont parfois différents. (little / big endian; 32 / 64 bits ....)
    Avec GLInt, GLFloat par de soucis de ce côté là -> la portabilité du code est facilitée.

  3. #3
    Rédacteur
    Avatar de bafman
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    2 574
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2003
    Messages : 2 574
    Points : 5 323
    Points
    5 323
    Par défaut
    c'est effectivement en partie la reponse...
    cela permet d'etre compatible entre les langages (tout les langages n'ont pas le même type int...) mais surtout car dans la norme c/c++, la taille du type int n'est pas fixée mais est definit par la taille d'un entier processeur (32 bits sur un proc 32 bits, 64 sur un 64...) bien que cette specification ne soit pas suivie par la plus part des compilo, pour eviter les problemes de compatibilitée, les type GL* ont été introduits

    conclusion : si tu fait un prog en utilisant des float, int et autre, ca marche sur ta machine (en fait plutot sur ton architecture materielle) mais pas forcement sur celle du voisin (qui a un MAC le lourd )
    * Il est infiniment plus simple de faire rapidement un code qui marche que de faire un code rapide qui marche
    * pour faciliter les recherches, n'oubliez pas de voter pour les réponses pertinentes
    Mes articles

  4. #4
    Membre émérite Avatar de Djakisback
    Profil pro
    Inscrit en
    Février 2005
    Messages
    2 021
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 2 021
    Points : 2 278
    Points
    2 278
    Par défaut
    Ah ok, merci à vous pour ces infos ^^
    Donc idem pour les autre lib j'imagine, par exemple DevIL, etc ?
    Vive les roues en pierre

  5. #5
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par bafman
    mais surtout car dans la norme c/c++, la taille du type int n'est pas fixée mais est definit par la taille d'un entier processeur (32 bits sur un proc 32 bits, 64 sur un 64...)
    Permet moi de te corriger sur ce point Le standard ne dit pas que int doit etre de 32 bit si tu as un cpu 32 bit, ou 64 si tu as un 64 bit. C'est long qui a cette propriete. De plus, la relation suivante existe pour la longueur des types en bit:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    char <= short <= int <= long
    Donc tu peux tres bien avoir un cpu 32 bit qui possede un int de 16 bit. Ou n'importe quelle combinaison qui respecte la relation ecrite ci-haut.

  6. #6
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    108
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 108
    Points : 128
    Points
    128
    Par défaut
    Pour la petite histoire, sous DOS, un int était sur 16 bits et un long sur 32 bits. Lorsque l'on est passé sous Windows 95 (système dits "32 bits"). La taille d'un int est passé sur 32 bits est un long est resté sur 32 bits. L'implémentation des type GL* est extrèmement important sur des architectures qui ne sont pas compatible x86 (station Alpha par exemple). La type donnée peux varier énormement en nombre de bits sur la taille d'un pointeur. Sur station Alpha ils sont peut-être sur 64 bits et sur une console portable (une PSP), ils sont peut-être que sur 8 bits.

  7. #7
    Membre averti Avatar de Bob.Killer
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    336
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 336
    Points : 332
    Points
    332
    Par défaut
    en fait on peut penser tt plein de trucs, mais ça sert à rien lol

    gl.h :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    typedef unsigned int GLenum;
    typedef unsigned char GLboolean;
    typedef unsigned int GLbitfield;
    typedef signed char GLbyte;
    typedef short GLshort;
    typedef int GLint;
    typedef int GLsizei;
    typedef unsigned char GLubyte;
    typedef unsigned short GLushort;
    typedef unsigned int GLuint;
    typedef float GLfloat;
    typedef float GLclampf;
    typedef double GLdouble;
    typedef double GLclampd;
    typedef void GLvoid;
    voilà comment ils sont défini... juste des typedef en gros c pareil d'utiliser int que GLint
    Pensez aux tutoriels programmation : http://programmation.developpez.com/cours-tutoriels/

  8. #8
    Expert confirmé
    Avatar de shenron666
    Homme Profil pro
    avancé
    Inscrit en
    Avril 2005
    Messages
    2 524
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : avancé

    Informations forums :
    Inscription : Avril 2005
    Messages : 2 524
    Points : 5 184
    Points
    5 184
    Par défaut
    Là tu as l'entête C/Win32 mais j'aimerai bien voir l'entête pour du delphi par exemple

    si les types de base sont pas les mêmes, ils créent des GLfloat comme en C pour justement avoir quelque chose de standard, le standard opengl avec ses types ect
    Tutoriels OpenGL
    Je ne répondrai à aucune question en MP
    - Si c'est simple tu dis que c'est compliqué et tu le fait
    - Si c'est compliqué tu dis que c'est simple et tu le sous-traite ou le fait faire par un stagiaire.

  9. #9
    Rédacteur
    Avatar de bafman
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    2 574
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2003
    Messages : 2 574
    Points : 5 323
    Points
    5 323
    Par défaut
    Citation Envoyé par Bob.Killer
    voilà comment ils sont défini... juste des typedef en gros c pareil d'utiliser int que GLint
    Bravo t'a tout compris... de travers...

    si jamais tu utilise des int et que tu est obligé de changer de plateforme et que celle la fait 64 bits au lieu de 32 ca ne passera pas...
    * Il est infiniment plus simple de faire rapidement un code qui marche que de faire un code rapide qui marche
    * pour faciliter les recherches, n'oubliez pas de voter pour les réponses pertinentes
    Mes articles

  10. #10
    Membre averti Avatar de Bob.Killer
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    336
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 336
    Points : 332
    Points
    332
    Par défaut
    que fait un typedef ?
    Pensez aux tutoriels programmation : http://programmation.developpez.com/cours-tutoriels/

  11. #11
    Expert confirmé
    Avatar de shenron666
    Homme Profil pro
    avancé
    Inscrit en
    Avril 2005
    Messages
    2 524
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : avancé

    Informations forums :
    Inscription : Avril 2005
    Messages : 2 524
    Points : 5 184
    Points
    5 184
    Par défaut
    Un typedef crée un synonyme pour le type donné en paramètre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    typedef type_de_base synonyme;
    Les intérêts sont multiples, par exemple simplifier l'écriture ou encore pouvoir modifier facilement un programme, par exemple au lieu d'utiliser :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    std::vector<float> v1,v2;
    on utilisera
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    typedef float my_real;
    std::vector<my_real> v1,v2;
    quel intérêt ?
    vous voulez changer la précision dans votre programme, si vous avez collé des float partout vous devez tout changer et attention à ne pas en oublier, alors qu'avec le typedef, une seule ligne à modifier

    dans le cas d'opengl, cela permet d'adapter les types à une machine
    c'est l'un des aspects d'un code souple et portable
    Tutoriels OpenGL
    Je ne répondrai à aucune question en MP
    - Si c'est simple tu dis que c'est compliqué et tu le fait
    - Si c'est compliqué tu dis que c'est simple et tu le sous-traite ou le fait faire par un stagiaire.

  12. #12
    Membre averti Avatar de Bob.Killer
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    336
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 336
    Points : 332
    Points
    332
    Par défaut
    donc voilà lol si on utilise gl.h et qu il défini les GL* à partir des int, double, float, ... de la machine on peut dire que int est équivalent à GLint et ainsi de suite non ?
    Pensez aux tutoriels programmation : http://programmation.developpez.com/cours-tutoriels/

  13. #13
    Expert confirmé
    Avatar de shenron666
    Homme Profil pro
    avancé
    Inscrit en
    Avril 2005
    Messages
    2 524
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : avancé

    Informations forums :
    Inscription : Avril 2005
    Messages : 2 524
    Points : 5 184
    Points
    5 184
    Par défaut
    On peut dire que GLint est synonyme de int mais pas l'inverse

    C'est une question de logique et si cela est vrai pour le gl.h Win32 ça ne l'est pas forcément pour les autres gl.h

    PS: J'aime pas le terme équivalence en programmation, c'est plus un terme destiné à l'alchimie (Joke Inside, ceux qui connaissent comprendront)
    Tutoriels OpenGL
    Je ne répondrai à aucune question en MP
    - Si c'est simple tu dis que c'est compliqué et tu le fait
    - Si c'est compliqué tu dis que c'est simple et tu le sous-traite ou le fait faire par un stagiaire.

  14. #14
    Membre averti Avatar de Bob.Killer
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    336
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 336
    Points : 332
    Points
    332
    Par défaut
    moi je connais juste le gl.h de win32 cela va poser pb qd on compilera avec un compilo 64bits qui va mettre le int sur 64bits car le typedef va mettre 64bits pour le GLint si je ne me trompe pas ...
    Pensez aux tutoriels programmation : http://programmation.developpez.com/cours-tutoriels/

  15. #15
    Expert confirmé
    Avatar de shenron666
    Homme Profil pro
    avancé
    Inscrit en
    Avril 2005
    Messages
    2 524
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : avancé

    Informations forums :
    Inscription : Avril 2005
    Messages : 2 524
    Points : 5 184
    Points
    5 184
    Par défaut
    Concernant le 64 bits, je t'invite à aller voir le topic quivant :
    http://www.developpez.net/forums/viewtopic.php?t=333731
    notemment le post de Voider (le 3ème)

    tu y verra entre autre cette regle sur la longueur des types:
    char <= short <= int <= long
    Tutoriels OpenGL
    Je ne répondrai à aucune question en MP
    - Si c'est simple tu dis que c'est compliqué et tu le fait
    - Si c'est compliqué tu dis que c'est simple et tu le sous-traite ou le fait faire par un stagiaire.

  16. #16
    Membre éclairé
    Avatar de Edouard Kaiser
    Profil pro
    Inscrit en
    Février 2004
    Messages
    521
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Février 2004
    Messages : 521
    Points : 756
    Points
    756
    Par défaut
    Je remonte un peu ce topic des abysses, désolés
    Je comprends absolument la redefinition des types de base par OpenGL, par contre je n'arrive pas à saisir l'utilité du type GLvoid ? Quand l'utiliser et quand ne pas l'utiliser ?
    Merci à tous

  17. #17
    Rédacteur
    Avatar de bafman
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    2 574
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2003
    Messages : 2 574
    Points : 5 323
    Points
    5 323
    Par défaut
    personnelement je ne l'utilise jamais, mais tant qu'a redefinir les type, autant tous les faires
    * Il est infiniment plus simple de faire rapidement un code qui marche que de faire un code rapide qui marche
    * pour faciliter les recherches, n'oubliez pas de voter pour les réponses pertinentes
    Mes articles

  18. #18
    Membre éclairé
    Avatar de Edouard Kaiser
    Profil pro
    Inscrit en
    Février 2004
    Messages
    521
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Février 2004
    Messages : 521
    Points : 756
    Points
    756
    Par défaut
    Ok merci

Discussions similaires

  1. Réponses: 0
    Dernier message: 13/02/2011, 12h35
  2. Intérêt (voire utilité) des types composites
    Par Maljuna Kris dans le forum Débuter
    Réponses: 4
    Dernier message: 15/12/2010, 08h45
  3. Réponses: 2
    Dernier message: 22/05/2008, 23h23
  4. Réponses: 2
    Dernier message: 22/09/2003, 11h23
  5. [ADO] Constantes des types de champ
    Par SpaceFrog dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 05/09/2002, 11h08

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