2017-05-03 2 views
0

Je porte le a SDL 1.2 program (repository) qui utilise des surfaces de couleur indexées 8 bits à SDL2.Correspond à la palette par défaut de SDL 1.2 avec SDL_CreateRGBSurface()?

Malheureusement, SDL_CreateRGBSurface() définit par défaut une palette de 256 entrées pour les surfaces de 8 bpp au lieu de la palette RGB884 que SDL_SetVideoMode() définit dans SDL 1.2.

Comment puis-je définir une palette qui correspond à la palette par défaut à partir d'un appel SDL 1.2 SDL_SetVideoMode(..., ..., 8, SDL_SWSURFACE)?

Répondre

0

SDL_SetPaletteColors() et tables dérivées de la sortie de SDL 1.2 SDL_SetVideoMode() me donner cet extrait:

surface = SDL_CreateRGBSurface(0, 100, 100, 8, 0, 0, 0, 0); 
Uint8 r[8] = { 0, 36, 73, 109, 146, 182, 219, 255 }; 
Uint8 g[8] = { 0, 36, 73, 109, 146, 182, 219, 255 }; 
Uint8 b[4] = { 0, 85, 170, 255 }; 
int curColor = 0; 
for(unsigned int i = 0; i < 8; ++i) 
for(unsigned int j = 0; j < 8; ++j) 
for(unsigned int k = 0; k < 4; ++k) 
{ 
    SDL_Color color = { r[i], g[j], b[k], 255 }; 
    SDL_SetPaletteColors(surface->format->palette, &color, curColor, 1); 
    curColor++; 
}