Beim Rendern von Retro-2D-Pixelgrafiken ist es üblich, eine niedrigere interne Auflösung für die Pixelierung zu verwenden und die Ausgabe auf eine größere Auflösung zu skalieren Anzeige. Das Skalieren von GL_LINE_LOOP-Primitiven kann jedoch zu nicht pixeligen Linien führen.
Die glOrtho-Funktion von OpenGL definiert ein 2D-Koordinatensystem, bei dem der Ursprung in der unteren linken Ecke liegt und sich bis zum erstreckt oben rechts. Durch den Aufruf von glOrtho(0, 320, 240, 0, 0, 1) definieren Sie eine virtuelle Leinwand im Format 320 x 240.
Wenn jedoch die glViewport-Funktion zum Skalieren der Ausgabe verwendet wird, wird die Größe der virtuellen Leinwand nicht physisch geändert . Stattdessen werden die Grundelemente mit der vollen Ausgabeauflösung (z. B. 960 x 720) gezeichnet und dann hochskaliert. Dies führt zu pixeligen Rechtecken, aber nicht pixeligen Linien.
Die empfohlene Lösung besteht darin, eine Textur mit der gewünschten virtuellen Auflösung (in diesem Fall 320 x 240) zu rendern und diese Textur dann zu zeichnen in der gewünschten Ausgabeauflösung (960 x 720) in das Fenster ein. Dadurch wird sichergestellt, dass die Grundelemente mit der virtuellen Auflösung gerendert werden und ihr pixeliges Aussehen beibehalten.
Dieser Ansatz stellt sicher, dass die Linien mit der virtuellen Auflösung gezeichnet werden und ihr pixeliges Aussehen auch bei einer höheren Skalierung beibehalten Ausgabeauflösung.
Das obige ist der detaillierte Inhalt vonWie erreicht man beim Skalieren in OpenGL pixelige Linien?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!