Ich habe in ein Problem, dass es gelegentlich ein Pixel Löcher entlang der Verbindung zwischen 2 Objekten, die den gleichen Satz von Scheitelpunkten haben, aber übersetzt, um nebeneinander zu sein laufen. Ich habe es geschafft, dies mit einer Reihe von einfachen Quadraten zu reproduzieren.
Die Quadrate sind 1 Einheit mal 1 Einheit mit dem Mittelpunkt 0,0. Ich positionierte eine Reihe dieser Quadrate in einer Linie, mit glTranslatef, um jedes Quadrat in Position zu bringen (die Werte, die ich zur Verfügung stelle, sind in diesem Fall immer Ganzzahlen). Ich habe festgestellt, dass OpenGL, wenn sich die Kamera an bestimmten Positionen befindet, eine Lücke von einem Pixel zwischen diesen Quadraten lässt, durch die ich sehen kann, was sich dahinter befindet (z. B. die Farbe, auf die ich den Hintergrundpuffer gelöscht habe). Das Ändern der Eckpunkte der Quadrate auf 0,0 in einer Ecke hat das Problem nicht gelöst.
Beispiel-Code:
glPushMatrix();
glTranslatef(0, 0, 0);
drawSquare();
glPopMatrix();
glPushMatrix();
glTranslatef(0, 0, 1);
drawSquare();
glPopMatrix();
glPushMatrix();
glTranslatef(0, 0, 2);
drawSquare();
glPopMatrix();
Das Bild zeigt einen solchen Fall. Ich habe dem Bildschirmfoto einen roten Kreis um den problematischen Pixel hinzugefügt.
Ich habe keine Ahnung, warum dies der Fall ist, und während die Angabe der endgültigen "Welt"-Koordinaten, die die Verschiebungen pro Quadrat eliminieren, für einfache Quadrate möglich ist (und das Problem löst), ist dies bei der weitaus komplizierteren Geometrie, bei der mir das Problem zuerst aufgefallen ist, nicht wirklich praktikabel.