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 :

Multi texturing VBO


Sujet :

OpenGL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2011
    Messages
    274
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2011
    Messages : 274
    Par défaut Multi texturing VBO
    Bonjour à tous
    Ma question est simple à comprendre : quel est le meilleur moyen, lorsqu'on utilise les vbos, "d'afficher" plusieurs textures sur un même vbo ?
    De plus, imaginons que je fasse une grosse texture qui englobe toutes les autres, suis-je obligé de dupliquer tous les vertex des jonctions des faces différemment texturées dans le VBO ?
    N'existe-t-il pas des moyens moins gourmands en mémoire ? Je précise que mon but est d'obtenir une map constituée de cubes (genre minecraft) pour laquelle chaque face peut être texturée différemment. J'ajoute que je n'utilise qu'un seul IBO et 32*32 vbo pour charger une map de 512*512 sous forme de bmp et qu'il faut donc de l'ordre de maximum 512*512*8 vertex (dans le pire des cas d'après l'algorithme que j'ai fait pour découper la surface en parallélépipèdes) et que ce nombre est multiplié par 5 (pour les 5 faces visibles) si je veux texturer chaque face de cube, sans compter que la taille du buffer de coordonnées de texture est elle aussi multipliée par 5.

    J'espère n'avoir pas été trop confus dans mon explication

    Merci par avance

  2. #2
    Inactif  


    Homme Profil pro
    Inscrit en
    Novembre 2008
    Messages
    5 288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Secteur : Santé

    Informations forums :
    Inscription : Novembre 2008
    Messages : 5 288
    Par défaut
    Citation Envoyé par Lintel-oo Voir le message
    J'espère n'avoir pas été trop confus dans mon explication
    Euh, si !

    Je dirais que c'est possible, mais il est aussi possible que je n'ai pas compris...
    Pas de code ?

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


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

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

    Informations forums :
    Inscription : Mai 2008
    Messages : 27 171
    Billets dans le blog
    155
    Par défaut
    Bonjour,

    Vous pouvez envoyer plusieurs coordonnées de textures par vertex si nécessaire (afin de faire du blending de texture ?).
    Sinon, vous pouvez même triché en utilisant plusieurs fois les même coordonnées de textures pour plusieurs textures, par vertex (c'est le shader qui gère après).

    Dans votre cas, vous pouvez même toujours passer les même coordonnées de texture pour tout les cube et passer un ID par fasse, qui fera en sorte de multiplié les coordonnées de textures actuelles afin de retrouver la bonne texture à utiliser dans une grille de textures. (Houlà, là, je crois que je n'ai pas bien expliqué).
    Soit, je reprends ->
    Vous avez une image, dans laquelle vous avez plusieurs textures. Pour chaque face, vous passez un ID permettant d'indiquer quelle texture vous voulez utiliser.
    Les coordonnées de texture seront toujours les mêmes, seul l'ID fera en sorte que le shader retrouve la bonne texture correspondante.
    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.

  4. #4
    Membre éclairé
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2011
    Messages
    274
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2011
    Messages : 274
    Par défaut
    Merci à vous,

    gbdivers : Pas de code ?
    Je posterai peut etre quelques morceaux d'ici demain

    LittleWhite : merci pour tes explications je pense avoir compris la méthode. Cependant, je me demandais si il fallait regrouper les vertex dans des vbo associés aux même ID de texture car appeler glDrawsElement est il me semble assez coûteux non ? Deja que 32*32 appels sont actuellement effectués, si je rajoute autant d'appels que de texture à afficher cela ne risque-t-il pas de faire trop et de réduire significativement les performances ?
    Sinon je pensais éventuellement regrouper des textures dupliquées 5 à 10 fois verticalement afin de permettre un seul appel à glDrawsElement par vbo tout en conservant des coordonnées de texture acceptables et ne "débordant" pas sur les autres textures. Aie ce n'est pas du tout clair demandez moi pour plus d'explications j'avoue ne pas savoir expliquer ^^.

    Sinon pour reprendre ta methode littlewhite n'aurais-tu pas des exemples de code à me proposer pour que je comprenne un peu mieux les avantages de ta méthode ? Pour voir si je l'ai bien compris comme il faut

  5. #5
    Membre éclairé
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2011
    Messages
    274
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2011
    Messages : 274
    Par défaut
    LittleWhite : seul l'ID fera en sorte que le shader retrouve la bonne texture correspondante
    Comment faire pour qu'en appelant une seule fois glBindTexture(...) on puisse faire en sorte qu'un vbo rempli d'une suite de coordonnées de texture constante corresponde à plusieurs textures différentes ??? (0;0 0;1 1;1 1;0 répétés un très grand nombre de fois) J'ai bien compris l'idée de l'id pour chaque face mais cependant je ne vois pas très bien comment la mettre en place .
    Auriez-vous quelques exemples à me proposer, ou juste un petit bout de code histoire de comprendre comment faire !
    Sinon est-il possible de ne réserver la place qu'à 8 coordonnées de texture se fixant pour chaque point successivement ? (est-il possible de texturer un ensemble de par exemple 100 vertex en utilisant seulement un tableau de 8 coordonnées de textures assignées aux vertex successifs de manière simple ? (j'avais pensé à un stride négatif dans la méthode glTexCoordPointer() mais j'ai vu que cela retournait invalid_qqch ^^)

    Voila j'espère que je n'ai pas été trop fouilli

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


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

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

    Informations forums :
    Inscription : Mai 2008
    Messages : 27 171
    Billets dans le blog
    155
    Par défaut
    Pour passer plusieurs textures au shader, vous utilisez soit :
    • plusieurs glBindTexture() ;
    • une seule texture, contenant plusieurs texture (un spritesheet ... enfin, en mieux). Dans ce cas, les coordonnées de texture passées permettent de spécifier la "sous texture" a afficher.


    Pour la question suivante, non, je ne crois pas que cela soit possible. Du moins, il faut au moins une tex coord par vertex (ou alors pas du tout ).
    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.

Discussions similaires

  1. Multi-texturing, Bump Mapping et VBOs
    Par Daxter06 dans le forum OpenGL
    Réponses: 5
    Dernier message: 14/09/2010, 10h02
  2. Multi texture massif
    Par Bat'O dans le forum OpenGL
    Réponses: 12
    Dernier message: 03/10/2009, 15h36
  3. Vertex Arrays : Multy textures
    Par Nikowa dans le forum OpenGL
    Réponses: 3
    Dernier message: 24/05/2009, 06h45
  4. Multi texture dans avec les VBO
    Par yvesall dans le forum OpenGL
    Réponses: 5
    Dernier message: 28/04/2009, 02h05
  5. [libjpeg && opengl] problème "multi-texturing"
    Par pspflashsystem dans le forum OpenGL
    Réponses: 4
    Dernier message: 23/02/2009, 14h01

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