Почему SDL такой медленный и как заставить его работать быстрее?

У меня следующая тестовая установка:

  • Поверхность экрана 1024 * 768, созданная с помощью SDL_HWSURFACE
  • Основной цикл состоит только из SDL_Flip () и простого счетчика FPS.

Проблема в:

С этим я получаю только около 1000 FPS. Что действительно мало, если учесть, что вы даже ничего не рисуете!

FPS падает очень быстро, когда я продолжаю копировать довольно большие поверхности на экране.

Что я хотел сделать:

Пиксельные эффекты / физическая разрушаемая местность / игра с объектами.

  • Почему SDL такой медленный? (Я три дня играл с небольшим тестовым примером и устранил все возможные ошибки, которые мог допустить, поэтому я совершенно уверен, что на самом деле это ошибка SDL)

  • Есть ли какие-нибудь секреты, чтобы заставить его работать быстрее?

  • Существуют ли другие 2D-API, обеспечивающие простой и довольно быстрый однопиксельный доступ?


person Alex    schedule 07.10.2010    source источник
comment
FPS - это нелинейный показатель производительности. Попробуйте вместо этого (милли) секунд на кадр.   -  person genpfault    schedule 08.10.2010


Ответы (2)


Доступ к пикселям очень медленный на аппаратных поверхностях (это ограничение оборудования, а не ограничение SDL).

Вы можете попробовать SFML с ускоренным OpenGL.

person Victor Marzo    schedule 15.10.2010

Обратите внимание, что вызов SDL_HWSURFACE не всегда приводит к использованию оборудования в зависимости от вашей графической карты.

person Giann    schedule 25.10.2010