Registriert: Di Feb 13, 2018 19:02 Beiträge: 24
Programmiersprache: Java
Hallo,
in meinem Programm zeichne ich mehrere Rechtecke direkt nebeneinander, dabei erhält jedes Rechteck eine eigene Textur.
Verschiebe ich die Rechtecke durch einen Timer z.B. langsam nach links, so sieht man zwischen den einzelnen Rechtecken einen kleinen schwarzen Spalt.
Die Rechtecke liegen jedoch direkt Kante an Kante, also rechnerisch ohne Spalt. Auch wenn ich die einzelnen Rechtecke ein wenig überlappen lasse, so tritt der kleine schwarze Spalt trotzdem noch auf.
Könnt ihr mir sagen woran das liegen kann und was man dagegen machen kann?
Registriert: Di Mai 18, 2004 16:45 Beiträge: 2622 Wohnort: Berlin
Programmiersprache: Go, C/C++
Das passiert z.B. wenn die Geometry nicht zusammen in die Pipeline kommt und der Renderer die einzeln behandelt oder man die Punkte nacheinander berechnet und nicht die überlappenden Punkte nur einmal berechnet. Du kannst die Rechtecke über einen Draw-Call rendern, dann kannst du erstes Problem umgehen, da der Treiber dann weiß, dass die zusammen gehören und da drauf achtet. Für das 2. ist es die Ungenauigkeit von Floatingpoint, dass bei 2x berechnen des Punktes, über Zeit und interpolation die Nachkommastellen unterschiedlich sind und dann z.B. 1Pixel auseinander liegen, da default keine Subpixel Genauigkeit beim schreiben vom Tiefenpuffer gibt. Du kannst mit Anti-Aliasing Subpixel genau in den Tiefenpuffer schreiben und somit auch die Lücken vermeiden oder einfach die Werte einmal ausrechnen und dann wiederverwenden.
_________________ "Wer die Freiheit aufgibt um Sicherheit zu gewinnen, der wird am Ende beides verlieren" Benjamin Franklin
Mitglieder in diesem Forum: 0 Mitglieder und 19 Gäste
Du darfst keine neuen Themen in diesem Forum erstellen. Du darfst keine Antworten zu Themen in diesem Forum erstellen. Du darfst deine Beiträge in diesem Forum nicht ändern. Du darfst deine Beiträge in diesem Forum nicht löschen. Du darfst keine Dateianhänge in diesem Forum erstellen.