У меня есть программа, которая отображает анимацию с фиксированной частотой кадров (скажем, 30 кадров в секунду) в окне.
В настоящее время я использую SDL, но, к сожалению, ему не хватает интеграции с рабочим столом (например, перетаскивание), и теперь я хочу использовать вместо него GTK.
Итак, что я хочу сделать (при условии, что окно имеет двойную буферизацию):
1 obtain off-screen buffer
2 render my stuff to buffer
3 tell the toolkit to swap buffers
4 update window
5 repeat
Я не хочу использовать какие-либо функции, кроме очень простых вызовов GDK/GTK для создания и управления окном и получения входных событий.
В FAQ предлагается использовать GdkRGB. Однако в официальной документации для GdkRGB используется функция gdk_draw_rgb_image()
, которая устарела, как и большинство функций GdkRGB.
В качестве альтернативы они предлагают использовать OpenGL. Проблема в том, что для этого требуется какая-то необычная библиотека, такая как GtkGLArea, которая не является частью GTK (я не хочу зависеть от каких-либо библиотек, которые не установлены по умолчанию). Кроме того, в моей системе драйвер OpenGL... ограничен.
Я изучил Cairo (который предлагается в качестве альтернативы некоторым устаревшим функциям), но это добавило бы еще больше стандартного кода (и я подозреваю дополнительные накладные расходы) для моей относительно простой проблемы.