Les extensions OpenGL

0 Flares Twitter 0 Facebook 0 Google+ 0 Email -- Filament.io 0 Flares ×

Les extensions sont des fonctionnalités qui viennent s’ajouter à la base d’OpenGl. Elles permettent aux développeurs d’accéder à des fonctionnalités matérielles présentent sur certaines cartes. En gros, elles permettent aux constructeurs d’apporter leurs petites touches personnelles lorsque les spécifications de base leur semblent insuffisantes.
Ainsi NVidia, Ati, Intel, SGI, 3dFx, S3, … ont tous développé des extensions propres à leur matériel.

Pour connaître les extensions supportées par votre carte, il vous suffit d’employer la fonction glGetString(GL_EXTENSIONS); qui retourne un pointeur vers une chaîne de caractères de type “const unsigned char”.

Voici le code :

// le pointeur vers la chaîne de caractères qui va contenir la liste des extensions
char * extensions;

// on récupère les extensions
extensions = (char *) glGetString(GL_EXTENSIONS);

Chaque extension est séparée par un espace.
Cette fonction permet de vérifier la présence d’une extension :

bool inStr(char *string, const char *search) {

    int pos = 0; // position initiale
    int maxpos = strlen(search) - 1; // la position à ne pas dépasser
    int len = strlen(string);
    char *other;

    // on parcourt la totalité de la chaîne
    for( int i = 0 ; i < len ; i++ )
    {
        // on vérifie qu'il ne s'agit pas du début ou alors d'un espace
        if( (i==0) || ( (i>1) && string[i-1] == ' ' ) )
        {
            // un nouveau mot commence
            other = &string[i];
            pos = 0;
            while( string[i] != ' ' )
            {
                // on vérifie que les caractères du mots correspondent
                if( string[i] == search[pos] ) pos++;

                // si on atteind la fin ou si il y a un espace, c'est bon
                if( ( pos > maxpos ) && string[i+1] == ' ' ) return true;

                i++;
            }
        }
    }
    return false;
}

Après avoir détecté une extension, il vous faudra la charger. Plusieurs fichiers entête seront nécessaires en fonction de l’extension que vous désirez utiliser (glext.h, glxext.h et wglext.h parmis d’autres).
Ces fichiers contiennent toutes les énumérations et prototypes de toutes les extensions connues et peuvent être téléchargés ici.
Adresse utile car comprend toutes les extensions connues ou officiellement connues.

Il vous faudra parfois télécharger les fichiers publiés par les créateurs de l’extension pour pouvoir l’utiliser.

Certaines extensions ne sont pas officiellement supportées par votre carte et ne sont donc pas activées par défaut. Il est parfois possible de les activer via la base de registres (sous Windows)

Pour connaître ces extensions et tout un tas d’autres informations sur votre carte graphique et son support d’OpenGl, je vous invite à télécharger l’utilitaire GLView.

0 Flares Twitter 0 Facebook 0 Google+ 0 Email -- Filament.io 0 Flares ×

Leave a Comment

*