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 :

Incohérence des textures sous OpenGL


Sujet :

OpenGL

  1. #1
    Nicuvëo / Calëtunda
    Invité(e)
    Par défaut Incohérence des textures sous OpenGL
    Dans le cadre de ma première année dans une école informatique, je suis en train de réaliser un jeu en 3D, avec OpenGL.

    Ma question porte sur les textures.
    J'ai étudié tous les tutoriaux possibles, de manière à comprendre le fonctionnement des textures, puis j'ai étudié des sources (www.sulaco.co.za). J'ai récupéré un loader de Texture TGA, qui marche impeccablement. Il présente toutefois une particularité que je n'arrive pas à expliquer : selon l'endroit du programme où est stockée la variable (un Gluint) renvoyé par ce loader, la texture s'affiche ou pas... Comme je n'ai trouvé nulle part d'informations sur ce problème, voici quelques exemples de ce que j'ai constaté.

    Deux exemples :
    1/ La variable est globale dans l'unité qui gère toutes les fonctions graphiques, et l'appel à la fonction LoadTexture se fait dans cette même unité, au lancement du programme, et la texture s'affiche. (si l'une des deux conditions ci-dessus n'est pas vérifiée, la texture ne s'affiche pas : GLBindTexture renvoie false)
    2/ La variable est globale (je sais, berk, mais là n'est pas la question ) au programme, en tant que variable public d'une classe Tskin. Et là, rien ne s'affiche, où que soit l'appel à la fonction LoadTexture, où que soit déclarée la variable stockant les textures...

    Ce que je souhaite savoir, c'est quels sont les mécanismes apparemment illogiques qui gèrent les textures, ou bien où je peux trouver plus d'infos sur ce sujet, et comment afficher correctement les textures où que soit la variable.

    Merci d'avance !


    PS : je continue les tests, comme passer la variable de la texture en paramètre global à la fonction d'affichage. Je vous tiens au courant des résultats.

  2. #2
    Nicuvëo / Calëtunda
    Invité(e)
    Par défaut
    Je précise que je travaille sous Delphi 7.
    Merci d'avance...

  3. #3
    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
    Quand tu charges une texture en mémoire, OpenGL te renvoi un identifiant (le fameux GLuint) qui te permet de retouver la texture.

    A partir de cet identifiant, tu peux appliquer une texture sur tous les objets suivant à l'aide de glBindTexture.

    En simple :
    LoadTexture --> identifiant et
    glBindTexture(identifiant) --> active la texture

    Tu es donc obliger de charger la texture avant de pouvoir l'utiliser.

    Généralement, le loadTexture se trouve dans la fonction d'initialisation d'OpenGL et le BindTexture se trouve dans la fonction draw d'OpenGL.

    Par contre, le lien qui est fait entre ces deux fonctions est l'identifiant qui doit être le même.

    Si ta variable se trouve dans un objet, celui-ci ne doit surtout pas être détruit entre c'est deux phases.

  4. #4
    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
    et aussi verifie bien qu'openGL est activé quand tu charge ta texture, ca peut paraitre tout bête mias si tu essaye d'utiliser une fonction openGL avant d'avoire crée la fenetre, ca ne marchera pas...

Discussions similaires

  1. Quelle API pour importer des textures dans OpenGL
    Par sphynxounet dans le forum OpenGL
    Réponses: 5
    Dernier message: 12/01/2010, 16h57
  2. Textures sous openGL
    Par mozillo3625 dans le forum C++
    Réponses: 2
    Dernier message: 03/05/2008, 17h11
  3. Ajouter une textures sur des objets 3D openGL
    Par rere56 dans le forum 3D
    Réponses: 1
    Dernier message: 27/07/2007, 11h08
  4. Taille maxi des textures suivant version OpenGL
    Par Invité dans le forum OpenGL
    Réponses: 11
    Dernier message: 28/07/2006, 19h42
  5. texture sous opengl : objets complexes
    Par pouleriguen dans le forum OpenGL
    Réponses: 1
    Dernier message: 20/11/2004, 19h47

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