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

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Contribuez Discussion :

[FAQ] [Allegro] début de la faq allegro [En attente]


Sujet :

Contribuez

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé

    Profil pro
    Inscrit en
    Février 2004
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 25
    Par défaut [FAQ] [Allegro] début de la faq allegro
    bon je tente de faire un bout de faq allegro pour combler le vide. désolé pour les éventuelles fautes de français .


    qu'est ce qu'Allegro ?

    Allegro (Allegro Low LEvel Game ROutines) est une librairie écrite en C regroupant tout un tas de routines multimedias de bas niveau.
    elle permet de gerer, entre autre:

    • Le mode graphique: fenetré ou plein écran
    • Le chargement et la sauvegarde d'images sous de nombreux formats
    • L'affichage 2d software avec des fonctions de blit (copie de bitmap) et de dessins de primitives (lignes, polygones, rectangles, spline, cercle ...).
    • Les tranformations de bitmap: modification de la taille, rotation etc ...
    • L'affichage 2d hardware via open GL avec l extension Open Layer
    • L'affichage 3d software
    • L'affichage 3d hardware via open GL avec l'extension ALLEGRO GL
    • L'audio
    • La gestion de fichiers "compactés" .dat
    • Les timers
    • Les entrées utilisateur ( clavier, souris, manette ...)
    • L'interface graphique via le GUI Allegro


    Pour terminer, Allegro est sous licence giftware, vous pouvez donc l'utiliser comme bon vous semble:

    http://alleg.sourceforge.net/license.fr.html



    pourquoi utiliser Allegro ?
    on preferera Allegro aux autres librairies (directX,SDL) car celle ci est facile à apprendre, la syntaxe se rapproche beaucoup des fonctions de la librairie standard c sans event ni rien.De plus Allegro est tres complète, pas besoin d'utiliser plusieurs librairies pour faire un jeu, allegro se charge de tout.
    En plus de sa facilité, Allegro est multiplateforme, il existe des portages pour presque tout les os : windows, dos, linux ,beOS ,macOS X ...

    Enfin, il existe de nombreux binding d'allegro: C#, python, lua ...

    Pour avoir un aperçu de ce qui est possible de faire avec allegro allez faire un tour sur www.allegro.cc .

    voici quelques projets developpé à l'aide d'Allegro:

    http://www.allegro.cc/depot/Meteor2/ meteor un jeu d'action.
    http://www.allegro.cc/depot/PurpleMartians/ purple martian un melange d'enigme et de jeu de plateforme
    http://www.allegro.cc/depot/IcyTower icytower un petit jeu d'adresse
    http://www.allegro.cc/depot/MythicBlades mythicblades un jeu de combat 3d commercial










    bon voila j'en ecrirai d autre cet aprem, j espere que cela correspond avec l esprit faq de developpez. com

  2. #2
    Membre confirmé

    Profil pro
    Inscrit en
    Février 2004
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 25
    Par défaut
    Ou se procurer Allegro et comment l'installer (windows)?

    La derniere version stable d'Allegro est disponible ici : http://www.allegro.cc/files/

    cette page contient plusieurs choses:
    • des packages binaires pour les principaux compilateur C/C++ sous windows (facile a installer)
    • La source pour compiler la librairie sous differentes plateformes
    • La documentation tres fournie d'Allegro


    L'installation d'Allegro sous windows est très facile, voici ce que vous devez faire pour l'installer:

    • Aller sur http://www.allegro.cc/files/ dans la section binary et choisir le package pour son compilateur
    • Ouvrir le package
    • Ce dernier contient 3 dossier lib,include et bin : il faut copier le contenu de lib dans le répertoire library de votre compilateur, copier le contenu du dossier include dans le répertoire include de votre compilateur et enfin copier les dll contenues dans bin dans windows/system
    • Voila, allegro est prète à être utilisée

  3. #3
    Membre confirmé

    Profil pro
    Inscrit en
    Février 2004
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 25
    Par défaut
    ou trouver des tutorials pour Allegro ?


    voici quelques tutorials pour allegro:

    (fr) http://iteme.free.fr/tutorials/Allegro.pdf très bon tutorial en francais sur les bases d'allegro idéal pour commencer. il traite de l'affichage en général (utilisation d'un buffer, double et triple buffering, fonction de blit, affichage de texte,de primitives), de la récupération des entrées utilisateur (clavier, souris)
    et des timers.

    (en)http://loomsoft.net/resources/alltut/alltut_index.htm traite des même choses que précedement avec en plus la gestion de bounding boxes pour la collision, la gestion de l'animation, l'utilisation des datafiles ...

    (en) http://www.reflectedgames.com/create.html tutorial sur la création d'un jeu type hack n slash avec Alegro, très intéressant

    (en)http://pixwiki.bafsoft.com/wiki/index.php/Main_Page ce site contient l'ensemble des magazines pixelate. ces magazines traitent d'Allegro mais aussi de tout ce qui est en rapport avec la création de jeu : écriture de moteur 2D tile, gestion de collision, moteurs physiques,bsp tree, etc...

  4. #4
    Membre confirmé

    Profil pro
    Inscrit en
    Février 2004
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 25
    Par défaut
    ou trouver des librairie additionnelles pour Allegro ?

    la page dédiée aux librairies pour Allegro est ici: http://www.allegro.cc/resource/Libraries

  5. #5
    Membre confirmé

    Profil pro
    Inscrit en
    Février 2004
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 25
    Par défaut
    bon maintenant j attaque la 2D je pense que les generalité sont a peu pres toutes passées en revue


    Comment initialisé un mode video ?

    Pour initialiser le mode graphique, on utilise les fonctions:

    int set_gfx_mode(int card, int w, int h, int v_w, int v_h);
    et set_color_depth(int col);

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    set_color_depth(16);//on choisit le mode 16 bit les modes valides sont 8 16 24 32
     
    //on va maintenant initialiser le mode video avec la fonction set_gfx_mode
     
    set_gfx_mode(GFX_AUTODETECT_WINDOWED, 800, 600, 0,0);
    /*
      les arguments de la fonction sont:
    1) le "mode video" a utiliseé il en existe plusieur, ici on utiliser  un mode video qui servira à creer une fenetre
    2) la taille en X du mode graphique ici 800
    3)la taille en Y du mode graphique ici 600
    4 et 5) la taille de l ecran virtuel, on ne l utilise pas donc 0,0
    */
    voici les different mode video que nous pouvons passer en parametre :
    GFX_AUTODETECT -> on laisse allegro trouver un driver correct
    GFX_AUTODETECT_FULLSCREEN -> on laisse allegro trouver un driver en mode plein écran
    GFX_AUTODETECT_WINDOWED-> on laisse allegro trouver un driver en mode fenetré.

    il exists plein d autres modes video differents selon l'os, pour de plus amples informations sur tout les modes video, se referer à la documentation allegro: section platform specifics

    voila l exemple de base maintenant, il se peut qu'il n'existe aucun driver qui accepte la resolution, il est donc conseillé de tester si le mode video a été initialisé, la fonction retourne 0 si le mode video est initialisé:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    set_color_depth(16);
    //on va maintenant initialiser le mode video avec la fonction set_gfx_mode
     
    if(set_gfx_mode(GFX_AUTODETECT_WINDOWED, 800, 600, 0,0)!=0)return 0;

  6. #6
    Membre confirmé

    Profil pro
    Inscrit en
    Février 2004
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 25
    Par défaut
    Comment créer ou charger les different types bitmap ?

    Une fois le mode video initialisé nous pouvons creer et charger des bitmaps.
    Il est possible de creer plusieurs type de bitmap avec allegro, nous allons voir ces differents types et comment les utiliser.

    il existe 3 types de bitmap dans Allegro:

    1) les bitmaps "normaux" stockés dans la ram: ces bitmap permettent des blit assez lents, mais la vitesse de blit est assuré sur tout les pc.ce sont les bitmaps les plus rapide a transformer (rotation transparence etc)

    2) les bitmap "system" stockés dans la ram:ces bitmaps sont un peu particuliés, bien que stocké dans la ram, ils autorisent des blits plus rapides vers la carte vidéo que les bitmap simples.ils sont aussi rapide à transformer que les bitmaps normaux.le seul bémol est que la vitesse de blit n'est pas assuré sur tout les pc, il faut tester le flag GFX_HW_SYS_TO_VRAM_BLIT etGFX_HW_SYS_TO_VRAM_BLIT_MASKED pour etre sur que l'utilisation de bitmap system ne fasse pas baisser les performances du programme.

    3) les bitmaps "video" stocké dans la memoire video: la creation de ces bitmap est limité par la taille de la memoire vidéo. les blits bitmaps vidéos vers bitmap vidéo sont extrement rapide. La vitesse des blit video depend de la carte graphique, si la carte ne supporte pas l'accelération des blit video, les blits seront tres lents. c'est pour cela qu'il faut tester les flags GFX_HW_VRAM_BLIT et GFX_HW_VRAM_BLIT_MASKED pour etre sur que l'utilisation de ce type de bitmap ne fera pas baisser les performances du programme. Enfin, toute tranformation sur les bitmaps vidéos est à proscrire, car l'accès aux bitmaps de la carte video est tres lent

    ATTENTION: lorsque l'on créer un video bitmap,le pointeur screen n'est plus utilisable. ( Warning: video memory bitmaps are usually allocated from the same space as the screen bitmap, so they may overlap with it; it is therefore not a good idea to use the global screen at the same time as any surfaces returned by this function.)


    création de bitmap "normal"

    on utilise pour cela la fonction :
    BITMAP *create_bitmap(int width, int height);

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    BITMAP *bitmapstandard=create_bitmap(100,200);
    //les deux arguments sont: la taille en X du bitmap à créer la taille en Y du bitmap a créer.La fonction retourne un pointeur vers le bitmap crée en cas de succès sinon elle retourne NULL
    création de bitmap system
    on utilise pour cela la fonction :
    BITMAP *create_system_bitmap(int width, int height);

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    BITMAP *bitmapsystem=create_system_bitmap(100,200);
    //les deux arguments sont: la taille en X du bitmap à créer la taille en Y du bitmap a créer.La fonction retourne un pointeur vers le bitmap crée en cas de succès sinon elle retourne NULL
    création de bitmap video
    on utilise pour cela la fonction :
    BITMAP *create_video_bitmap(int width, int height);

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    BITMAP *bitmapvideo=create_system_bitmap(100,200);
    //les deux arguments sont: la taille en X du bitmap à créer la taille en Y du bitmap à créer.La fonction retourne un pointeur vers le bitmap crée en cas de succès sinon elle retourne NULL


    chargement de bitmap

    ATTENTION: pour charger des images 16 24 32 bit,dans une application ou le nombre de couleur est 256 (8 bit) il generer des palettes.

    le chargement de bitmap se fait avec la fonction :

    BITMAP *load_bitmap(const char *filename, RGB *pal);
    cette fonction créer un bitmap en memoire a partir d'un fichier.
    pour une image 16 24 32 bit l'argument palette doit etre NULL, pour une image 8 bit on doit passer une structure PALETTE pour récupérer la palette de l'image.


    exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    BITMAP *monimage=load_bitmap("image.tga",NULL);
    //on charge une image 16,24,ou 32 bits.
    // cette fonction permet de charger des fichier bmp, pcx, tga et lbm
    tout les bitmap chargé sont des bitmaps "normaux" pour les tranferer dans la memoire video il faut creer soit meme un bitmap video puis blitter le bitmap chargé dans le bitmap video, enfin il faut supprimer le bitmap chargé.



    --------------------------------------------------------------------------
    bon j ai eu un petit peu de mal pour ecrire ca, si quelqu un utilise allegro pour chargé des bitmap != 8 bit en mode 8 bit , pourrait t il ecrire un post sur le chargement des bitmap et l optimisation de palette ?

Discussions similaires

  1. Réponses: 4
    Dernier message: 20/04/2009, 11h31
  2. [Algorithmes] FAQ : les Q/R à intégrer dans la FAQ
    Par Community Management dans le forum Contribuez
    Réponses: 0
    Dernier message: 07/08/2006, 12h39

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo