2011-01-03 12 views
8

Ich habe ein Programm, das eine Animation mit einer festen Bildrate (sagen wir 30 fps) in einem Fenster anzeigt.Wie schreibe ich direkt in den Anzeigepuffer in GTK/GDK

Derzeit verwende ich SDL, aber leider fehlt es Desktop-Integration (wie Drag & Drop) und jetzt möchte ich stattdessen GTK verwenden.

so, was ich tun möchte (vorausgesetzt, die Fenster doppelt gepuffert):

1 obtain off-screen buffer 
2 render my stuff to buffer 
3 tell the toolkit to swap buffers 
4 update window 
5 repeat 

Ich möchte nicht, außer alle Funktionen verwenden sehr einfach GDK/GTK ruft das Fenster zu erstellen und verwalten und empfangen Eingabe Ereignisse.

In der FAQ schlagen sie vor, GdkRGB zu verwenden. In der offiziellen Dokumentation für GdkRGB verwenden sie jedoch die gdk_draw_rgb_image() Funktion, die veraltet ist, tatsächlich sind die meisten GdkRGB Funktionen.

Als Alternative schlagen sie vor, OpenGL zu verwenden. Das Problem damit ist, dass es einige unübliche Bibliotheken wie GtkGLArea benötigt, die nicht Teil von GTK sind (ich möchte nicht von irgendwelchen Bibliotheken abhängig sein, die nicht standardmäßig installiert sind). Auch auf meinem System ist die OpenGL-Unterstützung des Treibers begrenzt.

Ich habe in Kairo (die als Alternative für einige veraltete Funktionen angeboten wird) geschaut, aber das würde noch mehr Vorabcode hinzufügen (und ich vermute zusätzlichen Overhead) für mein relativ einfaches Problem.

+0

Ich vermute, GTK ohne zusätzliche Bibliotheken ist nicht das richtige Werkzeug für den Job. Es ist ein Toolkit für die Benutzeroberfläche, kein Zeichenwerkzeug. – ptomato

Antwort

4

Ich persönlich würde sagen, dass GdkRGB eine vernünftige Wahl für Sie ist. Es wurde entworfen, um einfach zu sein, und sein Umfang ist ziemlich genau, was Sie beschreiben. Die Verwendung von veraltetem Code ist riskant - es kann eine gute Wahl sein, wenn Sie etwas zum Laufen bringen wollen, aber wenn Sie möchten, dass Ihr Code wächst und in Zukunft gepflegt wird, sollten Sie sich die Alternativen ansehen.

Von denen ist Kairo wahrscheinlich Ihre beste Wette. Es gibt nur ein bisschen mehr Standard - Sie sollten sich die http://cairographics.org/samples/ anschauen, die einige ziemlich kleine und leicht verständliche Beispiele hat. Einer der möglichen Vorteile von Kairo ist, dass es eher Hardware-beschleunigt wird.

[Haftungsausschluss: Ich bin der ursprüngliche Autor von GdkRGB. Es ist traurig, es jetzt veraltet zu sehen, aber ich nehme an, es hat seinen Zweck gut erfüllt]

Verwandte Themen