Несколько месяцев назад я создал программу преобразования Фурье с использованием SFML 2.0. Я использовал уровень сглаживания 8, и он выглядел прекрасно. Однако совсем недавно (не совсем уверенный, когда возникла проблема, поскольку я давно ее не трогал), она, кажется, сломалась.
Всякий раз, когда я рисую линию, она выглядит пунктирной, и всякий раз, когда что-то движется, она мигает междудва состояния, и он не полностью очищается после вызова window.clear()
. Однако это не просто программа. Каждый раз, когда я использую любой уровень сглаживания больше 0, даже в SFML 2.5.1, возникает такая же проблема.
Вот пример кода, который не работает так, как должен работать на моем компьютере:
#include <SFML/Graphics.hpp>
int main()
{
sf::Vertex line[2] =
{
sf::Vertex(sf::Vector2f(0, 0)),
sf::Vertex(sf::Vector2f(800, 0))
};
sf::ContextSettings settings;
settings.antialiasingLevel = 8.0;
sf::RenderWindow window(sf::VideoMode(800, 600), "Test", sf::Style::Close, settings);
window.setVerticalSyncEnabled(true);
while (window.isOpen())
{
sf::Event event;
while (window.pollEvent(event))
{
if (event.type == sf::Event::Closed)
window.close();
}
line[1].position.y += 1.0;
window.clear();
window.draw(line, 2, sf::Lines);
window.display();
}
return 0;
}
Когда линия завершает очистку, она выглядит следующим образом
Поскольку раньше это не было проблемой, я не думаю, что это ошибка SFML. Я использую Windows 10, а мой компьютер использует встроенную графическую карту Intel UHD Graphics 620, которые не изменились с тех пор, как проблема начала возникать. Кроме того, я не заметил никаких других программ на моем компьютере, кроме тех, которые я сделал.