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?
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.
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.