Pixel perfekt: Auswahl der richtigen Korrektur (OpenGL)

Das Pferd ist braun

Ich habe versucht, pixelgenaue Bitmaps mit Quads in OpenGL zu zeichnen ... und zu meiner Überraschung fehlte eine sehr wichtige Pixelreihe: (Grün ist in Ordnung, Rot ist schlecht)

Die Größe der Quads betrug 30x30 px, wobei das rote 2x2 in der oberen linken Ecke lag.

Geben Sie hier die Bildbeschreibung ein

  • Kann jemand erklären, was passiert?
  • Wie entscheidet OpenGL, wo Pixel abgelegt werden sollen?
  • Welche Korrektur soll ich wählen?

Die Textur verwendet GL_NEAREST.

    glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE);

Ich benutze nicht glViewport und glOrtho. Stattdessen sende ich die Bildschirmabmessungen über Uniformen an die Shader:

uniform float cw;
uniform float ch;
...
gl_Position = vec4(     -1.0f + 2.0f*(in_pos.x + in_offset.x)/cw, 
                         1.0f - 2.0f*(in_pos.y + in_offset.y)/ch,
                         0.0f, 1.0f);

Aber das scheint nicht die Ursache des Problems zu sein, denn wenn ich (0,5,0,5) im Shader hinzufüge (entspricht dem 3. Fall), verschwindet das Problem ...

Ok, jetzt merke ich, dass die dritte Option auch nicht funktioniert:

Geben Sie hier die Bildbeschreibung ein

Vlad

Überprüfen Sie, ob Sie die richtige Bildschirmgröße an den Shader übergeben haben.

Wenn Sie ein Fenster erstellen, definieren Sie dessen äußere Größe. Der Clientbereich, in dem der Renderkontext abgelegt wird, kann jedoch kleiner sein, wenn das Fenster Kopfzeilen / Dekorationen enthält.

Sie sollten also entweder die Größe des Clientbereichs mit erfragen GetClientRect()oder die "richtige" Fenstergröße durch Aufrufen ermitteln, AdjustWindowRect()bevor Sie ein Fenster erstellen. Dadurch erhalten Sie die Fenstergröße, die den Clientbereich in der ursprünglich gewünschten Größe hat.

Dieser Artikel stammt aus dem Internet. Bitte geben Sie beim Nachdruck die Quelle an.

Bei Verstößen wenden Sie sich bitte [email protected] Löschen.

bearbeiten am
0

Lass mich ein paar Worte sagen

0Kommentare
LoginNach der Teilnahme an der Überprüfung

Verwandte Artikel

Auswahl der richtigen Form in Javascript

Auswahl der richtigen Ausnahmebehandlung in Scala

Auswahl der richtigen Boxen in *ngFor

Hilfe bei der Auswahl der richtigen Datenstruktur

Auswahl der richtigen HTTP-Methode

Auswahl der richtigen Version von QT

Auswahl der richtigen EC2-Instanz

Auswahl der richtigen Anzahl von Threads in Python

Monat in der Dropdown-Auswahl nicht in der richtigen Reihenfolge

Auswahl der richtigen Bereinigungsrichtlinie in der Kafka-Konfiguration

Auswahl der richtigen Daten aus der Listenansicht Android setzen extra

Auswahl des richtigen Elements mithilfe der GridList des Materials

Auswahl der richtigen Div-Klasse mit BeautifulSoup

Auswahl der richtigen Metriken für das Regressionsmodell

Warum sortiert meine Auswahl das Array nicht in der richtigen Reihenfolge?

Font Awesome 5 Auswahl der richtigen Schriftfamilie in Pseudoelementen

Auswahl der richtigen Verknüpfung mit data.table

Korrektur der Listenausgabe in Prolog

Vorhersage / Korrektur der Volltextsuche

Korrektur der Typinferenz in HLists

Korrektur der Taktverschiebung in Zeitreihen

Auswahl des richtigen Datenbankindex

Auswahl des richtigen Berichterstellungstools

Auswahl des richtigen Strukturierungselements

Die umgeleitete Seite verursacht ein Problem bei der Auswahl der richtigen aktiven Seite

Auswahl der richtigen Version der Datenspeicherbibliothek von GCP für .Net Core

Message Board mit Antworten zur Auswahl aus der SQL Server-Datenbank in der richtigen Reihenfolge

Probleme bei der Auswahl der richtigen CSS-Elemente für das Scraping mit rvest

Bei Auswahl der richtigen Antwort werden der Punktzahl keine Punkte hinzugefügt

TOP Liste

heißlabel

Archiv