Ich programmiere meine eigene 2D-GUI-Bibliothek mit OpenGL und ich bin bei dem Schritt, wo ich ein Container-Steuerelement, Grafikelemente (wie abgerundetes Rechteck oder Stern) und andere Kind enthalten kann controls ... etc ... Ich versuche, das Rendering der untergeordneten Steuerelemente und Grafikelemente in das übergeordnete Steuerelement zu schneiden. Wenn also ein untergeordnetes Steuerelement die Grenzen des Containers überschreitet, wird es nicht gerendert.OpenGL 2D nicht rechteckigen Bereich Clipping
Meine erste Idee war es, den "Scheren-Test" zu verwenden, nachdem ich ihn im Internet gefunden hatte. Aber das Problem ist, dass ich auf einen rechteckigen Ausschnitt beschränkt bin und ich in der Lage sein möchte, den Inhalt in einer beliebigen Region wie eine sternpolygonale Form zu schneiden.
Ich habe eine Idee ...
Wenn es der Moment, ein Steuer- und seine grafischen Elemente zu zeichnen, ich sehe, wenn meine Kontrolle muss seinen Inhalt Clip oder nicht. Wenn ja, zeichne ich es mit einer einheitlichen weißen Farbe auf einem schwarzen Hintergrund in einer Offscreen-Textur. Dann sende ich es an ein Shader-Programm. So rende ich jedes Kind (Steuerelemente und Grafikelemente) mit meinem Shader aktiviert. In diesem Fragment-Shader, für jedes Fragment, denke ich, die gleiche Koordinate in der speziellen Textur zu betrachten, die früher passiert ist. Wenn das Fragment in der speziellen Textur weiß ist, kann ich dieses Fragment rendern, weil es sich im sichtbaren Bereich befindet.
Glaubst du, dass es funktionieren kann? Ist es eine gute Idee oder gibt es eine bessere?
Hallo und vielen Dank für Ihre Antwort. Ich habe diese Schablone weiter gelesen und gesehen. Ich habe nie damit gearbeitet, aber ich denke, es wird einfacher zu implementieren als eine Shader-Lösung. – user1768815