c++ - 如何在 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]);
}
}
解决方案
所以有一些方法可以像你想要的那样进行屏蔽,我知道的一种方法称为“模板缓冲区”,但我不知道 SFML 是否支持它,而且对于你想要做的事情来说,它可能有点矫枉过正。(在我看来)。
由于您拥有每个三角形的坐标,因此应该很容易在其中随机找到一个点。您可以将该坐标用作圆心。
您可以以三角形为基础并从中创建一个矩形,然后从其中随机选择一个坐标。您可以在stackoverflow上使用此答案来检查坐标是否实际上在三角形内,否则只需随机选择一个新坐标,直到它在。
更改该矩形和“目标”三角形的大小,将允许您定位您希望圆圈出现在树的哪个区域。
(虽然随机:如果你在画三角形和画圆圈之间交替,你可以在树的较高部分的“树枝下面”画圆圈,我不知道它看起来有多漂亮,但这可能是一个有趣的练习) .
推荐阅读
- linux - AWK 打印子网 0.69.100.in-abc.def
- r - R:有效地将多个数据集组合在一起
- c# - 根据来自多个 TextBoxes MVVM 的值过滤 WPF DataGrid (DataTable)
- visual-studio - GlobalSection ExtensibilityGlobals 在 .sln 文件中重复
- php - 加入两个数组
- java - 从 PDF 缩放 PDDocument
- .net-core - 在 Azure Pipelines 构建中命名生成的 ZIP 存档?
- python - 导入的变量更新未反映在父模块中
- oracle - oracle SQL开发人员无法通过另一个表创建表
- jinja2 - Apache气流 - 无法模板化从baseOperator继承的队列名称