Einzelnen Beitrag anzeigen

Benutzerbild von igel457
igel457

Registriert seit: 31. Aug 2005
1.622 Beiträge
 
FreePascal / Lazarus
 
#10

Re: Konzept für meine 2DX-Engine (DirectX)

  Alt 4. Mai 2008, 20:46
Ich fange mal mit einem einfachen Beispiel aus der Alltagswelt an.
Stelle dir vor, du hast zehn verschiedene CD-Spieler von zehn verschiedenen Herstellern: Du kannst alle CD-Spieler bedienen, weil sie alle die gleiche Schnittstelle nach außen haben: Es gibt einen Play, einen Pause und einen Open-Knopf. Du kannst eine CD einlegen.
Und auf der Rückseite des Gehäuses haben alle einen Chinch-Audio Anschluss den du an deinen Verstärker anschließen kannst.
Legst du eine CD ein und drückst auf Play, dann hörst du Musik.

Wie die Daten von der CD jetzt zum Audio-Ausgang gelangen ist jedoch von Hersteller zu Hersteller unterschiedlich. Der eine ist eine fest verdrahtete CMOS-Logikschaltung mit Widerstandsnetzwerk zur Digital-Analog-Wandlung, der andere verwendet einen kompletten 3GHz High-End PC mit PowerPC-Architektur und einem Linuxsystem, das beim Einschalten von der integrierten 300GB Festplatte geladen wird.
Doch uns braucht das als Anwender gar nicht zu interessieren, den Spieler betrachten wir also als eine Art "Blackbox": Wir verlassen uns einfach nur darauf, dass das Gerät das macht, das wir von ihm verlangen. Wenn ich auf "Play" drücke, will ich einfach nur Musik.

In deinem konkreten Fall könntest du als "CD-Spieler" (die Blackbox) die Kapselung der verschiedenen Grafikschnittstellen sehen. Die Tasten auf der Vorderseite des Geräts sind deine (frei definierte!) Schnittstelle zu deinem eigenen Programm: Imperialistisch sagst du von dort aus der Blackbox: "Initialisiere ein Fenster!" und sie macht es. Du sagst "Zeichne ein Dreieck an den und den Koordinaten!" und sie macht es.

Für dich bedeutet das: Was in der Blackbox passiert ist dir egal. Was zählt ist, dass die Implementierung deiner Schnittstellendefinition folgt.

Und nun kommt es:
DU bist derjenige der die Schnittstelle definiert. Du kannst diese Schnittstelle so machen, wie DU es für richtig hältst.
Dir kann es also egal sein, wie z.B. OpenGL funktioniert. Möchte man nun irgendwann mal OpenGL in deine Anwendung einbauen, so muss es halt innerhalb der Blackbox so implementiert werden, dass es das macht, was du über die Schnittstelle verlangst.

Ich hoffe, ich habe dir das Prinzip dahinter ein bisschen klarer gemacht. Natürlich ist es auch teilweise mit (geringfügigen) Geschwindigkeitseinbußen verbunden.Doch diese lassen sich durch sonst ordentliche und effiziente Programmierung dicke wieder rausholen. Und glaube mir - das Grundprinzip der Grafikschnittstellen ist durch den inneren Aufbau der Grafikkarte überall gleich, wodurch du dir darüber keine Gedanken machen musst: Auch jeder CD-Spieler basiert letztendlich auf dem gleichen Prinzip.
Andreas
"Sollen sich auch alle schämen, die gedankenlos sich der Wunder der Wissenschaft und Technik bedienen, und nicht mehr davon geistig erfasst haben als die Kuh von der Botanik der Pflanzen, die sie mit Wohlbehagen frisst." - Albert Einstein
  Mit Zitat antworten Zitat