====== Différences ====== Ci-dessous, les différences entre deux révisions de la page.
|
allegro:bitmaps [2011/12/05 15:34] mrhide [Détails] |
allegro:bitmaps [2012/06/29 17:02] (Version actuelle) mrhide [Bitmaps] |
||
|---|---|---|---|
| Ligne 1: | Ligne 1: | ||
| - | ===== Bitmaps ===== | + | ===== Allegro — Bitmaps ===== |
| Dans cet article nous allons voir comment créer des bitmaps et comment dessiner dessus. | Dans cet article nous allons voir comment créer des bitmaps et comment dessiner dessus. | ||
| - | ==== Buffer d'affichage/de dessin ==== | + | //Note importante : Allegro 5 utilise un backend OpenGL ou DirectX pour ses Bitmaps, ce qui impose certaines contraintes :\\ |
| + | Les bitmaps trop grands(dépend du matériel) ne pourront être créés, et souvent les bitmaps ne pourrons pas être de taille inférieure à 16*16.\\ | ||
| + | De plus la plupart des systèmes n'acceptent que des bitmaps dont la taille est une puissance de 2.\\ | ||
| + | Si on demande à Allegro de créer un Bitmap d'une taille qui ne convient pas au matériel, Allegro renvoie un bitmaps de la première taille au dessus qui correspond.// | ||
| - | Allegro 5 introduit le concept de buffer d'affichage, et de buffer de dessin. Ils sont tous deux liés, à part que le buffer de dessin ne doit pas être affiché. | + | //Pour toutes ces raisons faites attention quand vous dessinez sur votre Bitmap, il se pourrait bien qu'il soit plus grand que vous ne le pensiez !// |
| + | ==== Buffer de dessin ==== | ||
| - | Quand on crée un display, on crée des sous-buffers dont des buffers de dessin. | + | Allegro 5 introduit le concept de buffer de dessin, le buffer de dessin n'est pas affiché. |
| - | Toutes les opérations de dessin doivent se faire sur le buffer de dessin, qui dans la plupart des cas est l'un des sous-buffers du display actuel. | + | Quand on crée un display, on crée automatiquement un buffer de dessin. |
| + | |||
| + | Toutes les opérations de dessin doivent se faire sur le buffer de dessin du display actuel. | ||
| ==== Exemple basique ==== | ==== Exemple basique ==== | ||
| Ligne 175: | Ligne 181: | ||
| Détruit un objet de type bitmap. | Détruit un objet de type bitmap. | ||
| - | Nous en avons fini avec les bitmaps d'Allegro 5. | + | ==== Charger des bitmaps depuis le disque ==== |
| - | ==== Example avancé ==== | + | Voici la méthode utilisant les fonctions path d'allegro afin de garantir un code portable |
| - | FIXME chargement de bitmaps via le greffon **allegro-image** à écrire ici. | + | <code c> |
| + | ALLEGRO_BITMAP * get_resource_image(const char * filename) { | ||
| + | ALLEGRO_PATH *path; | ||
| + | ALLEGRO_BITMAP *image; | ||
| + | path = al_get_standard_path(ALLEGRO_RESOURCES_PATH); | ||
| + | al_append_path_component(path, "images"); | ||
| + | al_set_path_filename(path, filename); | ||
| + | |||
| + | image = al_load_bitmap(al_path_cstr(path, '/')); | ||
| + | al_destroy_path(path); | ||
| + | return image; | ||
| + | } | ||
| + | </code> | ||
| + | |||
| + | Dans ce cas de figure, les ressources de notre jeu sont placées dans le dossier **image** relativement à l'exécutable.\\ | ||
| + | Ce code fait pointer path sur le dossier contenant le fichier exécutable de notre jeu grâce au paramètre **ALLEGRO_RESOURCES_PATH**, puis ajoute le dossier **"images"** et enfin le nom de notre fichier au path. | ||
| + | |||
| + | **al_path_cstr(path, '/')** permet de rendre notre path valide sur tous les OS. | ||
| + | |||
| + | La fonction **al_load_bitmap** va chercher la fonction capable de charger l'image en fonction de son extension (.jpg, .bmp ...), et renvoit NULL si elle ne la trouve pas ou si la fonction a échouée à charger l'image. | ||
| + | |||
| + | **Par défaut allegro ne gère aucun format d'image**, il faut utiliser le greffon [[allegro:addon_image|ImageIO]] afin de pouvoir charger quelques formats. | ||
| + | |||
| + | Nous en avons fini avec les bitmaps d'Allegro 5. | ||
| - | [[allegro:timers|Précédent]] << [[allegro:start|Sommaire]] >> [[allegro:input|Suivant]] | + | [[allegro:timers|Précédent]] << [[allegro:start#articles|Sommaire]] >> [[allegro:input|Suivant]] |