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 :

Programme portable pour Windows


Sujet :

OpenGL

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    128
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 128
    Points : 146
    Points
    146
    Par défaut Programme portable pour Windows
    Bonjour,
    Je souhaiterais rendre un programme OpenGL qui fonctionne sous Linux portable pour Windows.

    Si j'en crois le lien ci-dessous il faut utiliser wglGetProcAddress()
    http://www.opengl.org/resources/code...s/node396.html

    J'ai donc codé quelque chose comme ça :

    Code C : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    #ifdef _WIN32
     
    #define DECLARE_FUNC(func, f_type) \
    static f_type func = NULL; \
    static unsigned int func##_is_loaded = 0;
     
    #define LOAD_FUNC(func, f_type) \
        func = (f_type) wglGetProcAddress(#func); \
        if (func != NULL) func##_is_loaded = 1;
     
    #define IS_FUNC_LOADED(func) \
    if (!func##_is_loaded) raise_exception("Unable to load " #func);
     
    // list of all the functions that windows has to load
    DECLARE_FUNC(glCreateShader, PFNGLCREATESHADERPROC)
    /* etc ... */
     
    void windows_init()
    {
        // list of the functions that windows has to load:
     
        LOAD_FUNC(glCreateShader, PFNGLCREATESHADERPROC)
        /* etc ... */
    }
    #else
    #define IS_FUNC_LOADED(func)
    void windows_init() { return; }
    #endif
     
        /* utilisation */
        IS_FUNC_LOADED(glCreateShader)
        GLuint s = glCreateShader(GL_VERTEX_SHADER);

    J'ai uniquement accès à des machines sous Linux ou MacOS X, donc j'aurais quelques questions pour Windows que je ne vais pas pouvoir tester :

    1) Est-ce la manière correcte de procéder ?

    2) Où puis-je trouver la liste exhaustive des fonctions que je dois loader de cette manière ?

    3) dois-je conseiller aux utilisateurs Windows d'utiliser mon application avec cygwin ? MinGW ? quelque chose d'autre ? rien du tout ?

    merci d'avance

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


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

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

    Informations forums :
    Inscription : Mai 2008
    Messages : 26 883
    Points : 219 327
    Points
    219 327
    Billets dans le blog
    123
    Par défaut
    Bonjour,

    Je pense que le mieux serait d'utiliser GLUT ( freeglut ) plutot que quelque chose qui soit un mix du plusieurs code plateforme spécifique.
    Plus précisément, GLUT est une bibliothèque qui crée des fenêtre pour OpenGL. Cette bibliothèque est portable (Linux, Windows, et surement Mac ( à vérifié )).

    Sinon, pour votre méthode elle est correcte. La liste des options, c'est ce dont vous avez besoin. Il faut d'abord verifié si l'utilisateur à l'extension ( ou la capacité ) qui a la fonction que vous voulez charger. Cela se fait avec glGetString(GL_EXTENSIONS).
    Après il faut chercher dans le retour de la fonction, pour savoir si l'extension est dedans.

    Et finalement, il sera de votre devoir de faire un executable windows ( à l'aide de mingw, par exemple ), que celui ci, sera facilement executable par les gens ( double clique comme tout autre programme )
    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 expérimenté

    Profil pro
    Programmeur
    Inscrit en
    Août 2002
    Messages
    1 091
    Détails du profil
    Informations personnelles :
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Programmeur

    Informations forums :
    Inscription : Août 2002
    Messages : 1 091
    Points : 1 679
    Points
    1 679
    Par défaut
    Citation Envoyé par adtunum Voir le message
    J'ai uniquement accès à des machines sous Linux ou MacOS X, donc j'aurais quelques questions pour Windows que je ne vais pas pouvoir tester :
    1) Est-ce la manière correcte de procéder ?
    Non la bonne manière de procéder serait au moins de tester sur une machine windows (elles ne représentent que 90% du parc installé après tout..). Tu peux trouver des licences windows en dessous de 100$ sinon.

    OpenGL.Org (maintenu par Khronos-ExARB) contient la liste des extensions, fonctions, dont WGL l'extension OpenGL pour Windows :
    http://www.opengl.org/registry/

    LeGreg

    Mon site web | Mon blog | Mes photos | Groupe USA
    > BONJOUR, JE SUIS NOUVEAU SUR CE FORUM
    > presse la touche caps lock, stp
    > OH.. MERCI C EST BEAUCOUP PLUS FACILE COMME CA

Discussions similaires

  1. Netbeans, version portable pour Windows 7
    Par ebenmous dans le forum NetBeans
    Réponses: 12
    Dernier message: 17/06/2011, 17h28
  2. Compiler programme c++ pour windows ce
    Par timotep dans le forum C++
    Réponses: 1
    Dernier message: 10/04/2009, 15h17
  3. Réponses: 2
    Dernier message: 07/08/2006, 10h34
  4. Programmer pour windows...mouarf!
    Par 5:35pm dans le forum Windows
    Réponses: 5
    Dernier message: 20/04/2006, 09h50
  5. Créer de programme pour WIndows avec Turbo Pascal
    Par kaygee dans le forum Turbo Pascal
    Réponses: 16
    Dernier message: 20/08/2003, 23h22

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