( Toll, jetzt ist mein ganzer Text wieder verschwunden
)
Ich werde mich jetzt also kürzer fassen.
Ich will 2D Linien mit 'Pixel genauen Koordinaten' zeichnen. Das sieht bei GL und D3D aber leicht unterschiedlich aus.
Und bei GL sogar zwischen verschiedenen Treibern. Die Linien sind dann immer +/- 1 Pixel versetzt, je nach dem welche Grafik API und Treiber man gerade benutzt.
Dieses Offset scheint sich auch unterschiedlich auszuwirken, je nachdem ob die Linie horizontal oder vertikal gerendert wird.
Meine Frage: Kennt ihr dieses Problem auch und habt ihr einen Lösungvorschlag dafür?
Meine Idee wäre folgende: Ich schreibe eine Funktion "QueryLineOffset" die in einen Texture zwei Linien zeichnet.
Dann lade ich die Bilddaten von der GPU und analysiere diese (sollte bei einer 16x16 Texture nicht sehr lange dauern).
Diese Analyse soll dann die Offset Werte ermitteln.
z.B. wenn ich eine Linie an den Koordinaten { ( 2 | 2 ), ( 10 | 2 ) } zeichen, aber die Pixel ( 2 | 3 ) bis ( 10 | 3 ) gefüllt sind, dann weiß ich, dass der Versatz ( 0, 1 ) ist.
Dieses Offset wird dann in den "DrawLine" Funktionen verwendet.
Was haltet ihr von der Idee? Habt ihr eine Bessere?
PS: Mein Jubiläums Beitrag (1000)