Low/High-Level: Unterschied zwischen den Versionen

Aus DGL Wiki
Wechseln zu: Navigation, Suche
(Was ist High- und Low-Level API und worin liegen die Vor- und Nachteile?)
 
K (Vor- und Nach-teile)
Zeile 23: Zeile 23:
 
*schwerer zu erlernen
 
*schwerer zu erlernen
 
*nach längerer Zeit sind erste Ergebnisse sichtbare
 
*nach längerer Zeit sind erste Ergebnisse sichtbare
 
+
<br>
 
<u>High-Level</u>
 
<u>High-Level</u>
  
Zeile 35: Zeile 35:
 
*unflexible
 
*unflexible
 
*geschwindigkeitseinbußen
 
*geschwindigkeitseinbußen
 +
<br>
 +
<u>Mischung aus beiden Varianten</u>
 +
 +
Vorteile:
 +
*leicht zu erlernen
 +
*nach wenig Zeit erste Ergebnisse
 +
*durch gute Strukturierung ist ein Übersichtlicher Code bei großen Projekten möglich
 +
*Performant
 +
*leicht anpassbar
 +
 +
Nachteile:
 +
*bei schlechter Codestruktur entsteht ein unübersichtlicher Code
 +
*immer noch möglich mehr Performance zu erreichen
 +
*größerer aufwand größere anpassungen zu machen
  
 
===Beispiele===
 
===Beispiele===

Version vom 6. Juli 2005, 23:38 Uhr

Low/High-Level API

Allgemein

Low- und High-Level API sind Arten der Programmierung. Bei Low-Level API werden funktionen wie z.B. Lichtinitialisierung,konfiguration und zeichnen und alle damit in zusammenhang stehenden Funktionen in einige übersichtliche Funktionen zusammen gefasst. Wenn man dann ein Licht aktiviert, muss man sich selber noch darum kümmern das alles was mit dem Licht zu tun hat dementsprechend auch initialisiert und konfiguriert wird. Bei High-Level API wird eine ganzer umfangreicher Bereich zu wenigen Befehlen zusammengefasst. So wird nur noch das Licht aktiviert und dazugehörenende Shader, Zeichenfunktionen und andere Aufrufe werden durch diese eine Funktion abgearbeitet.

In der Regel verwenden Engines, die für Privatentwickler sind, High-Level API, z.B. Dark Basic und GLScene. Das Ziel dieser Engines ist schnell und leicht erste sichtbare Erfolge zu presentieren aber unter dem Nachteil der Performance und unflexiblität. Große Industrie Engines ordnen sich zwischen High und Low ein, da hier die Vorteile beider Varianten genutz werden kann. So kann der Entwickler z.B. in Vision mit einem Befehl das Licht anschalten und über Parameter alle wichtigen Informationen übergeben. Über weitere Funktionen wie Light.SetColor, Light.SetSpecular oder Light.SetType kann man dann tiefer in die Materie eingreifen und wem das noch nicht reicht, ist es möglich eigenen Code in vorhandene Events wie Draw oder Update zu speisen.

Vor- und Nach-teile

Low-Level

Vorteile:

  • sehr flexible
  • Performanter

Nachteile:

  • großer Codeumfang
  • schnell unübersichtlich
  • schwerer zu erlernen
  • nach längerer Zeit sind erste Ergebnisse sichtbare


High-Level

Vorteile:

  • kleiner Codeumfang
  • bei größeren Anwendung trotzdem gute Codeübersicht
  • leichter zu erlernen
  • nach kurzer Zeit sind erste Ergebnisse sichtbar

Nachteile:

  • unflexible
  • geschwindigkeitseinbußen


Mischung aus beiden Varianten

Vorteile:

  • leicht zu erlernen
  • nach wenig Zeit erste Ergebnisse
  • durch gute Strukturierung ist ein Übersichtlicher Code bei großen Projekten möglich
  • Performant
  • leicht anpassbar

Nachteile:

  • bei schlechter Codestruktur entsteht ein unübersichtlicher Code
  • immer noch möglich mehr Performance zu erreichen
  • größerer aufwand größere anpassungen zu machen

Beispiele

Low-Level und High-Level anhand eines Lichtes.

Low-Level:

Licht:=TLight.create;
Licht.enable:=True;
Licht.position:=vec3f(0,0,0);
...
Bumpmapping.lightpos:=Licht.position;
Bumpmapping.Normalmap:=Textures[0];
Bumpmapping.Heightmap:=Textures[1];
...
Objekt:=TObjekt.create;
Objekt.colors:=Bumpmapping.colors;
...
Objekt.draw;

High-Level:

Licht:=TLight.create(true,vec3f(0,0,0),true);
Objekt:=TObjekt.create(Cube,1,1,1,vec3f(0,0,0),True,True);
Objekt.draw;