IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)

FAQ SDL

FAQ SDLConsultez toutes les FAQ

Nombre d'auteurs : 6, nombre de questions : 67, création le 10 mai 2013 

 
OuvrirSommaireInterfaçage avec OpenGL

Pour initialiser SDL afin qu'il accepte l'affichage OpenGL, il suffit de procéder comme ceci :

 
Sélectionnez
if (SDL_Init(SDL_INIT_VIDEO) != 0)
{
    printf("Impossible d'initialiser SDL : %s\n", SDL_GetError());
    return 1;
}

La surface pour l'écran peut être définie de la manière suivante (on définit une fenêtre de résolution 800x600 avec 32 bits pour chaque pixel) :

 
Sélectionnez
screen = SDL_SetVideoMode(800, 600, 32, SDL_OPENGL);

if (screen == NULL)
    return EXIT_FAILURE;

Si vous souhaitez utiliser les fonctions SDL 2D en même temps, il faut remplacer SDL_OPENGL par SDL_OPENGLBLIT.

Pour demander un double tampon pour l'affichage (voir https://jeux.developpez.com/faq/sdl/?page=2d#2D_double_buffering), on ne prévient plus dans SetVideoMode, mais on utilise à la place SDL_GL_SetAttribute :

 
Sélectionnez
/* Mettre en place le double buffer */
SDL_GL_SetAttribute(SDL_GL_DOUBLEBUFFER, 1);

Enfin, pour échanger les tampons en fin d'affichage :

 
Sélectionnez
SDL_GL_SwapBuffers();
Créé le 16 mars 2006  par fearyourself

Si nous travaillons avec une image au format BMP, nous pouvons utiliser directement SDL et non SDL_image (voir https://jeux.developpez.com/faq/sdl/?page=2d#2D_formats).

Tout d'abord, nous déclarons une surface et appelons la fonction SDL_LoadBMP :

 
Sélectionnez
SDL_Surface *temp;
temp = SDL_LoadBMP(file);

Cette fonction retourne 0 s'il y a eu un problème. Ensuite, le code demeure du code OpenGL de base. On utilise simplement les membres de la structure SDL_Surface afin de récupérer les dimensions et les pixels de l'image chargée et les passer aux fonctions OpenGL :

 
Sélectionnez
/* Récupérer un numéro pour une texture */
glGenTextures(1, &image);

/* Charger une texture */
glBindTexture(GL_TEXTURE_2D, image);

/* Générer une texture */
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, temp->w, temp->h, 0, GL_RGB, GL_UNSIGNED_BYTE, temp->pixels);

/* Des bons paramètres */
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
Créé le 16 mars 2006  par fearyourself

On définit le nombre de bits que nous voulons pour le tampon en utilisant la fonction SDL_GL_SetAttribute.

Par exemple, pour définir 16 bits pour le tampon de profondeur :

 
Sélectionnez
SDL_GL_SetAttribute(SDL_GL_BUFFER_SIZE, 16);

On peut également définir le nombre de bits pour chaque couleur en utilisant les constantes SDL_GL_RED_SIZE, SDL_GL_GREEN_SIZE, SDL_GL_BLUE_SIZE et SDL_GL_ALPHA_SIZE.

On peut également faire de même pour le stencil buffer, avec SDL_GL_STENCIL_SIZE.

Créé le 16 mars 2006  par fearyourself

Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright © 2006-2012 Developpez Developpez LLC. Tous droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site ni de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.