Я открыл проблему на SFML github и обнаружил, что это было вызвано активацией и деактивацией контекста, поэтому в данном случае вместо:
sf::Window window(sf::VideoMode(200, 200), "SFML");
должно быть
sf::Context some_context;
.
Ссылка на исходный выпуск: https://github.com/SFML/SFML/issues/1672
Полный ответ:
«Когда sf::RenderTexture
завершает рисование, он пытается восстановить состояние, которое было до вызова рисования. Поскольку это было состояние «без контекста», он будет многократно активировать и деактивировать контекст на каждой итерации. Это стандартное поведение для любого ресурса OpenGL, который может жить сам по себе, не обязательно имея окно.
Если вы хотите сделать что-нибудь, связанное с рендерингом, рекомендуется всегда иметь под рукой какую-то вещь, владеющую контекстом. Если вы не хотите sf::Window
, тогда потребуется sf::Context
.
Из-за природы OpenGL вы никогда не обойдете ограничение наличия какого-либо окна (видимого или нет), которое само владеет контекст. T именно так разработчики API разработали его 25 лет назад go. "