====== 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]] |