Registriert: Do Sep 02, 2004 19:42 Beiträge: 4158
Programmiersprache: FreePascal, C++
Hi @ll
Zunächst einmal: Ist es sinnvoll, den aktuellen Zeichenbereich mit glViewport einzuschränken, z.B. um in einer GUI das "überzeichnen" des Randes eines Elementes durch Unterelemente zu vermeiden?
Genau das habe ich versucht und ich beiße mir schon seit längerem die Zähne aus. Hier mein Code:
Diff ist ein TPoint, der die verschiebung relativ zu der oberen linken Koordinate beinhaltet.
FClientMargins ist eine Klasse, die die Beschränkungen für den Zeichenbereich eines Elementes beinhaltet, relativ zu dessen Rändern. (WidthMargin ist dann Left und RightBorder addiert, HeightMargin entsprechend TopBorder + BottomBorder)
Mein Problem ist jetzt, dass aus irgendwelchen Gründen das Unterelement einige Pixel zu weit oben gezeichnet wird und somit unsichtbar ist. Wenn ich glViewport rausnehme und statt dessen nur auf die entsprechenden Koordinaten transformiere, wird das Element richtig gezeichnet, allerdings viel zu groß, es verlässt das Elternelement um Längen => sieht nicht gut aus.
Eine andere Idee wäre gewesen, ClipPlanes zu verwenden. Dies schied aber aus, da einige GUI-Elemente in sich 3D-Darstellung haben werden, z.B. Gebäudevorschau, weshalb ich da die Koordinaten relativ zu dem Elementrand brauche.
Die Breite scheint komplett richtig berechnet zu werden, da habe ich keine Probleme. Aber mit der Höhe bzw. den Y-Koordinaten gibt es irgendwie größere Probleme.
Anbei ein Screenshot, wie es aussieht.
Gruß Lord Horazont
//Edit: Übertreibe ich mit meinen Fragen?
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
_________________ If you find any deadlinks, please send me a notification – Wenn du tote Links findest, sende mir eine Benachrichtigung. current projects: ManiacLab; aioxmpp zombofant network • my photostream „Writing code is like writing poetry“ - source unknown
„Give a man a fish, and you feed him for a day. Teach a man to fish and you feed him for a lifetime. “ ~ A Chinese Proverb
Registriert: Do Dez 05, 2002 10:35 Beiträge: 4234 Wohnort: Dortmund
Lord Horazont hat geschrieben:
Zunächst einmal: Ist es sinnvoll, den aktuellen Zeichenbereich mit glViewport einzuschränken, z.B. um in einer GUI das "überzeichnen" des Randes eines Elementes durch Unterelemente zu vermeiden?
Um den Zeichenbereich einzuschränken gibt es glScissor. Ich denke das sollte besser für dich geeignet sein als den ViewPort zu ändern.
PS: Wenn du nicht fragen würdest wüsstest du auch nicht, dass es viel einfacher geht.
Registriert: Do Sep 02, 2004 19:42 Beiträge: 4158
Programmiersprache: FreePascal, C++
Au! Ja. Dabei hatte ich den Artikel erst vor kurzem gelesen *mit Hand an die Stirn hau*
Gruß Lord Horazont
_________________ If you find any deadlinks, please send me a notification – Wenn du tote Links findest, sende mir eine Benachrichtigung. current projects: ManiacLab; aioxmpp zombofant network • my photostream „Writing code is like writing poetry“ - source unknown
„Give a man a fish, and you feed him for a day. Teach a man to fish and you feed him for a lifetime. “ ~ A Chinese Proverb
Mitglieder in diesem Forum: 0 Mitglieder und 5 Gäste
Du darfst keine neuen Themen in diesem Forum erstellen. Du darfst keine Antworten zu Themen in diesem Forum erstellen. Du darfst deine Beiträge in diesem Forum nicht ändern. Du darfst deine Beiträge in diesem Forum nicht löschen. Du darfst keine Dateianhänge in diesem Forum erstellen.