C'est votre premiere visite sur ce site ? Vous ne savez pas ce qu'est ubuntu ? cliquer ici !

[lib SDL] Script C++ Pour Le Scrolling Automatique

03/09/2007 a 11h36 | 1089 hits

Les positions négatives avec la librairie SDL sont difficiles à gérer . Pour arriver à placer une surface à une position inférieure à 0, il faut utiliser une méthode appelé "Scrolling" . Pour ne pas ce soucier de ce défaut, voici un script qui fera tout automatiquement !

La fonction SDL_BlitSurface de la librairie SDL, de son vrai nom "SDL_UpperBlit" ne vous permet pas d'afficher des positions inférieures à 0 que ce soit sur l'axe x ou y .

Je vais tout d'abord vous expliquer comment palier ce problème .

Commençons tout d'abord par expliquer le prototype de la fonction SDL_BlitSurface, elle pourrait se résumer à cela :

SDL_BlitSurface(surface, partie_a_blitter, support, position_sur_le_support);

Tous ces paramètres sont des pointeurs ! Si position_sur_le_support.x < 0 alors position_sur_le_support.x = 0 (pareil pour position_sur_le_support.y) . En effet, puisque vous envoyez un pointeur, la fonction SDL_BlitSurface modifie sa valeur si elle est inférieure à 0 !

Le scrolling consiste donc à "blitter" que ce qui doit être blitté si il y a une position plus petite que 0 grâce au deuxième paramètre !

Vous ne voulez pas vous ennuyez à faire ceci (ce qui se comprend), voici donc un "patch" qui modifiera la fonction SDL_BlitSurface :


Télécharger : SDL_BlitSurface.h [2ko]

Voici comment installer ce bout de code :
¤ Premièrement, rendez-vous dans le dossier des headers de la lib SDL (sur linux, c'est /usr/include/SDL/ et n'oubliez pas d'ouvrir le dossier en root !)
¤ Puis, déplacez le fichier téléchargé dans ce dossier
¤ Pour finir, dans vos sources, quand vous inclurez SDL.h, vous inclurez juste après SDL_BlitSurface.h
exemple :
#include < SDL/SDL.h >
#include < SDL/SDL_BlitSurface.h >


Et le tour est joué ! vous pouvez désormais poser des surfaces à des positions négatives !



retour lire/ajouter des commentaires [0]

[ Copyright 2007 © antoinexp, tous droits réservés ] designed by antoinexp, linuxearth@free.fr |