Einzelnen Beitrag anzeigen

Namenloser

Registriert seit: 7. Jun 2006
Ort: Karlsruhe
3.724 Beiträge
 
FreePascal / Lazarus
 
#2

AW: Klassendesign für Multi-Render Engine

  Alt 18. Dez 2013, 18:42
An so etwas ähnlichem arbeite ich auch schon eine Weile, nur mit OpenGL und Graphics32. Kann zu einem echten Mammutprojekt ausarten, das nur als Warnung . Letzter Stand war bei mir, dass ich einen Algorithmus entwickeln musste, um ein komplexes Polygon in Dreiecke zu zerlegen. Für „einfache“ Polygone geht das noch leicht (jedenfalls wenn man sich mit quadratischer Laufzeit zufrieden gibt), aber wenn die Polygone in sich verschlungen sein können oder Löcher enthalten können, dann wird es recht kompliziert... leider hatte ich die letzten Monate keine Zeit, daran weiterzuarbeiten.

Was die von dir beschriebene Konzeption angeht: Ich würde das über Interfaces lösen bzw. habe das in der alten Version meiner Engine (die aktuelle schreibe ich gerade von Grund auf neu und bin da noch nicht so weit) auch so gemacht.

Delphi-Quellcode:
IPrimitivePainter = interface
  procedure DrawRect(x1,y1,x2,y2: float);
  procedure DrawLine(x1,y2,x2,y2: float);
end;

IFancyPainter = interface
  procedure DrawFancyEffect1(...);
  procedure DrawfancyEffect2(...);
end;

I3DPainter = interface
  procedure DrawCube(...);
end;
So in der Art.

Und dann im Quellcode mit Supports() prüfen, ob das Interface vom konkreten Painter implementiert wird.
  Mit Zitat antworten Zitat