Вот ситуация:
У меня есть 4 окна SFML, которые находятся внутри контейнера, который я построил. Контейнер вызывает независимые методы перерисовки для каждого окна, начиная с первого и заканчивая последним.
Если код рисования каждого окна содержит линии drawMyCube()
ИЛИ ЖЕ glClear(...)
, то частота кадров становится медленной.
drawMyCube()
просто рисует куб, который вращается в зависимости от значения объекта sf :: Clock.
Если одно окно вызывает (любую из) этих функций, частота кадров составляет ~ 60 кадров в секунду.
Если два окна вызывают (любую из) этих функций, частота кадров составляет ~ 30 кадров в секунду.
Если три окна вызывают (любую из) эти функции, частота кадров составляет ~ 20 кадров в секунду.
Наконец, если все четыре вызывают (любую из) этих функций, частота кадров составляет ~ 15 кадров в секунду.
Это похоже на появление шаблона, поэтому я попытался удалить функции из 3 окон и вызвать их 10 раз из одного окна. Я ожидал, что частота кадров будет ~ 6 кадров в секунду, но она осталась на уровне 60.
Кто-нибудь знает, почему это происходит? Кажется, не будет никакого эффекта, если я удалю любые другие функции из методов рисования окна, например, gluLookAt()
не замедляет
РЕДАКТИРОВАТЬ: ограничение частоты кадров установлено на ноль, а vsync имеет значение false.
Это звучит так же, как вертикальная синхронизация. Каждое из ваших окон ожидает обновления по вертикали, поэтому ваша ставка уменьшается вдвое.
Я знаю, что вы сказали, что vsync выключен, но, возможно, ваш драйвер видео заставляет его. Проверьте настройки вашего драйвера.
Других решений пока нет …