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

问题描述 投票:0回答:1

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

Tree image

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

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]);
            }
        }
c++ sfml mask
1个回答
0
投票

因此,有多种方法可以根据需要进行屏蔽,我知道的一种方法称为“模板缓冲区”,但我不知道SFML是否支持它,这对于您想做的事可能会过大。 (我认为)。

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

您可以使用三角形的基础并从中创建一个矩形,然后从其内部随机选择一个坐标。您可以使用此answer on stackoverflow检查坐标是否实际上在三角形内,否则只需随机选择一个新坐标即可。

更改矩形和“目标”三角形的大小,将可以确定希望圆出现在树的哪个区域。

(但是,如果您在绘制三角形和绘制圆之间交替,则可以在树的较高部分的“细枝下”使用圆,我不知道它看起来会多么漂亮,但这可能很有趣行使)。

© www.soinside.com 2019 - 2024. All rights reserved.