如何在 SFML 中屏蔽另一层的指定层?

How mask the specify layer on the other in SFML?

所以基本上我不知道如何在 SFML 中在另一层上绘制一层。我有一层sf::ConvexShape,我知道我想在上面随机画sf::CircleShape,问题是我不能在那层画OLNY。

现在的问题是,如何制作仅在一个或多个(矢量)图层上绘制的蒙版。 我已经尝试从树段的一个角到另一个角制作边框,但它根本不起作用。

for (int i = 0; i < Swiatelka.size(); ++i)
        {
            if (Swiatelka[i].getPosition().x == (info.winWidth/2) - (choinka[1].getLocalBounds().width/2) || Swiatelka[i].getPosition().x == (info.winWidth / 2) + (choinka[1].getLocalBounds().width / 2))
            {
                continue;
            }
            else
            {
                window.draw(Swiatelka[i]);
            }
        }

所以有很多方法可以像你想要的那样屏蔽,我知道的一种方法叫做 "stencil buffer",但我不知道 SFML 是否支持它,而且它可能对你想做的事情有点矫枉过正. (在我看来)。

既然你有每个三角形的坐标,应该很容易在其中随机找到一个点。您可以使用该坐标作为圆心。

您可以根据三角形创建一个矩形,然后从其中随机选取一个坐标。您可以使用此 answer on Whosebug 检查坐标是否确实在三角形内部,否则只是随机 select 一个新坐标,直到它位于。

更改该矩形和 "target" 三角形的大小,将允许您定位您希望圆圈出现在树的哪个区域。

(虽然随机:如果你在画三角形和画圆之间交替,你可以在树的较高部分有圆 "beneath twigs",我不知道它看起来有多漂亮,但它可能是一个有趣的练习)。