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 :

[Intel 945G][Stencil Buffer] - Stencil non supporté?


Sujet :

OpenGL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    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 [Intel 945G][Stencil Buffer] - Stencil non supporté?
    Bonjour,

    comme d'habitude je dois tester mes dernières modifications sur une carte en carton, l'Intel 945G.
    => Comme d'habitude mon programme plante là dessus....

    En l'occurence, il s'agit ici d'utiliser le stencil buffer afin de faire du "polygon capping" sur mes objets coupés par un clip plane (je fais des vues en coupe).
    Tout marche très bien sur mon ordi de développement, mais sur celui de test à base d'Intel 945g, ca plante à l'initalisation du programme.

    J'ai pu cerner le problème au niveau du pixel format:
    - Si je ne demande pas de stencil buffer, ca marche sur les deux machines...mais évidemment le polygon capping, lui, ne fonctionne pas correctement
    - Si je demande un stencil buffer, ca plante sur l'Intel945G

    J'ai regardé les différences entre les deux pixel format trouvés quand le programme tourne sur l'ordi à base d' Intel 945G, elles se résument à:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    - Pixel Format 1: 
    STENCIL_BITS = 0
    SHARE_ACCUM_ARB = TRUE
    SHARE_DEPTH_ARB = TRUE
    SHARE_STENCIL_ARB = TRUE
     
    - Pixel Format 2: 
    STENCIL_BITS = 8
    SHARE_ACCUM_ARB = FALSE
    SHARE_DEPTH_ARB = FALSE
    SHARE_STENCIL_ARB = FALSE
    Ormis les stencil bits, il y a donc ces valeurs de SHARE_* qui sont différentes. J'avoue ne pas maîtriser forcéments ces notions, mais je pense que le probleme vient de là. Mon programme plante en effet à des lignes qui, avec l'autre pixel format, ne posent aucun probleme (par exemple des appels à glDrawElements ou glActiveTexture), et comme dit il me suffit de désactiver la requete de stencil buffer pour que tout remarche.

    Mes questions:
    - Celà vous paraît-il plausible / compréhensible?
    - Y a-t-il un moyen d'y remedier? J'ai pu tester des tutoriaux utilisant le stencil buffer sur l' intel 945g, il doit bien y avoir moyen...
    - Ah et voici ma demande de pixel format, peut être ai-je fait quelque chose de travers ici:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    static PIXELFORMATDESCRIPTOR pfd =
    		{
    			sizeof(PIXELFORMATDESCRIPTOR),  // size of this pfd
    			1,                              // version number
    			PFD_DRAW_TO_WINDOW |            // support window
    			PFD_SUPPORT_OPENGL |            // support OpenGL
    			PFD_DOUBLEBUFFER,               // double buffered
    			PFD_TYPE_RGBA,					// RGBA color mode
    			32,                             // 32-bit color depth
    			0, 0, 0, 0, 0, 0,               // color bits ignored
    			1,								// alpha buffer (enabled to allow using destination alpha)
    			0,                              // shift bit ignored
    			0,                              // no accumulation buffer
    			0, 0, 0, 0,                     // accum bits ignored
    			16,                             // 16-bit z-buffer
    			1,                              // use stencil buffer (enabled to allow polygon capping in cross-section view)
    			0,                              // no auxiliary buffer
    			PFD_MAIN_PLANE,                 // main layer
    			0,                              // reserved
    			0, 0, 0                         // layer masks ignored
    		};
     
    		int pixelformat = ChoosePixelFormat(m_hdc, &pfd);
    Merci d'avance!

  2. #2
    Membre Expert
    Avatar de shenron666
    Homme Profil pro
    avancé
    Inscrit en
    Avril 2005
    Messages
    2 580
    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 580
    Par défaut
    l'Intel est peut-etre plus restrictif, demande dans ton pixel format un depth buffer 24 bits et un stencil 8 bits (au lieu de 16 et 1 respectivement)
    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
    demande dans ton pixel format un depth buffer 24 bits et un stencil 8 bits (au lieu de 16 et 1 respectivement)
    Merci mais malheureusement ca n'aide pas... Ce qui ne m'étonne pas puisqu'en utilisant GLView pour voir quels pixel formats sont dispos sur la 945G, j'en trouve bien avec depth buffer 32 bits et Stencil buffer 8 bits. De toute facon j'avais déjà essayé avec un depth de 16 bits et idem...

    Comme dit tout ce que je vois en checkant les pixel format disponibles, c'est que dès que le stencil buffer est activé les 3 paramètres WGL_SHARE_*_ARB sont TOUJOURS à FALSE, quels que soient les autres params du pixel format.

    A part ca aucune idée, et impossible de trouver des infos "utiles" (c'est à dire: autre chose que la description MSDN...) sur ces paramètres...

  4. #4
    Membre Expert
    Avatar de shenron666
    Homme Profil pro
    avancé
    Inscrit en
    Avril 2005
    Messages
    2 580
    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 580
    Par défaut
    et la démo ATI dont je t'avais donné le lien, est-ce qu'elle fonctionne ?
    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.

  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
    Oui elle fonctionne, le stencil buffer est donc bien présent et ne pose à priori pas de problème.

    Mais utiliser le stencil force un pixel format qui fait déconner le reste d'OpenGL, par exemple les appels à glDrawRangeElements avec un vertex array indexé (MAIS ca marche avec un vertex array standard...par contre ca plante 2 lignes après à l'appel de glActiveTexture...bref: y a plus rien qui marche

    ce que j'ai pu voir de l'exemple c'est qu'il utilise GLUT, qui s'occupe donc du choix du pixel format et compagnie, mais ca ne m#avance pas beaucoup...

    en tout cas merci de te pencher sur le problème, là je ne vois vraiment pas comment m'en sortir...

  6. #6
    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
    Re, je viens de trouver le problème:

    en changeant le réglage du depth buffer de 16 à 24 bits DANS LE DRIVER Intel, ca ne plante plus, et ce quels que soient les parametres de mon pixel format: ca marche aussi bien que je demande un depth buffer de 16 bits ou un de 24, et ca par contre je ne comprends pas trop...ne devrais-je pas être limité à la valeur fixée dans le driver??

    Enfin bref, ca marche, heureusement que j#ai cherché un peu ailleurs que dans le code sinon j'aurais pu y passer des semaines...

    En tout cas merci encore shenron666

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [PBUFFER][INTEL 945G] Pbuffers non supportés?
    Par ShevchenKik dans le forum OpenGL
    Réponses: 12
    Dernier message: 18/08/2008, 15h45
  2. stencil buffer
    Par graphicsxp dans le forum OpenGL
    Réponses: 2
    Dernier message: 13/12/2004, 13h21
  3. mask in stencil buffer
    Par graphicsxp dans le forum OpenGL
    Réponses: 3
    Dernier message: 13/12/2004, 11h17
  4. Probleme Stencil Buffer
    Par supergrey dans le forum DirectX
    Réponses: 14
    Dernier message: 20/07/2004, 20h54
  5. stencil buffer
    Par patapetz dans le forum OpenGL
    Réponses: 6
    Dernier message: 26/02/2004, 17h23

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