我正在使用Allegro 5编写游戏,目前正在研究我的绘图算法。经过计算,我得到两个ALLEGRO_BITMAP*
-对象,其中一个是我的“场景”,其上绘制地形,另一个是阴影图。有没有办法在Allegro中部分色调位图?
场景只是在位图上绘制的游戏元素的纹理。 阴影贴图是一种位图,对于先前呈现的阴影使用浅色和白色的黑色。
为了在屏幕上绘制这些位图,我使用al_draw_scaled_bitmap(...)
和al_set_blender(ALLEGRO_DEST_MINUS_SRC, ALLEGRO_ONE, ALLEGRO_ONE)
来减去场景中阴影贴图的白色元素以使它们可见。
我遇到的问题是,我希望阴影贴图上的所有像素都被着色为世界颜色,这已经在以前的每一帧中计算过了,并且所有黑色元素都不会被修改(灰色意味着部分着色)。
对于rgb中的红色,绿色和蓝色通道,最终颜色可以像p.r * c.r + 1 - p.r
和p = the pixel-color on the scene
和c = the world-color
那样计算。
有没有办法在Allegro 5(可能没有大量透支)中实现部分着色效果?
我想过使用着色器,但我还没有找到解决方案来实现这些与我的ALLEGRO_BITMAP*
对象。
你可以将你的位图分成子位图,但我认为这不是你想要的。你能包括一些照片吗?两个将工作,你现在拥有什么,你想拥有什么。 – rlam12