Kreise zeichnen
-
Hallo Leute!
Hab mal ne FRage:
Wie zeichne ich Kreise? Aus Dreiecken? Dann sind die aber nicht richtig rund...Gruß, Maxi
-
Bresenhams Kreisalgorithmus:
// ****************************************************************** // Zeichnet einen Kreis void tbDraw2D::DrawCircle(DWORD cx, DWORD cy, DWORD r, D3DCOLOR c) { static DWORD x; static DWORD y; static int p; // Diese Funktion zeichnet einen hohlen Kreis nach // Bresenhams Kreisalgorithmus. x = 0; y = r; p = 3 - (r << 2); while(x < y) { SetPixel(cx - x, cy - y, c); SetPixel(cx + x, cy - y, c); SetPixel(cx - x, cy + y, c); SetPixel(cx + x, cy + y, c); SetPixel(cx - y, cy - x, c); SetPixel(cx + y, cy - x, c); SetPixel(cx - y, cy + x, c); SetPixel(cx + y, cy + x, c); if(p < 0) p = p + (x << 2) + 6; else { p = p + ((x - y) << 2) + 10; y--; } x++; } if(x == y) { SetPixel(cx - x, cy - x, c); SetPixel(cx + x, cy - x, c); SetPixel(cx - x, cy + x, c); SetPixel(cx + x, cy + x, c); } }
Unverständlich, aber sehr schnell!
Es gibt auch einen Linienalgorithmus von Bresenham. Einfach googlen...
-
Was ist SetPixel?
Ist das nich was vonner MFC oder so?
Ich meine aber natürlich in DirectX 8?
-
SetPixel ist eine allgemeine Funktion, die Du Dir selbst definieren musst. Ich habe den Code nur aus meiner Engine kopiert. Die tbDraw2D-Klasse zeichnet auf Texturen oder auf andere D3D-Surfaces. Das ginge also auch mit dem Back-Buffer.
Du kannst aber auch eine Textur nehmen, auf der Du einen Kreis vorzeichnest und dann ein Rechteck mit dieser Textur zeichnen (Ellipse oder Kreis).
-
@ David
Du schreibst doch glaub ich ein Buch über Spieleprogrammierung oder?
Da wird auch die Engine entwickelt. Die heisst Tribase-Engine glaub ich.
Das Buch erscheint glaub ich im April 2003.
-
Teilweise hab ich ja nichts gegen Werbung von den Authoren. Aber wenn es noch andere machen die es so extrem machen dann wirkt das nen bisschen *****kriechend. Ich will mir das Buch ja w*****einlich auch kaufen oder denke darüber nach aber sowas das ist eher abschreckend .
Zweimal a r s c h einsetzen bei den ***** obwohl das 1. ja berechtigt ist aber ist ja nur scherzhaft gemeint.
[ Dieser Beitrag wurde am 10.02.2003 um 22:03 Uhr von Tobiking editiert. ]
-
Nicht dass Du das falsch verstehst! Das sollte keine Werbung sein, ich wollte nur helfen. Ich hab diesen Bresenham-Algorithmus schon zig mal ins Forum gepostet, immer, wenn jemand nach "Kreise zeichnen" gefragt hat.
-
@TomasRiker
Ich mein dich ja gar nicht ich mein lukuku. Das was du machst ist total in Ordnung und da hab ich nichts gegen.