Вы можете получить этот эффект с sf::Blend::Mode
.См. Этот пример:
#include <SFML/Graphics.hpp>
int main()
{
sf::RenderWindow window(sf::VideoMode(400, 400), "Blend::Mode Sample");
sf::Shape square = sf::Shape::Rectangle(100, 100, 200, 200, sf::Color(250, 30, 30));
sf::Shape circle1 = sf::Shape::Circle(100, 100, 50, sf::Color(30, 30, 250));
sf::Shape circle2 = sf::Shape::Circle(300, 100, 50, sf::Color(30, 30, 250));
sf::Shape circle3 = sf::Shape::Circle(100, 300, 50, sf::Color(30, 30, 250));
sf::Shape circle4 = sf::Shape::Circle(300, 300, 50, sf::Color(30, 30, 250));
circle1.SetBlendMode(sf::Blend::Alpha);
circle2.SetBlendMode(sf::Blend::Add);
circle3.SetBlendMode(sf::Blend::Multiply);
circle4.SetBlendMode(sf::Blend::None);
while (window.IsOpened())
{
sf::Event event;
while (window.PollEvent(event))
if (event.Type == sf::Event::Closed)
window.Close();
window.Clear();
window.Draw(square);
window.Draw(circle1);
window.Draw(circle2);
window.Draw(circle3);
window.Draw(circle4);
window.Display();
}
}
Вывод:
Я думаю, что эффект, который вы хотите, будет SetBlendMode(sf::Blend::Add)
.