【问题标题】:Change brightness of blitted bitmap using Allegro使用 Allegro 更改位图的亮度
【发布时间】:2009-12-15 03:31:02
【问题描述】:

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

【问题讨论】:

    标签: c++ algorithm brightness


    【解决方案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); 
    

    希望对你有帮助:)

    【讨论】:

      【解决方案2】:

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

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

      希望有帮助:)

      【讨论】:

      • 谢谢,可惜我用的是32位真彩色
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-10
      • 1970-01-01
      • 2014-07-04
      • 1970-01-01
      相关资源
      最近更新 更多