C++ 使用Allegro更改光点位图的亮度
我正在使用Allegro游戏库制作一个平铺游戏。我希望瓷砖的亮度能达到指数级。不幸的是,Allegro没有“变亮”功能。然后我决定做的是,在缓冲区中添加一个磁贴,然后对于每个刚刚为该磁贴添加的像素,我增加它们的rgb值并添加像素。最大的问题是它严重降低了我的帧速率,因为它做了两倍的工作。是否有任何方法可以实现这一点,而不必为每个稍微亮一点的瓷砖创建一个瓷砖位图(这将是荒谬的)。谢谢使用选项板可能会: 我对Allegro不太了解,但我知道在旧的8位游戏中,褪色通常是通过改变显卡渲染时读取的颜色表来完成的,因此提供了一种恒定的时间方式来同时更新屏幕上的许多像素 希望对您有所帮助:)您可以使用: 它所做的是获取位图并使用“灯光”绘制它,在使用此函数之前必须设置“灯光”: 所以基本上,你要做的是:C++ 使用Allegro更改光点位图的亮度,c++,algorithm,brightness,C++,Algorithm,Brightness,我正在使用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位真彩色真是太不幸了