Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/138.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 使用Allegro更改光点位图的亮度_C++_Algorithm_Brightness - Fatal编程技术网

C++ 使用Allegro更改光点位图的亮度

C++ 使用Allegro更改光点位图的亮度,c++,algorithm,brightness,C++,Algorithm,Brightness,我正在使用Allegro游戏库制作一个平铺游戏。我希望瓷砖的亮度能达到指数级。不幸的是,Allegro没有“变亮”功能。然后我决定做的是,在缓冲区中添加一个磁贴,然后对于每个刚刚为该磁贴添加的像素,我增加它们的rgb值并添加像素。最大的问题是它严重降低了我的帧速率,因为它做了两倍的工作。是否有任何方法可以实现这一点,而不必为每个稍微亮一点的瓷砖创建一个瓷砖位图(这将是荒谬的)。谢谢使用选项板可能会: 我对Allegro不太了解,但我知道在旧的8位游戏中,褪色通常是通过改变显卡渲染时读取的颜色表来

我正在使用Allegro游戏库制作一个平铺游戏。我希望瓷砖的亮度能达到指数级。不幸的是,Allegro没有“变亮”功能。然后我决定做的是,在缓冲区中添加一个磁贴,然后对于每个刚刚为该磁贴添加的像素,我增加它们的rgb值并添加像素。最大的问题是它严重降低了我的帧速率,因为它做了两倍的工作。是否有任何方法可以实现这一点,而不必为每个稍微亮一点的瓷砖创建一个瓷砖位图(这将是荒谬的)。谢谢

使用选项板可能会:

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

希望对您有所帮助:)

您可以使用:

它所做的是获取位图并使用“灯光”绘制它,在使用此函数之前必须设置“灯光”:

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

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

希望有帮助:)

谢谢,我使用32位真彩色真是太不幸了