Einzelnen Beitrag anzeigen

OregonGhost

Registriert seit: 8. Jun 2002
Ort: Lübeck
1.216 Beiträge
 
Delphi 3 Professional
 
#3

Re: directX/DelphiX <--> OpenGL

  Alt 30. Okt 2003, 15:42
Äh... Bei OpenGL macht man doch auch nur Licht an, und die Grafikkarte berechnet das Licht, und dass man Schatten in Direct3D dabei hat, ist mir auch neu...
Man hat lediglich in Direct3D eine deutlich größere Utility-Bibliothek mitgeliefert (heißt, man muss halt nicht so viel selbst machen wie z.B. Texturen laden, und was man macht, geht häufig über überladene Operatoren anstelle von Funktionsaufrufen), und das Programmierparadigma ist anders.

Da OpenGL und Direct3D (erwähnte ich den Unterschied zwischen DirectX und Direct3D? DirectX liefert nämlich alle für Spieleprogrammierung notwendigen Komponenten mit, OpenGL hingegen nur Grafik) die gleiche Hardware ansteuern, gibt es für die meisten Befehle Äquivalente in beiden APIs. Oftmals sind sogar die Namen ähnlich. Der wesentliche Unterschied ist wohl, dass OpenGL eine "state machine" ist, während Direct3D auf "Geräten" aufbaut, mit denen man arbeitet. Dadurch hat man eine exaktere Kontrolle darüber, was welche Grafikkarte wann wie macht bzw. man weiß es, auch ohne es ausprobieren zu müssen. In OpenGL musst du z.B. einfach probieren eine Textur mit 2048x2048 zu erstellen, wenn es nicht geht, musst du es nochmal probieren. In Direct3D fragst du die Grafikkarte(n) vorher, was für Texturgrößen sie verarbeiten können.

Ein (theoretischer) Geschwindigkeitsvorteil von Direct3D liegt darin, dass es dir einige einfache Wege, etwas auf den Bildschirm zu bringen, verbietet, während du in OpenGL so vorgehen kannst, wie du willst (also nicht notwendigerweise mit maximaler Geschwindigkeit). Die "schnellen" Wege stehen in den meisten Fällen aber auch in OpenGL zur Verfügung, denn letztendlich sind beide APIs ja nur Kapselungen der Hardware, die ja den Löwenanteil der Arbeit macht.
Oregon Ghost
---
Wenn NULL besonders groß ist, ist es fast schon wie ein bisschen eins.
  Mit Zitat antworten Zitat