2011-01-03 3 views
8

У меня есть программа, которая отображает анимацию с фиксированной частотой кадров (скажем, 30 кадров в секунду) в окне.Как напрямую писать в буфер отображения в GTK/GDK

В настоящее время я использую 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 

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

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

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

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

+0

Я подозреваю, что GTK без каких-либо вспомогательных библиотек не является подходящим инструментом для работы. Это инструментарий пользовательского интерфейса, а не набор инструментов для рисования. – ptomato

ответ

4

Я лично сказал бы, что GdkRGB - разумный выбор для вас. Он был спроектирован так, чтобы быть простым, и его охват в значительной степени соответствует тому, что вы описываете. Использование устаревшего кода - chancy - это может быть прекрасный выбор, если вы хотите получить что-то работающее сейчас, но если вы хотите, чтобы ваш код развивался и поддерживался в будущем, вы должны посмотреть на альтернативы.

Из них Каир, вероятно, лучший выбор. Там только немного больше шаблонов - вы должны посмотреть на http://cairographics.org/samples/, который имеет некоторые довольно маленькие и легко понятные примеры. Одним из потенциальных преимуществ Каира является то, что с большей вероятностью аппаратное ускорение.

[отказ от ответственности: Я являюсь оригинальным автором GdkRGB. Грустно видеть, что он устарел сейчас, но я полагаю, что он хорошо служил своей цели]