gestion du Mode de Color-Index et de la Palette de Windows
Le mode d’index des couleurs spécifie les couleurs d’une palette logique avec un index d’une entrée spécifique de la palette logique. La plupart des programmes GDI utilisent des palettes d’index de couleurs, mais le mode RVBA fonctionne mieux pour OpenGL pour plusieurs effets, tels que l’ombrage, l’éclairage, le brouillard et le mappage de texture. Si la couleur la plus vraie n’est pas critique pour votre application OpenGL, vous pouvez choisir d’utiliser le mode d’index des couleurs (par exemple, pour une carte topographique qui utilise « false Color » pour mettre en évidence le dégradé d’élévation).
Exemple de palette en mode Color-Index
Le code suivant configure une structure PIXELFORMATDESCRIPTOR qui définit l’indicateur du membre iPixelType sur PFD _ type _ ColorIndex. Cela spécifie que l’application utilise une palette d’index de couleurs.
BOOL bSetupPixelFormat(HDC hdc)
{
PIXELFORMATDESCRIPTOR pfd, *ppfd;
int pixelformat;
ppfd = &pfd;
ppfd->nSize = sizeof(PIXELFORMATDESCRIPTOR);
ppfd->nVersion = 1;
ppfd->dwFlags = PFD_DRAW_TO_WINDOW | PFD_SUPPORT_OPENGL |
PFD_DOUBLEBUFFER;
ppfd->dwLayerMask = PFD_MAIN_PLANE;
/* Set to color-index mode and use the default color palette. */
ppfd->iPixelType = PFD_TYPE_COLORINDEX;
ppfd->cColorBits = 8;
ppfd->cDepthBits = 16;
ppfd->cAccumBits = 0;
ppfd->cStencilBits = 0;
pixelformat = ChoosePixelFormat(hdc, ppfd);
if ( (pixelformat = ChoosePixelFormat(hdc, ppfd)) == 0 )
{
MessageBox(NULL, "ChoosePixelFormat failed", "Error", MB_OK);
return FALSE;
}
if (SetPixelFormat(hdc, pixelformat, ppfd) == FALSE)
{
MessageBox(NULL, "SetPixelFormat failed", "Error", MB_OK);
return FALSE;
}
return TRUE;
}