Mein Versuch: Ich mache eine Textur (kann eine einzelne Farbe oder eine andere sein) und strecke diese Textur dann von einem minimalen 0
bis zu einem maximalen max
Wert. Das funktioniert, macht mich aber aus mehreren Gründen ziemlich unzufrieden, darunter:
- Wenn ich im Verlauf des Balkens abgerundete Ecken haben möchte, werden die Kanten gequetscht oder gedehnt.
Meine Frage: Was ist die beste Vorgehensweise, um ein Fortschrittsbalkenergebnis zu erzielen?
Gedanken: Gibt es eine Möglichkeit, openGL daran zu hindern, ab einem bestimmten x
Wert einer Textur etwas zu zeichnen ? Auf diese Weise konnte ich die Textur so zeichnen, wie sie erscheinen sollte, aber den Wert von angeben x
.
Ich habe diesen potenziell nützlichen Link gefunden.
Aktualisieren
Ich habe den Eindruck, dass die Verwendung des Schablonenpuffers der richtige Weg sein könnte. Mit dem Schablonenpuffer können Sie einen beliebigen Bereich definieren, durch den andere gerenderte Geometrien abgeschnitten werden können. Anscheinend gibt es viele andere Verwendungszwecke für den Schablonenpuffer, z. B. Reflexionen.
Mögliche Lösung
Mit dem Schablonenpuffer in Kombination mit meinem eigenen Shader habe ich letztendlich das erreicht, was ich wollte, da OpenGL ES 2.0 glAplhaTest
und verwandte Funktionen nicht unterstützt . Hier ist ein Bild des Ergebnisses:
Die zum Schablonenpuffer gezeichnete Textur war ein längliches Rechteck mit abgerundeten Ecken. Die in den Bildpuffer gezeichnete Textur war nur ein gestrecktes rotes Rechteck, das, wie Sie sehen können, am Schabloneninhalt abgeschnitten ist. Sie müssen Ihren eigenen Shader schreiben, um mit dem Alpha-Kanal fertig zu werden, da OpenGL ES 2.0 die glAplhaTest
und verwandte Funktionen nicht unterstützt .
Hinweis - Vielleicht ist dies nicht das beste Bildbeispiel. Tatsächlich können Sie mit der vorgestellten Lösung die linken und rechten Kappen schrittweise anzeigen, was ich im obigen Bild leider nicht demonstriert habe.