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

Comment charger une image avec DevIL et l'afficher avec OpenGL

Comme je l'avais promis dans ce sujet, voici un tutoriel sur DevIL. Ce tutoriel présente une façon de charger un fichier image et de l'utiliser comme texture dans OpenGL. Nous utiliserons DevIL 1.7.5.

Commentez Donner une note à l´article (5)

Article lu   fois.

Les trois auteurs et traducteur

Site personnel

Traducteur : Profil Pro

Profil ProSite personnel

Liens sociaux

Viadeo Twitter Facebook Share on Google+   

I. Devil

Image non disponible

Chanson de DevIL :

« La la la, une bibliothèque d'images multiplateforme utilisant une

syntaxe simple pour charger, enregistrer, convertir, manipuler, filtrer et

afficher une variété d'images en toute simplicité, la la la »

Image non disponible

II. Introduction

Ceci est le premier vrai tutoriel sur Geeks3D. J'ai un million de tutoriels à écrire et un blog est l'endroit parfait pour cela en raison de la forte interaction avec vous, cher lecteur. Pour ceux qui connaissent mon travail sur le site oZone3D.Net, les tutoriels de Geeks3D peuvent être considérés comme la suite…

Ceci dit, plongeons-nous dans DevIL.

III. DevIL et OpenGL

DevIL (également connu sous le nom d'OpenIL) est une bibliothèque d'images permettant le chargement et la manipulation (filtrage, redimensionnement) d'images. Le développeur de DevIL, Denton Woods, avait mis le projet en sommeil pendant deux ans, mais a récemment relancé le codage de DevIL. C'est pourquoi cela vaut la peine de connaître cette bibliothèque cool.

DevIL suit la philosophie d'OpenGL dans la syntaxe des fonctions et la manière dont nous les utilisons. Donc si vous êtes habitué à OpenGL, vous devriez être opérationnel avec DevIL en quelques minutes. DevIL est Open Source et devrait être libre pour des projets commerciaux et non commerciaux. J'ai dit « devrait », car je n'ai pas trouvé de texte de licence clair…

Vous pouvez trouver plus d'informations sur DevIL ICI.

IV. Chargement d'une image

Le tutoriel que je propose montre une façon de charger une image JPG et l'utiliser en tant que données RVB codées sur des octets pour appliquer une texture sur un quadrilatère. Le noyau du tutoriel est la fonction DevILTextureLoader() (dans le fichier ctexture.cpp).

Fondamentalement, cette fonction effectue les étapes suivantes :

  1. génère le nom d'une image et le lie ;

    La même chose qu'OpenGL avec les fonctions glGenTextures() / glBindTexture().

     
    Sélectionnez
    ILuint ImgId = 0;
    
    ilGenImages(1, &ImgId);
    
    ilBindImage(ImgId);
  2. charge l'image du nom du fichier ;
     
    Sélectionnez
    ilLoadImage(filename);
  3. récupère la taille de l'image et alloue de la mémoire pour copier la texture (RVB en octets) ;
     
    Sélectionnez
    width = ilGetInteger(IL_IMAGE_WIDTH);
    
    height = ilGetInteger(IL_IMAGE_HEIGHT);
    
    pixmap = new BYTE[width * height * 3];
    
    ilCopyPixels(0, 0, 0, width, height, 1, IL_RGB, 
    
    IL_UNSIGNED_BYTE, pixmap);
  4. délie l'image et libère la mémoire de l'image DevIL.
 
Sélectionnez
ilBindImage(0);

ilDeleteImage(ImgId);

V. Accès au tampon de l'image

Selon votre application, l'étape 3 n'est pas nécessaire. DevIL garde un tampon mémoire avec les données de l'image lié au nom de l'image (ImgId dans notre exemple). Vous pouvez accéder directement au tampon de l'image DevIL comme ceci :

 
Sélectionnez
ilBindImage(ImgId);

BYTE* data = ilGetData();

IlGetData() permet d'obtenir un pointeur direct sur le pointeur actuel lié à l'image. Ainsi, tant que le nom de l'image est valide, vous pouvez utiliser les données pointées par ilGetData().

OK, je pense que ce court tutoriel est suffisant pour débuter avec DevIL. Pour rendre votre vie de geek plus facile, j'ai préparé un projet Visual C++ 2005 prêt à être compilé. Ce projet contient tout ce dont vous avez besoin pour créer l'exécutable de démo : les données et les fichiers DevIL (*.h + *.dll + *.lib). Vous pouvez télécharger le projet ici.

Amusez-vous !

VI. Remerciements

Cet article est une traduction autorisée de Image non disponiblel'article paru sur Geeks3D.com.

Je tiens à remercier LittleWhite pour sa relecture lors de la traduction de cet article, ainsi que zoom61 pour ses corrections.

Vous avez aimé ce tutoriel ? Alors partagez-le en cliquant sur les boutons suivants : Viadeo Twitter Facebook Share on Google+   

Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright © 2013 Geeks3D. Aucune reproduction, même partielle, ne peut être faite de ce site ni de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.