Heim > Artikel > Backend-Entwicklung > Wie bleiben pixelige Linien beim Skalieren von Grafiken in OpenGL erhalten?
Skalieren und Zeichnen von Linien in OpenGL
Bei der Erstellung von 2D-Pixelkunstspielen können Probleme mit der Skalierung und Pixelgröße auftreten Rendern in ein Fenster mit einer höheren Auflösung. Dieser Artikel befasst sich mit einem häufigen Problem und bietet eine Lösung für die Beibehaltung pixeliger Grafiken.
Der beschriebene Ansatz besteht darin, mit glOrtho() eine interne Auflösung festzulegen und gleichzeitig die Ausgabeauflösung für die Anzeige auf dem Bildschirm zu skalieren. Beispielsweise könnte eine interne Auflösung von 320 x 240 auf dem Bildschirm auf 960 x 720 skaliert werden.
Beim Zeichnen von Linien mit GL_LINE_LOOP stellen Sie jedoch möglicherweise fest, dass die Linien dünn und pixelig erscheinen, anstatt die ursprüngliche Pixelgröße beizubehalten. Dies liegt daran, dass die Linie auf der gesamten 960x720-Leinwand gezeichnet wird, was zu einer Linienbreite von 1 Pixel in einer Welt mit 3 Pixeln führt.
Um dieses Problem zu lösen, ist es wichtig zu verstehen, dass es kein separates „320x240“ gibt glOrtho Canvas“ innerhalb der tatsächlichen Auflösung des Fensters. OpenGL skaliert alle gezeichneten Grundelemente basierend auf der Auflösung des Fensters, einschließlich der Linienendpunkte. Die Rasterung der Linie zwischen den Endpunkten basiert jedoch weiterhin auf der tatsächlichen Rendering-Auflösung, was zu nicht pixeligen diagonalen Linien führt.
Die richtige Lösung besteht darin, ein echtes 320x240-Bild zu rendern und dieses Bild dann darauf zu zeichnen Fenster mit seiner höheren Auflösung. Dazu muss eine 320x240-Textur erstellt, an ein Framebuffer-Objekt (FBO) angehängt und mit einem auf die Bildgröße eingestellten Ansichtsfenster gerendert werden. Sobald das Bild in die Textur gerendert wurde, kann die Bindung des FBO aufgehoben werden und die Textur kann in das Fenster gezeichnet werden, wobei das Ansichtsfenster auf die Auflösung des Fensters eingestellt ist.
Das obige ist der detaillierte Inhalt vonWie bleiben pixelige Linien beim Skalieren von Grafiken in OpenGL erhalten?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!