Monogame|XNA 在特定位置绘制带有透明圆圈的黑屏

Monogame|XNA Draw a black screen with a transparent circle at a specific location

我尝试了一段时间来创建一个游戏。 但在一开始,我被困住了。 我只想画一个黑色的屏幕,上面覆盖着一个透明的圆圈。 我在很多法语网站上搜索了解决方案,但没有任何回应

我给你画了两张图,让你看看我想要什么。

** 感谢您抽出时间阅读,感谢您的帮助**

你(物理上)不能有一个带有四处移动的透明孔的 PNG。

我的意思是,你自己试试看。拿一张纸,在纸上剪出一个洞。虽然你可以做到这一点,但你不能四处移动洞。你需要一张新纸。

您需要为此使用着色器,它将屏幕上的所有内容渲染为黑色,玩家位置处的圆圈除外。非常基本的 post-处理着色器。

伪代码(在C#中,需要翻译成HLSL):

foreach (var pixel in allPixels)
{
    bool drawAsBlack = pixel.Position.DistanceFrom(player.PositionCenter) > RANGE_RADIUS;
    if (drawAsBlack)
        return Color.Black;
    else
        return pixel.Color;
}

类似的东西,显然翻译成 HLSL,但你明白了。