小编Dra*_*ino的帖子

SDL2 - 在纹理上绘制完全透明的圆圈

我正在使用 SDL 2.0 开发 2D 游戏,但我的照明系统出现问题。我想用雾填充屏幕并在玩家周围创建一个透明圆圈(左下)。我知道如何使用 SDL_BLENDMODE_MOD(右下)制作一个带有彩色灯光的暗室,但我无法制作雾气。我尝试使用我能想到的 SDL_SetRenderDrawBlendMode() 和 SDL_SetTextureBlendMode() 的每种组合在屏幕上分层多个纹理。

图片

我已经搜查,在计算器上像发现解决这个,但他们使用SDL表面和预先制作的光图像。我将动态更改输入图像(右上角)的形状和大小,因此我需要更灵活的东西。

解决方案 1:我使用黑色圆圈和海军背景,而不是白色圆圈和黑色背景。然后我使用屏幕混合混合它并得到我的雾(我已经在图像编辑器中测试过这个以获得左下角的图像)。不幸的是,SDL 没有 SDL_BLENDMODE_SCREEN。

解决方案2:创建一个半透明的雾层并在其中打一个全透明的孔。不幸的是,我不知道如何用透明孔覆盖纹理。我尝试将我的绘图模式设置为 SDL_BLENDMODE_NONE 并绘制一个完全透明的圆圈,但它只能创建完全不透明的圆圈。文档说我可以替换目标 alpha 但这似乎不起作用......

c++ alphablending lighting sdl-2

5
推荐指数
1
解决办法
1597
查看次数

标签 统计

alphablending ×1

c++ ×1

lighting ×1

sdl-2 ×1