SFML Anti-Aliasing - линии выглядят пунктирными, а движущиеся объекты - размытыми - PullRequest
0 голосов
/ 03 ноября 2019

Несколько месяцев назад я создал программу преобразования Фурье с использованием 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, которые не изменились с тех пор, как проблема начала возникать. Кроме того, я не заметил никаких других программ на моем компьютере, кроме тех, которые я сделал.

...