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 :

Extensions sous mac os


Sujet :

OpenGL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre chevronné
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    349
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2005
    Messages : 349
    Par défaut Extensions sous mac os
    Bonjour,

    J'ai une application OpenGL qui tourne très bien sous windows xp que j'essaie de porter sous mac os x. J'ai un problème pour les extensions (j'utilise les vertex buffer objects).

    Ma déclaration

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    static PFNGLGENBUFFERSARBPROC glGenBuffersARB;
    static PFNGLBINDBUFFERARBPROC glBindBufferARB;
    static PFNGLBUFFERDATAARBPROC glBufferDataARB;
    static PFNGLDELETEBUFFERSARBPROC glDeleteBuffersARB;
    me retourne les erreurs

    MonFichier.h:12: error: ‘PFNGLGENBUFFERSARBPROC’ does not name a type
    MonFichier.h:13: error: ‘PFNGLBINDBUFFERARBPROC’ does not name a type
    MonFichier.h:14: error: ‘PFNGLBUFFERDATAARBPROC’ does not name a type
    MonFichier.h:15: error: ‘PFNGLDELETEBUFFERSARBPROC’ does not name a type
    Evidemment j'inclue glext.h, comme il y en a 6 sur le disque dur de mon mac et qu'un seul fait les déclarations nécessaires je l'ai copié dans le dossier de mon projet, renommé MYglext.h que j'inclue ensuite à la place de glext.h (comme ça c'est le bon) mais l'erreur est toujours là. J'ai aussi essayé avec un glext.h réçent récuperé sur opengl.org mais toujours la même erreur. Apparement il n'y a pas les #define nécessaires pour passer par les déclarations dans glext.h?

    Quelqu'un a-t'il une idée pour résoudre mon problème? Merci d'avance.

  2. #2
    Membre éprouvé Avatar de razmott
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    133
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 133
    Par défaut
    Bonjour.

    C'est un problème classique sous MacOS. Depuis MacOS X, il n'y a plus de moyen de charger d'extensions (il n'y a pas d'équivalent de wglGetProcAddress). En fait, il n'y a plus de système d'extension du tout.

    Ainsi certain moteur, comme Irrlicht, ont choisi la méthode suivante : créer un gestionnaire d'extension avec une foule de fonctions d'OpenGL plus ou moins renommé (Dans Irrlicht ils ont choisis un G majuscule pour GlGenBuffers par exemple).
    Sous win32/linux, ce gestionnaire redirige vers des fonctions utilisant des pointeurs. Sous Mac, c'est un appel direct des fonction OpenGL 2.0.

    Bien sûr, si sur ta plateforme la méthode est accessible, elle ne l'est pas forcément sur une autre. Ainsi il faut quand même vérifier la présence de l'extension avec glGetString.

    J'espère que cela t'as aidé.

    Bon courage.

  3. #3
    Membre chevronné
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    349
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2005
    Messages : 349
    Par défaut
    Merci pour l'aide, mais concrètement je peux pas utiliser une extension sous mac os x alors? Est-il possible d'utiliser les vertex buffer objects de manière portable? (si possible sans devoir utiliser une autre bibliothèque).

  4. #4
    Membre chevronné
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    399
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 399
    Par défaut
    Salut, en fait il faut recoder toi meme la fonction permettant de recupérer l'addresse d'une fonction OpenGL sous mac.

    Moi j'utilise ca :

    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
    16
    17
    18
    19
    20
    21
    22
     
    #include <mach-o/dyld.h>
    #include <stdlib.h>
    #include <string.h>
     
    void* GLExtHandler::SPK_NSGLGetProcAddress(const char* name)
    {
    	NSSymbol symbol;
    	char *symbolName;
     
    	symbolName = (char*)malloc (strlen (name) + 2);
    	strcpy(symbolName + 1, name);
    	symbolName[0] = '_';
    	symbol = NULL;
     
    	if (NSIsSymbolNameDefined (symbolName))
    		symbol = NSLookupAndBindSymbol (symbolName);
     
    	free (symbolName);
     
    	return symbol ? NSAddressOfSymbol (symbol) : NULL; 
    }
    EDIT : j'ai retrouvé le lien ou j'avais trouvé cette fonction : http://developer.apple.com/mac/libra...1987-CH402-SW2
    SPARK
    Moteur de particule C++ opensource avec modules de rendu OpenGL, Irrlicht et SFML

Discussions similaires

  1. [swig] utilisation de ld sous mac osX tiger.
    Par PyBio dans le forum Interfaçage autre langage
    Réponses: 3
    Dernier message: 26/10/2005, 17h51
  2. détecter os 9 ou 10 sous mac
    Par taly dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 24/10/2005, 09h56
  3. [C++] Programmation C++ sous Mac
    Par reggae dans le forum Développement OS X
    Réponses: 2
    Dernier message: 09/10/2005, 12h10
  4. lbrairie glui sous mac
    Par milliet dans le forum OpenGL
    Réponses: 6
    Dernier message: 05/05/2005, 14h58

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