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 :

Visual C++


Sujet :

OpenGL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2004
    Messages
    582
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 582
    Par défaut Visual C++
    Bonjour,
    J'ai le code suivant pour créer plusieurs context.
    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
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
        int pf, maxpf;
     PIXELFORMATDESCRIPTOR pfd;
        LAYERPLANEDESCRIPTOR  lpd;  /* layer plane descriptor */
        int   nEntries = 2;   /* number of entries in palette */
        COLORREF crEntries[2] = {  /* entries in custom palette */
          0x00000000,   /* black (ref #0 = transparent) */
          0x00ff0000,   /* blue */
        };
        /* get the maximum number of pixel formats */
        maxpf = DescribePixelFormat(hDC, 0, 0, NULL);
        /* find an overlay layer descriptor */
        for(pf = 0; pf < maxpf; pf++) {
            DescribePixelFormat(hDC, pf, sizeof(PIXELFORMATDESCRIPTOR), &pfd);
     /* the bReserved field of the PIXELFORMATDESCRIPTOR contains the
        number of overlay/underlay planes */
     if (pfd.bReserved > 0) {
       /* aha! This format has overlays/underlays */
       wglDescribeLayerPlane(hDC, pf, 1,
        sizeof(LAYERPLANEDESCRIPTOR), &lpd);
       if (lpd.dwFlags & LPD_SUPPORT_OPENGL  &&     lpd.dwFlags & flags)
         {
           goto found;
         }
     }
        }
    found:
        /* now get the "normal" pixel format descriptor for the layer */
        DescribePixelFormat(hDC, pf, sizeof(PIXELFORMATDESCRIPTOR), &pfd);
     
        /* set the pixel format */
        if(SetPixelFormat(hDC, pf, &pfd) == FALSE) {
     MessageBox(NULL,
         "SetPixelFormat() failed:  Cannot set format specified.",
         "Error", MB_OK);
            return 0;
        }
     
        /* set up the layer palette */
        wglSetLayerPaletteEntries(hDC, 1, 0, nEntries, crEntries);
     
        /* realize the palette */
        wglRealizeLayerPalette(hDC, 1, TRUE);
     
        /* announce what we've got */
        printf("Number of overlays = %d\n", pfd.bReserved);
        printf("Color bits in the overlay = %d\n", lpd.cColorBits);
     
        return pf;
    J'ai donc le message d'erreur "Hardware does not support overlay planes." (provenant du code).
    A quoi cela est dû?

    Je vous remercie.

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    108
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 108
    Par défaut
    Cela signifie que ta carte 3D ne supporte pas les overlay. Ceci est plutôt étonnant. En faite, il faudrait que tu utilises la fonction ChosePixelFormat qui permet d'utiliser un format qui est compatible avec ton matériel.

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2004
    Messages
    582
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 582
    Par défaut Je vais voir
    Je vais regarder avec ChoosePixelFormat, mais je comprends pas pourquoi ma carte ne supporterais pas des overlay ...

  4. #4
    Membre éprouvé
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    108
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 108
    Par défaut
    Je te donne un exemple simple.

    Tu veux utiliser un profondeur de couleur en 24 bits.
    Le problème est que ta carte utilise en natif que du 16bits ou du 32bits.
    En faisant un ChoosePixelFormat, il va transformer ton format en un format compatible ; soit en 32 bits.
    Cela reste transparant pour toi et surtout, cela permet d'être plus facilement compatible avec le matériel.

Discussions similaires

  1. Différences entre Delphi et Visual Basic ?
    Par Anonymous dans le forum Débats sur le développement - Le Best Of
    Réponses: 75
    Dernier message: 30/03/2009, 20h09
  2. Choisir Visual c++ ou Borland C++Builder ?
    Par DevEric dans le forum Choisir un environnement de développement
    Réponses: 31
    Dernier message: 14/06/2007, 23h48
  3. requete avec OBCD et visual c++
    Par Anonymous dans le forum MFC
    Réponses: 12
    Dernier message: 18/11/2004, 16h15
  4. Que choisir ? Visual C++ ou Borland c++ builder ?
    Par ashram dans le forum Débats sur le développement - Le Best Of
    Réponses: 27
    Dernier message: 24/02/2003, 14h39

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