Zeichnen im GUI
Diese Seite setzt voraus, dass du einen Blick auf die Seite Grundlegende Rendering-Konzepte geworfen hast.
Die Klasse GuiGraphicsExtractor ist die Hauptklasse, die für das Rendering im Spiel verwendet wird. Sie wird für das Rendern von Formen, Text und Texturen verwendet und, wie zuvor gesehen, für die Bearbeitung von PoseStacks und die Verwendung von BufferBuildern.
Formen zeichnen
Die Klasse GuiGraphicsExtractor kann verwendet werden, um auf einfache Weise quadratische Formen zu zeichnen. Wenn du Dreiecke oder andere nicht-quadratische Formen zeichnen willst, musst du einen BufferBuilder verwenden.
Zeichnen von Dreiecken
Du kannst die Methode GuiGraphicsExtractor.fill(...) verwenden, um ein gefülltes Rechteck zu zeichnen.
java
No lines matched.1

Zeichnen von Umrissen/Rahmen
Nehmen wir an, wir wollen das Rechteck, das wir gerade gezeichnet haben, umranden. Wir können die Methode GuiGraphicsExtractor.GuiGraphicsExtractor(...) verwenden, um die Umrandung zu zeichnen.
java
No lines matched.1

Zeichnen von individuellen Linien
Wir können die Methoden GuiGraphicsExtractor.horizontalLine(...) und GuiGraphicsExtractor.verticalLine(...) verwenden, um Linien zu zeichnen.
java
No lines matched.1

Der Scheren-Manager
Die Klasse GuiGraphicsExtractor hat einen eingebauten Scheren-Manager. So kannst du dein Rendering ganz einfach auf einen bestimmten Bereich beschränken. Dies ist nützlich, um Dinge wie Tooltips oder anderen Elemente, die nicht außerhalb eines bestimmten Bereichs gerendert werden sollen, zu rendern.
Den Scheren-Manager verwenden
TIP
Scheren-Regionen können verschachtelt werden! Stelle sicher, dass du den Scheren-Manager genauso oft deaktivierst, wie du ihn aktiviert hast.
Um den Scheren-Manager zu aktivieren, verwende einfach die Methode GuiGraphicsExtractor.enableScissor(...). Um den Scheren-Manager zu deaktivieren, verwende die Methode GuiGraphicsExtractor.disableScissor().
java
No lines matched.1
Wie du siehst, wird der Farbverlauf nur innerhalb der Scheren-Region gerendert, obwohl wir der Oberfläche sagen, dass sie den Farbverlauf über die gesamte Oberfläche rendern soll.
Zeichnen von Texturen
Es gibt nicht den einen "richtigen" Weg, um Texturen auf einen Bildschirm zu zeichnen, da die Methode blit(...) viele verschiedene Überladungen hat. In diesem Abschnitt werden die häufigsten Anwendungsfälle behandelt.
Zeichnen einer ganzen Textur
Im Allgemeinen wird empfohlen, dass man die Überladung verwendet, die die Parameter textureWidth und textureHeight angibt. Der Grund dafür ist, dass die Klasse GuiGraphicsExtractor diese Werte entgegennimmt, wenn du sie nicht angibst, was manchmal falsch sein kann.
Du musst auch angeben, welche Render-Pipeline deine Textur verwenden soll. Für einfache Texturen wird dies normalerweise immer RenderPipelines.GUI_TEXTURED sein.
java
No lines matched.1

Zeichnen eines Teils einer Textur
Hier kommen u und v ins Spiel. Diese Parameter geben die obere linke Ecke der zu zeichnenden Textur an, und die Parameter regionWidth und regionHeight geben die Größe des zu zeichnenden Teils der Textur an.
Nehmen wir diese Textur als Beispiel.

Wenn wir nur einen Bereich zeichnen wollen, der die Lupe enthält, können wir die folgenden Werte u, v, regionWidth und regionHeight verwenden:
java
No lines matched.1

Zeichnen von Text
Die Klasse GuiGraphicsExtractor verfügt über verschiedene selbsterklärende Methoden zum Rendern von Texten, die hier aus Gründen der Kürze nicht behandelt werden.
Nehmen wir an, wir wollen "Hello World" auf die Oberfläche zeichnen. Wir können dazu die Methode GuiGraphicsExtractor.text(...) verwenden.
INFO
Minecraft 1.21.6 und höher ändert die Textfarbe von RGB zu ARGB. Die Übergabe von RGB-Werten führt dazu, dass dein Text transparent gerendert wird. Hilfsmethoden wie ARGB.opaque(...) können verwendet werden, um während der Portierung RGB in ARGB umzuwandeln.
java
No lines matched.1


