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 :

Probleme avec le multitexturing: limitation à 4 textures?


Sujet :

OpenGL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    318
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 318
    Par défaut Probleme avec le multitexturing: limitation à 4 textures?
    Salut tout le monde,

    Je suis en train de faire un moteur 3D et j'ai fait un shader pour un rendu de terrain qui utilise 13 textures,
    1 pour le terrain, 4 pour les colors map, 4 pour les masques et 4 pour les normals map.

    Mon problème est que openGL detecte une erreur de type GL_INVALID_OPERATION dans glClientActiveTextureARB(GL_TEXTUREX_ARB) à partir de GL_TEXTURE8_ARB jusqu'a GL_TEXTURE12_ARB. ce qui fait que des zones noires correspondant aux textures non affichées son sur mon rendu

    quand j' utilise glGetIntegerv(GL_MAX_TEXTURE_UNITS, & m_nNBTextureMax));
    Pour connaitre le nombre de texture max OpenGL me retourne 4.
    Pourtant les indices de texture vont de GL_TEXTURE0_ARB à GL_TEXTURE31_ARB

    Ma carte graphique est plutôt ressente c'est une NVidia 8700 GT 512 Mo, elle devrai permettre plus que 4 ou 8 textures.
    J'utilise aussi SFML comme bibliothèque de fenêtrage

    Ce qui est très bizzard c'est qu'avec la démo précédente de mon moteur j'ai les mêmes erreurs venant d'openGL (GL_INVALID_OPERATION et textureMAx = 4) mais le shader fonctionne parfaitement. Le probleme ne vient donc pas de celui-ci.

  2. #2
    Membre Expert
    Avatar de shenron666
    Homme Profil pro
    avancé
    Inscrit en
    Avril 2005
    Messages
    2 582
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : avancé

    Informations forums :
    Inscription : Avril 2005
    Messages : 2 582
    Par défaut
    la seule solution que j'ai à te proposer est de faire un rendu multi passes
    en tout cas, soit ton rendu est impressionnant, soit tu t'y prend mal parceque 13 textures pour effectuer le rendu d'un terrain...
    Tutoriels OpenGL
    Je ne répondrai à aucune question en MP
    - Si c'est simple tu dis que c'est compliqué et tu le fait
    - Si c'est compliqué tu dis que c'est simple et tu le sous-traite ou le fait faire par un stagiaire.

  3. #3
    Membre chevronné
    Inscrit en
    Février 2008
    Messages
    413
    Détails du profil
    Informations personnelles :
    Âge : 45

    Informations forums :
    Inscription : Février 2008
    Messages : 413
    Par défaut
    Bonjour,

    Pour connaitre le nombre de texture max OpenGL me retourne 4.
    Pourtant les indices de texture vont de GL_TEXTURE0_ARB à GL_TEXTURE31_ARB
    Les indices sont ce qui a été "prévu" par la spécification OpenGL, ca ne veut pas dire que ta carte supporte obligatoirement 32 textures.
    Si OpenGL te dit 4, c'est que c'est 4, c'est tout a fait envisageable avec ta carte.
    Perso j'utilise au boulot une Quadro FX 350M, qui elle aussi n'a que 4 unités de textures alors que ce n'est quand meme pas une antiquité...

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    318
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 318
    Par défaut
    Citation Envoyé par ShevchenKik Voir le message
    Si OpenGL te dit 4, c'est que c'est 4, c'est tout a fait envisageable avec ta carte.
    Pourquoi alors OpenGL me dit GL_INVALID_OPERATION à partir de GL_TEXTURE8_ARB ? Ça me fait 8 et non pas 4

  5. #5
    Membre chevronné
    Inscrit en
    Février 2008
    Messages
    413
    Détails du profil
    Informations personnelles :
    Âge : 45

    Informations forums :
    Inscription : Février 2008
    Messages : 413
    Par défaut
    tu veux dire que tu n'as pas d'erreur en utilisant jusqu'à 8 unités de textures mais qu'au delà ca plante?

    Si oui c en effet bizarre. Essaie d'installer glView, il te dira de maniere sûre ce dont ta carte est capable...

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    318
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 318
    Par défaut
    Citation Envoyé par ShevchenKik Voir le message
    tu veux dire que tu n'as pas d'erreur en utilisant jusqu'à 8 unités de textures mais qu'au delà ca plante?

    Si oui c en effet bizarre. Essaie d'installer glView, il te dira de maniere sûre ce dont ta carte est capable...
    Je viens de regarder avec glView
    Effectivement j'ai bien Texture units = 4 ce qui explique le chiffre de 4 optenu avec glGetIntegerv(GL_MAX_TEXTURE_UNITS, & m_nNBTextureMax));

    Je vais pas mettre toutes les infos que glView fournis, voici les pricipales

    Renderer: GeForce 8700M GT/PCI/SSE2
    Vendor: NVIDIA Corporation
    Memory: 512 MB
    Version: 2.1.1
    Shading language version: 1.20 NVIDIA via Cg compiler
    Max number of light sources: 8
    Max viewport size: 8192 x 8192
    Max texture size: 8192 x 8192
    Max anisotropy: 16
    Max samples: 32
    Max draw buffers: 8
    Max texture coordinates: 8
    Max vertex texture image units: 32

    Est ce que l'erreur à partir de GL_TEXTURE8_ARB serrait du à
    Max texture coordinates: 8

    Ce qui est bizarre c'est que j'arrive dans certaines de mes demos à rendre malgré les erreurs tout ce dont j'ai envie, un exemple par l'image ou j'ai 12 textures pour le rendu du terrain (4 pour les colors maps: sable, herbe1, herbe 2, roche, 4 pour les masque indiquant les zones ou les afficher, 4 pour les normal pour faire du bumpmapping dessus) + 1 pour le shadow mapping


    je rajoue une miage pour monter quand ça marche pas remarquez les zones noires:

Discussions similaires

  1. probleme avec les textures
    Par fantazya_z dans le forum GLUT
    Réponses: 14
    Dernier message: 19/02/2007, 21h34
  2. Directx 8 Probleme avec setrenderTarget pour un rendu du monde sur une texture
    Par zerailkiller dans le forum Développement 2D, 3D et Jeux
    Réponses: 7
    Dernier message: 14/01/2007, 13h50
  3. 3D en Java. Problème avec les textures !
    Par dotrungtien dans le forum Moteurs 3D
    Réponses: 4
    Dernier message: 07/04/2006, 19h43
  4. Réponses: 4
    Dernier message: 20/11/2005, 22h53
  5. PROBLEME avec limitation de longueur de champ...
    Par zarbydigital dans le forum Bases de données
    Réponses: 10
    Dernier message: 05/10/2005, 11h02

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