Einzelnen Beitrag anzeigen

Benutzerbild von Zacherl
Zacherl

Registriert seit: 3. Sep 2004
4.629 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#1

Klassendesign für Multi-Render Engine

  Alt 18. Dez 2013, 18:27
Hallo zusammen,

ich bin momentan dabei eine Engine zu schreiben, mit der man diverse visuelle Komponenten rendern kann. Hierbei würde ich gerne sowohl verschiedene DirectX Frameworks (9, 10, 11), als auch OpenGL und evtl. GDI(+) unterstützen.

Nun stehe ich allerdings etwas auf dem Schlauch, was die Konzeption meiner Klassen angeht. Zuerst einmal: Jede Komponente soll sich selbst rendern; es gibt also momentan eine Methode "Paint", die immer dann aufgerufen wird, wenn die Komponente neu gezeichnet werden muss.

Jetzt habe ich mir verschiedene Lösungswege überlegt:
  1. Abstrakte Render Klasse, die Funktionen wie z.b. DrawRect, FillRect, etc. zur Verfügung stellt.
    • Dies wäre eine universelle Lösung, die allerdings den Nachteil hat, dass ich in der Darstellung der Komponente sehr eingeschränkt werde. Ich könnte beispielsweise keine DirectX11 sepzifischen Effekte aufrufen, ohne zusätzlich die abstrakte Render Klasse um entsprechende Funktionen zu erweitern (die dann für alle anderen Frameworks sinnlos wären).
  2. Seperate Paint Methode für jedes unterstüzte Render Framework.
    • Hier kann ich mit maximaler Flexibilität (für das jeweilige Framework spezifisch) zeichnen, müsste aber die Zeichenroutinen doppelt und dreifach implementieren.

Hinzu kommen noch weitere Besonderheiten z.b. muss ich bei DX9 auf OnDeviceLost und OnDeviceReset reagieren.

Hat jemand vielleicht noch eine Idee, die mir bisher nicht gekommen ist. Oder welche der Lösungen würdet ihr implementieren?

Viele Grüße
Zacherl
Projekte:
- GitHub (Profil, zyantific)
- zYan Disassembler Engine ( Zydis Online, Zydis GitHub)
  Mit Zitat antworten Zitat