Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi directX/DelphiX <--> OpenGL (https://www.delphipraxis.net/11013-directx-delphix-opengl.html)

Illuminator-23-5 29. Okt 2003 17:45


directX/DelphiX <--> OpenGL
 
Ich hab gehört, dass bestimmte DirectX-Befehle schneller verarbeitet werden können. Ich hab bis jetzt immer nur in OpenGL programmiert (zumindest versucht;))
kann man die Progs leicht von OpenGL auf DirectX/delphiX übersetzen? gibts da 'ne art vergleichtstabelle der Befehle?


worin liegt eigentlich der unterschied zwischen delphiX und directX? is delphiX directX in delphi oder isses doch net so einfach?

Daniel B 29. Okt 2003 17:50

Re: directX/DelphiX <--> OpenGL
 
Hi,

DirectX sind "nur" Units die man ganz normal bei den Uses einbinden muss. DelphiX hingegen ist eine Komponentensammlung.
Bei OpenGL muss man jeden "Pups" selber machen. Wenn Du irgendwo Licht und Schatten haben willst, musst Du es von Hand erst Programmieren, bei Delphi/DirectX musst Du sagen Licht an und Schatten dahin.

OregonGhost 30. Okt 2003 14:42

Re: directX/DelphiX <--> OpenGL
 
Ä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.

Mr_T 1. Nov 2003 10:19

Re: directX/DelphiX <--> OpenGL
 
Die einzige mir bekannte Situation, wo OpenGl leider verliert ist auf einigen KArten, welche leider nur einen unzureichenden OGl-treiber haben (z.b. Ati Rage 2) ... suf solchen Karten ist D3d deutlich flotter (deshalb gibts für solche Fälle auch OGl-treiber, welche über D3D emuliertr werden)

Die vorteile von OGl sehe ich darin, dass neue Graka-Feats viel schneller verfügbar sind und direkt über Extentions an gesprochen werden können, sobald der Treiber das erlaubt (bei D3D muss man erst auf das nächste Dx-Release warten) und in meinen Augen ist OGl einfacher :-)

OregonGhost 1. Nov 2003 14:15

Re: directX/DelphiX <--> OpenGL
 
Wie schon oft besprochen, finden viele Direct3D und viele OpenGL einfacher und besser und schöner... Das ist ja Geschmackssache.

Aber das mit den Extensions... Konsequenterweise muss man zum Beispiel, um Vertex- und Pixelshader nutzen zu können, die Erweiterungen von nVidia unterstützen. Oder aber die von ATi, die auf deren Karten natürlich besser abgestimmt sind. Und wenn es eine neue Hardwaregeneration gibt, kommen wieder neue Extensions dazu... Dadurch hat man einen Haufen von Extensions (es gibt über hundert), die man unterstützen muss, wenn man alles haben will. Direct3D hingegen implementiert (fast) alle Standards (und setzt diese teilweise), lange bevor die erste Hardware verfügbar ist. Beides letztendlich für Hobbyspieleentwickler relativ irrelevant ;c)

Fakt ist jedenfalls, dass außer id-Software kaum ein großer Spieleentwickler noch ausschließlich auf OpenGL setzt.

Das ist auch so ähnlich wie der Kampf zwischen nVidia und ATi: ersterer hat Verträge mit diversen Publishern abgeschlossen, dass das nVidia-Logo in deren Spielen erscheint ("the way it's meant to be played"), um den Eindruck der Optimierung auf nVidia-Hardware zu erwecken. Aber die meisten Direct3D9-Engines sind auf ATi-Karten einfach schneller.


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:17 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz