我正在开发SDL 2.0中的2D游戏,并且我的照明系统有问题。我想用雾气填满屏幕,并在玩家周围创建一个透明的圆圈(左下角)。我知道如何使用SDL_BLENDMODE_MOD(右下)创建带有浅色灯光的暗室,但我无法制作雾。我已经尝试过使用SDL_SetRenderDrawBlendMode()和SDL_SetTextureBlendMode()我可以想到的每种组合在屏幕上分层的多个纹理。SDL2 - 在纹理上绘制全透明圆圈
我已经搜查,发现解决方案在计算器上一样this,但他们使用SDL表面和预制的光图像。我将会动态地改变我的输入图像的形状和大小(右上角),所以我需要更灵活的东西。
解决方案1:我使用黑色圆圈和海军背景,而不是白色圆圈和黑色背景。然后我使用screen blending来混合这个,并获得我的雾(我已经在图像编辑器中测试了这个以获得左下图像)。不幸的是,SDL没有SDL_BLENDMODE_SCREEN。
解决方案2:创建一个半透明雾层和在其冲压一个完全透明的孔。不幸的是,我不知道如何用透明的洞覆盖纹理。我试图将我的drawing mode设置为SDL_BLENDMODE_NONE并绘制一个完全透明的圆,但它只会创建完全不透明的圆。文档说我可以代替目的地阿尔法,但似乎并没有工作......
如何存放在纹理的Alpha值的图像?我知道如何将RenderCopy()纹理映射到另一个纹理,但我不知道如何访问纹理的Alpha通道。 – DragonDePlatino