Hallo allerseits.
Wie einige vielleicht wissen arbeite ich zurzeit an einer kleinen 2D-Gameengine. Eines meiner Ziele ist es, Renderer beliebig austauschen zu können, momentan sind GDI+ und Direct2D (über SharpDX) implementiert.
Bisher ist es mir auch recht gut gelungen, die beiden Engines auf gemeinsame Interfaces zu bringen, jetzt bin ich jedoch an einen Punkt gestoßen, an dem ich nicht weiterkomme. Es handelt sich um den GraphicsPath (GDI) und die GeometrySink-/SimplifiedGeometrySink-Klasse (Direct2D). Ich will es erstmal nicht übertreiben und nur die notwendigsten Methoden implementieren. AddLine, AddLines, AddBezier und AddBeziers konnte ich auch schon mit relativ wenig Aufwand fertigstellen.
Allerdings brauche ich auch noch AddArc, und das bereitet mir leider Kopfschmerzen. Bei den anderen Methoden verhielten sich die Engines noch relativ ähnlich, hier jedoch funktioniert alles komplett anders. Hier ist die GDI-Version und hier die Direct2D-Version bzw. die ArcSegment-Struktur für Direct2D. Ein Problem ist auch, dass ich bis zum heutigen Tage die Direct2D-Variante nicht vollends verstanden habe.
Hat jemand nen Plan oder zumindest nen Ansatz, wie man diese beiden Methoden auf gemeinsame Argumente zurückführen könnte, damit ich sie beide über die selbe Interface-Methode aufrufen kann?
Wie einige vielleicht wissen arbeite ich zurzeit an einer kleinen 2D-Gameengine. Eines meiner Ziele ist es, Renderer beliebig austauschen zu können, momentan sind GDI+ und Direct2D (über SharpDX) implementiert.
Bisher ist es mir auch recht gut gelungen, die beiden Engines auf gemeinsame Interfaces zu bringen, jetzt bin ich jedoch an einen Punkt gestoßen, an dem ich nicht weiterkomme. Es handelt sich um den GraphicsPath (GDI) und die GeometrySink-/SimplifiedGeometrySink-Klasse (Direct2D). Ich will es erstmal nicht übertreiben und nur die notwendigsten Methoden implementieren. AddLine, AddLines, AddBezier und AddBeziers konnte ich auch schon mit relativ wenig Aufwand fertigstellen.
Allerdings brauche ich auch noch AddArc, und das bereitet mir leider Kopfschmerzen. Bei den anderen Methoden verhielten sich die Engines noch relativ ähnlich, hier jedoch funktioniert alles komplett anders. Hier ist die GDI-Version und hier die Direct2D-Version bzw. die ArcSegment-Struktur für Direct2D. Ein Problem ist auch, dass ich bis zum heutigen Tage die Direct2D-Variante nicht vollends verstanden habe.
Hat jemand nen Plan oder zumindest nen Ansatz, wie man diese beiden Methoden auf gemeinsame Argumente zurückführen könnte, damit ich sie beide über die selbe Interface-Methode aufrufen kann?