ich mache mir momentan ein paar Gedanken über Grafikdarstellung in meinem kleinen 2D Projekt.
Momentan sieht die Klassenstruktur so aus:
Ich habe ein Interface IGraphic, welches von BaseGraphic implementiert wird.
Von dieser Klasse werden wiederrum die konkreten Klassen abgeleitet (Momentan SDL_Graphic und OpenGL_Graphic).
Diese werden mit der Funktion draw() auf das Globale ScreenSurface (SDL_Surface) gemalt.
Da es ja sein kann, dass ich vllt mal in Zukunft eine neue Klasse wie z.b. DirectX_Graphic o.ä. hinzufügen möchte
wird die sache mit dem SDL_Surface als ScreenSurface ja hinfällig.
Deshalb habe ich mir folgenden Entwurf ausgedacht:
Hier läuft alles über die speziellen GraphicManager.
Die Oberklasse dieser Manager hat ein Array mit IGraphic Pointern.
Die Idee dahinter ist, dass jede IGraphic Implementation sich selber beim GraphicManager "einschreiben" muss. Am Ende jedes Frames werden alle IGraphicen im Array auf das Surface des jeweiligen GraphicManagers gemalt (Die müssten dann halt jedesmal die konkreten Klassen casten). Danach wird das Array geleert und jeweils wieder neu befüllt.
Mich würde nun interessieren was gegen so eine Implementierung spricht und ob der eine oder andere von euch vllt eine bessere Idee hat.