AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Klassendesign für Multi-Render Engine

Ein Thema von Zacherl · begonnen am 18. Dez 2013 · letzter Beitrag vom 19. Dez 2013
 
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
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:07 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz