Как напрямую писать в буфер дисплея в GTK / GDK

У меня есть программа, которая отображает анимацию с фиксированной частотой кадров (скажем, 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

I не хочу использовать какие-либо функции, кроме очень простых вызовов GDK / GTK для создания и управления окном и получения событий ввода.

В FAQ они предлагают использовать GdkRGB. Однако в официальной документации для GdkRGB они используют функцию gdk_draw_rgb_image () , которая устарела, как и большинство функций GdkRGB.

В качестве альтернативы они предлагают использовать OpenGL. Проблема в том, что для этого требуется какая-то необычная библиотека, такая как GtkGLArea, которая не является частью GTK (я не хочу зависеть от каких-либо библиотек, которые не установлены по умолчанию). Кроме того, в моей системе поддержка OpenGL драйвера ... ограничена.

Я изучал Cairo (который предлагается в качестве альтернативы для некоторых устаревших функций), но это добавило бы еще больше шаблонного кода (и я подозреваю, что дополнительные накладные расходы) для моей относительно простой проблемы.

8
задан maep 3 January 2011 в 19:40
поделиться