Heim >Backend-Entwicklung >C++ >Wie zeichne ich 1-Pixel-Linien in OpenGL mit interner Auflösungsskalierung?

Wie zeichne ich 1-Pixel-Linien in OpenGL mit interner Auflösungsskalierung?

DDD
DDDOriginal
2024-11-04 00:25:30474Durchsuche

How to Draw 1px Lines in OpenGL with Internal Resolution Scaling?

Skalierung von 1-Pixel-Zeilen in OpenGL

Problem:

Ein Spiel mit einer internen Auflösung von 320x240 wird für die Anzeige skaliert höhere Auflösungen (z. B. 960x720). Während pixelige Grafiken korrekt gerendert werden, werden mit GL_LINE_LOOP gezeichnete Linien auf 3 Pixel skaliert, was zu falschen Pixelgrafiken führt.

Frage:

Wie können Linien gezeichnet werden? interne 320x240-Ansicht anstelle der 960x720-Anzeige Ansicht?

Antwort:

Die falsche Vorstellung ist die Existenz einer „320x240 glOrtho-Leinwand“. OpenGL rendert nur mit der tatsächlichen Fensterauflösung (z. B. 960 x 720). Das Skalieren von Koordinaten transformiert lediglich primitive Endpunkte, hat jedoch keinen Einfluss auf die Rasterung.

So zeichnen Sie 1-Pixel-Linien korrekt:

  1. Erstellen Sie eine 320x240-Textur und hängen Sie sie an ein Framebuffer-Objekt (FBO) an.
  2. Binden Sie das FBO und stellen Sie das Ansichtsfenster auf die Größe der Textur ein (320x240) Zeichnen Sie es in das Fenster und stellen Sie das Ansichtsfenster auf die Größe des Fensters ein (z. B. 960x720).
  3. Durch Rendern in ein Offscreen-Bild mit der tatsächlichen Auflösung und anschließendes Hochskalieren kann eine ordnungsgemäße Pixellinienrasterung erreicht werden.

Das obige ist der detaillierte Inhalt vonWie zeichne ich 1-Pixel-Linien in OpenGL mit interner Auflösungsskalierung?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn