Entscheidnungshilfe

Algorithmen, Sprachunabhängige Diskussionen zu Konzepten, Programmiersprachen-Design
Antworten
Benutzeravatar
cloidnerux
Moderator
Beiträge: 3123
Registriert: Fr Sep 26, 2008 4:37 pm
Wohnort: Ram (Gibts wirklich)

Entscheidnungshilfe

Beitrag von cloidnerux » So Jun 20, 2010 4:16 pm

Ich stehe momentan vor dem Problem, das ich für die Grafikengine meines CAD-Programmes die Schnittstelle Implemntieren muss, ich aber nicht weis welches der 2 Verfahren ich nutzen soll:
Entweder Direkt einprogrammierte Grafikprimitiven (Linie, Ellipsen(/Kreis)Bogen) und dann alles Komplexere auf den höheren Anwendungsebenen (CAD-Engine, User-Interface) als Definition und Relationen zueinander Definiere, was abstriche in der Performance gibt, dafür aber mehr Flexibilität, Dynamik und Stabilität oder
das ich ein generisches Interface aufbaue, wodurch ich dann "Spezialfälle"(Viereck, Quadrat, Kreis Ellipse, etc.) direkt in der untersten Anwendungschicht Realisiere, was mir mehr Geschwindigkeit gibt, aber weniger Flexibilität.
Weil ich mich selbst nicht entscheiden kann, würde ich mich freuen, wenn ihr das ganze Kommentiert und/oder andere Wege aufzeichnet, wenn ihr welche habt.

MfG cloidnerux.
Redundanz macht wiederholen unnötig.
quod erat expectandum

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8858
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: Entscheidnungshilfe

Beitrag von Xin » So Jun 20, 2010 4:37 pm

Es stellt sich doch nicht die Frage, ob Du eine Schnittstelle programmierst oder nicht, sondern ob Du der Schnittstelle zur Grafikkarte zusätzliches hinzufügst.

Zumindest unter OpenGL sind Vierecke und Quadrate keine Spezialfälle. Kreise und Ellipsen sind zumindest in GLU enthalten. Bleibt die Frage, was "etc." ist und welche Flexibilität Du benötigst.
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

Benutzeravatar
cloidnerux
Moderator
Beiträge: 3123
Registriert: Fr Sep 26, 2008 4:37 pm
Wohnort: Ram (Gibts wirklich)

Re: Entscheidnungshilfe

Beitrag von cloidnerux » So Jun 20, 2010 4:44 pm

Es stellt sich doch nicht die Frage, ob Du eine Schnittstelle programmierst oder nicht, sondern ob Du der Schnittstelle zur Grafikkarte zusätzliches hinzufügst.
Nur Indirekt, da ich die Schnittstelle zur Grafikkarte schon Abstrahiert habe und ich gerne entweder auf so wenige Primitiven wie möglich zurück will.
Weil es später im Programm dazu kommen kann, der der Nutzer aus einem Viereck ein Dreieck macht und ich mir gerade selbst die Antwort geliefert habe, die ich davor nicht gesehen habe...
Es ist nur schwer möglich, mit einem Generischen Interface im nachhinein aus einem Viereck ein Dreieck zu bauen, da ich dazu erstmal wieder den Grundtyp des Generischen Objektes heruasfinden müsste und dann für jeden Fall eine eigene Konvertierung starten zu müssen.
Daher werde ich die Grafikschnittstelle auf Linien und Bögen beschränken.
Zumindest unter OpenGL sind Vierecke und Quadrate keine Spezialfälle. Kreise und Ellipsen sind zumindest in GLU enthalten. Bleibt die Frage, was "etc." ist und welche Flexibilität Du benötigst.
Flexibilität hätte ich gerne so viel wie Möglich, da sich viele Komponenten des Programms auch super für andere Zwecke nutzen lassen und ich keine lust habe, den Code wieder umzuändern, nur um ihn für andere zwecke nutzen kann.
Redundanz macht wiederholen unnötig.
quod erat expectandum

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8858
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: Entscheidnungshilfe

Beitrag von Xin » So Jun 20, 2010 6:28 pm

Ich denke, Programme sollte man daran ausrichten, was man als Maschine hat.

Schnittstellen, die gleichzeitig auch Adapter zwischen virtueller Maschine (Deine Schnittstelle) und echter Maschine (die Grafikkarte/Grafik-Library) kosten eben Zeit. Deswegen würde ich die Schnittstelle eigentlich so halten, dass sie möglichst wenig die Daten anpackt.
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

Benutzeravatar
cloidnerux
Moderator
Beiträge: 3123
Registriert: Fr Sep 26, 2008 4:37 pm
Wohnort: Ram (Gibts wirklich)

Re: Entscheidnungshilfe

Beitrag von cloidnerux » So Jun 20, 2010 6:34 pm

Schnittstelle eigentlich so halten, dass sie möglichst wenig die Daten anpackt.
Naja, es ist schon etwas komplizierter. Im Grunde habe ich keinen direkten Zugrif mehr auf die Grafikschnittstelle, sie ist schon durch eine Klasse Abstrahiert. Dann kommen weitere Objekte, die die Grafikprimitven repräsentieren und nur noch auf die Schnittstellen der Grafikengine zugreifen, dann kommt erst die Schnittstelle die mich Interessiert, nämlich die Verbindung des GrafischenObjektes mit dem CAD-Objekt, das mehrere Grafikprimitven und Relationen verwaltet, die vom User eingegeben wurden. Also ist es nur noch ein Adapter zwischen 2 "Virtuellen Maschinen". Was mir aber auch Punkte in der performance bringen kann, was zumindest die Grafik angeht, denn ich kann so die einzelnen Grafischen Objekte in einem Thread verwalten, während die Objekte ganz normal weitergezeichnet werden.
Redundanz macht wiederholen unnötig.
quod erat expectandum

Antworten