0

我正在使用 Allegro 游戏库制作瓷砖游戏。我希望瓷砖变得更亮。不幸的是,Allegro 没有“增亮”功能。然后我决定做的是,将一个平铺块传输到缓冲区,然后对于它刚刚为该平铺块传输的每个像素,我增加了它们的 rgb 值和 putpixel。最大的问题是它严重降低了我的帧率,因为它做了两倍的工作。有什么方法可以实现这一点,而无需为每个稍微亮一点的图块(这将是荒谬的)都有一个图块位图。谢谢

4

2 回答 2

1

您可以使用:

draw_lit_sprite

它的作用是获取一个 BITMAP 并使用您必须使用此函数之前设置的“光”来绘制它:

set_trans_blender

所以基本上,你要做的是:

    //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); 

希望能帮助到你 :)

于 2009-12-22T02:20:04.090 回答
0

调色板可能是可能的:http: //alleg.sourceforge.net/stabledocs/en/alleg011.html

我对 Allegro 了解不多,但我知道在旧的 8 位游戏中,褪色通常是通过更改渲染时显卡读取的颜色表来完成的,因此提供了一种恒定时间的方式来更新许多同时在屏幕上显示像素。

希望有帮助:)

于 2009-12-15T03:37:08.990 回答