Frage

Ich habe ein Netzwerk von Polylinien, und ich möchte alle Teile der Linien angezeigt werden, die in einer bestimmten X-Y-Box sind. Ich bin Rendering derzeit die Linien in OpenGL eine GL_LINE_STRIP verwenden und es funktioniert gut. Wenn jedoch die Grenze der X-Y-Box durch eine der Linien kreuzt (zwischen den Scheitelpunkten), gibt es eine gute Möglichkeit, nur den Teil der Zeile anzuzeigen, die in der Box ist?

Danke,

Jeff

War es hilfreich?

Lösung

Wenn Ihre Box nur eine gewöhnliche zweidimensional ist, Achse alined Rechteck Sie die glScissor Funktion verwenden können. Auf den Punkt gebracht definiert es ein 2D-Rechteck in Bildschirm-Koordinaten, wo alle Zeichnung stattfindet.

Wenn Sie Fall komplizierter ist (zum Beispiel können Sie ein Rechteck haben auf einer Ebene in einer 3D-Szene oder so ..) Sie zuerst Ihr Rechteck in die Schablonenpuffer zeichnen können und Schablonentest für das Line-Rendering ermöglichen. Dieser Ansatz gibt Ihnen unbegrenzte Flexibilität über die Form, die die Zeichnung beschränkt, sondern es während des Renderings und mehr Anstrengungen zur Einrichtung etwas langsamer sein kann, dauert.

Andere Tipps

ich glaube, Nils Pipenbrinck gab dir die besten zwei Optionen, aber ich werde einen anderen nur der Vollständigkeit halber werfen: Clip-Ebenen ( glClipPlane () )

.

Das heißt, ich denke, glScissor () ist die einfachste Lösung, wenn es immer Fenster ausgerichtet werden.

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