Frage

Ich möchte einen OpenGL -Kontext mit GLX in einem Fenster erstellen. Ich möchte jedoch nicht, dass es über den gesamten Fensterbereich erstreckt. Stattdessen sollte es nur eine Subregion abdecken.

Zum Beispiel bietet GLUT eine Funktion für dieses Verhalten. Auch wichtige Toolkits wie GTK+ oder QT liefern GL -Widgets, die nur Subregionen von X -Fenstern sind. Ich muss jedoch niedrig arbeiten.

GLXMAKECURENT () akzeptiert eine x -zeichnbare Kennung. Ist es möglich, eine Zeichnung als Subregion eines Fensters zu definieren? Oder gibt es andere Möglichkeiten, den Kontext an einen Fensterbereich zu binden?

GLX -Referenz (Blue Book)

EDIT: Awesome Bounty hinzugefügt!

War es hilfreich?

Lösung 2

Ich fand diese hilfreichen Informationen in einem BSD Manpage:

In fast jeder Hinsicht, die Ihnen wichtig ist, ist ein Unterwindow wie ein Fenster auf der oberen Ebene. Es hat eine Fenster -ID; Es hat seine eigenen Ereignisrückrufe; Sie können dazu rendern; Sie werden über seine Schöpfung informiert; ...

Ein Unterwindow lebt in einem anderen Fenster (möglicherweise ein Fenster auf oberster Ebene, möglicherweise ein weiterer Unterwindow). Aus diesem Grund interagiert es im Allgemeinen nur mit anderen Fenstern Ihrer eigenen Kreation, daher wird es nicht einem Fenstermanager ausgesetzt. Dies ist die Hauptquelle für seine Unterschiede zu einem Fenster auf oberster Ebene:

Ich gehe davon aus, dass GL -Widgets in beliebten Toolkits auch tatsächlich als ein ausgeprägtes (Sub-) Fenster fungieren. Der interessante Teil ist, dass dies für den Fenstermanager und damit für den Benutzer transparent ist.

Andere Tipps

Sie können nur ein x -zeichnbares X -Unterabschnitt davon haben, aber Ihre Lösung ist einfach: Hören Sie auf, über ein X -Fenster nachzudenken, als ob es sich um Ihre Anwendung handelt. Jede X -Anwendung besteht in der Regel aus 10 oder 100 X -Fenstern. Erstellen Sie ein Kinderfenster in dem gewünschten Bereich und zeichnen Sie hinein.

Alternativ können Sie eine Pixmap erstellen, in sie rendern und dann in einen Bereich eines Fensters kopieren, aber das wäre langsamer.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top