Textur wird nicht richtig angezeigt - wahrscheinlich sind Koordinaten falsch OpenGL, C ++

8

Ich werde versuchen, mein Problem mit Bildern zu erklären. Dies ist eine Teststruktur, die ich für meine OpenGL-Anwendung verwende:

Wie Sie sehen können, gibt es einen 2-Pixel breiten Rahmen um das Bild herum mit verschiedenen Farben, damit ich sehen kann, ob die Koordinaten in meiner Anwendung richtig eingestellt sind.

Ich verwende ein 9-Zellen-Muster, also zeichne ich 9 Quads mit bestimmten Texturkoordinaten. Auf den ersten Blick funktioniert alles gut, aber es gibt ein kleines Problem mit der Anzeige einer Textur:

In dem Bild habe ich markiert, wo der erste Quad ist und wo der zweite ist. Wie Sie sehen können, wird der erste korrekt angezeigt, aber der zweite geht glatt von den Farben des ersten Quads zu seinem eigenen, aber er sollte mit reinem Grün und Rosa beginnen. Also ich vermute, es ist ein Problem mit Texturkoordinaten.

So sind sie eingestellt:

%Vor%

Sie können sehen, dass ich maxTexCoordBorderX Variable verwende, die basierend auf Rahmen und Bildgröße berechnet wird. Bildbreite ist 32 und Randbreite ist 2.

maxTexCoordBorderX = 2/32 = 0,0625

Könnte jemand bitte helfen, herauszufinden, wo das Problem liegt?

    
Piotr Chojnacki 18.12.2012, 08:40
quelle

3 Antworten

4

Am wahrscheinlichsten ist, dass Sie nicht auf den Texel-Zentren Proben nehmen. Wenn Sie beispielsweise eine Textur mit 32x32 Pixel haben, werden die Texel-Zentren um 1/64 versetzt.

Hier ist ein grobes Diagramm einer 4x4 Textur. Die Quadrate sind die Texel (oder Pixel) des Bildes.

%Vor%

Wenn Sie auf einer der Linien sampeln, erhalten Sie einen Wert genau zwischen zwei Texeln, der (wenn Sie die Textur-Stichprobe auf lineare Mischung eingestellt haben) einen Durchschnittswert ergibt. Wenn Sie den genauen Texelwert abtasten möchten, müssen Sie in der Mitte des Texels ein u, v angeben.

    
JasonD 18.12.2012, 09:00
quelle
4

Sie haben ein Zaunpfosten-Problem. Ich habe die Lösung für Ihr Problem hier

beantwortet

Ссылка

    
datenwolf 18.12.2012 09:32
quelle
-2

Sie verwenden int und float ...

Dies kann der Grund sein, auch die Art und Weise, wie Sie das Bild auf OpenGL-Fenster zeigen kann auch einige Farben Wirkung geben.

    
quelle

Tags und Links