2009-12-15 18 views
0

J'utilise la bibliothèque de jeux Allegro pour créer un jeu de cartes. Je veux que les carreaux deviennent exponentiellement plus lumineux. Malheureusement, Allegro n'a pas de fonction "Eclat". Ce que j'ai alors décidé de faire, c'était d'écraser une tuile dans le buffer, puis pour chaque pixel qu'il venait de créer pour cette case, j'ai augmenté leurs valeurs rgb et putpixel. Le gros problème avec ceci est qu'il a considérablement diminué mon framerate puisqu'il fait deux fois plus de travail. Est-il possible que je puisse y parvenir sans avoir un bitmap de tuile pour chaque tuile qui soit légèrement plus brillant (ce qui serait ridicule). MerciModifier la luminosité de l'image bitmap à l'aide de Allegro

Répondre

1

Vous pouvez utiliser:

draw_lit_sprite

ce qu'il fait est de prendre une BITMAP et d'en tirer à l'aide d'un « léger » que vous devez définir avant en utilisant cette fonction:

set_trans_blender

donc en gros, ce que vous avez à faire est:

//Init allegro code here 
    init_allegro_stuff(); 

    //It takes as arguments red, green, blue, alpha 
    //so in this case it's a white light 
    set_trans_blender(255, 255, 255, 255); 

    //Draws the sprite like draw_sprite but with intensity 
    draw_lit_sprite(buffer, yourSprite, x, y, intensity); 

it helps :)

0

Il pourrait être possible avec des palettes: http://alleg.sourceforge.net/stabledocs/en/alleg011.html

Je ne sais pas beaucoup sur Allegro, mais je sais que dans les anciens, les jeux 8 bits fading est habituellement accompli en modifiant la table des couleurs que la lecture de carte vidéo à partir de lors du rendu, donnant ainsi un moyen en temps constant de mettre à jour de nombreux pixels sur l'écran simultanément.

Hope qui aide :)

+0

Merci, j'utilise la couleur unfortunatly vrai 32 bits – jmasterx