2009-07-30 3 views
0

I & implementieren ein einfaches Windowing & Widget für OpenGL laufen oben auf SDL, ähnlich wie Agar oder GiGi gestalten will, nur viel näher gebunden zu SDL & OpenGL.Design-Frage für eine SDL OpenGL Window & Widget-Bibliothek

Mein generelles Problem ist das: Was ist das beste Design für ein Windowing-System innerhalb ein OpenGL-Kontext?

Ich möchte Windows nur für Steuerelemente und, wenn überhaupt möglich, Windows-Threads mit ihren eigenen OpenGL-Kontexten haben. Die einzige Möglichkeit, die ich mir vorstellen kann, ist das Rendern von Texturen und das Hinzufügen von Fensterdekorationen um diese ...

Ich möchte die Funktionsweise anderen Programmierern zugänglich machen, aber welche wäre die beste? Ich bin eher ein C++ - Programmierer und so war die Vererbung der erste Weg, an den ich dachte. Mache grundlegende Klassen, die ich in einer freigegebenen Header-Datei verfügbar mache, leitet der Programmierer dann sein eigenes Fensterobjekt ab und überschreibt dabei die Methoden Init() oder Run(), um das zu implementieren, was sie brauchen. Das Problem bei diesem Ansatz wäre, die Programmierer im Zaum zu halten, es gäbe keinen wirklichen Weg, sie davon abzuhalten, einfach auf dem OpenGL-Bildschirm zu zeichnen, wo immer sie wollen.

Ein anderer möglicher Weg wäre Funktoren, die Funktoren übergeben, die der Programmierer in die Bibliothek verwenden will, die sie dann aufruft, wenn sie ihre GUI-Komponenten fertiggestellt hat und was nicht.

Was ist der beste Weg, um dies zu erreichen?

Antwort

0

Fenster mit ihren eigenen OpenGL-Kontexte

Das SDL erfordern geht Hacking, da es pro Prozess einen Kontext liefert nur. Es sei denn, Sie denken daran, einen einzigen GL-Kontext mit mehreren unabhängigen Unteransichtsfenstern zu erstellen, die nacheinander gerendert werden.

+0

Das ist ein sehr guter Punkt, das Durcheinander mit SDL selbst war nicht wirklich das, was ich im Sinn hatte. Ansichtsfenster funktionieren, außer bei der Übertragung der Zeichnung außerhalb der Bibliothek. Ich dachte mehr daran, Frame Buffer Objects für die Rendering-Oberfläche der Benutzer zu verwenden und dann einfach ein Quad für das Fenster mit einigen Dekorationen zu strukturieren. –