Замедление OpenGL при полноэкранном режиме на MacOS X с использованием SDL? - PullRequest
0 голосов
/ 13 июля 2011

Я использовал последнюю версию SDL 1.3 с OpenGL для разработки игры, которая сейчас находится в стадии бета-тестирования.Некоторые пользователи сообщают о значительном замедлении в полноэкранном режиме (около 18 кадров в секунду), что позволяет легко работать со скоростью 200-300 кадров в секунду в оконном режиме.Эти же пользователи обычно могут «решить» проблему, переключаясь между оконным и полноэкранным режимами один или два раза.Затем он работает на полной скорости даже для полноэкранного режима.

Я не могу скопировать его ни в одной из систем, на которых я тестирую.А три пользователя, испытывающие замедление, работают на разных системах (все это системы Intel Dual Core 2) с разными видеокартами, поэтому я сомневаюсь, что это проблема с драйверами.

Что обнадеживает, так эточто проблема демонстрируется даже в самой минимальной демонстрации testgl2 SDL, которая поставляется с SDL.Если вы просто измените демо-версию для запуска в полноэкранном режиме, она будет демонстрировать такое же замедление в полноэкранном режиме, пока она запускается в одной из «затронутых» систем.Мне любопытно, если у кого-нибудь здесь есть системы MacOS X, которые дублируют проблему.Чтобы увидеть, просто загрузите последнюю версию SDL 1.3:

http://www.libsdl.org/tmp/SDL-1.3.zip

и создайте инфраструктуру SDL, а затем SDL Test, скомпилировав демонстрацию gltest2.Откройте gltest2.c и вставьте:

SDL_SetWindowFullscreen (state-> windows [0], true);

прямо перед / * основным циклом рендеринга * /

Если выМОЖЕТ продублировать проблему в вашей системе [т.е. она работает со скоростью 60 кадров в секунду в полноэкранном режиме - проверьте выход консоли на частоту кадров при выходе), пожалуйста, напишите здесь.Особенно, если вы думаете, что у вас могут быть идеи, как это исправить!Я пытался исправить это в течение нескольких недель, и бездельничал в интернете.

1 Ответ

2 голосов
/ 17 июля 2011

Это оказалось ошибкой в ​​SDL 1.3 (создание текущего полноэкранного контекста OpenGL снова было медленным, поэтому теперь SDL кэширует текущий контекст, чтобы сделать SDL_GL_MakeCurrent () недоступной).Теперь это исправлено, между наборами изменений 2a152e7e82f2 и 7ed38a8ad304.

...