![]() |
openGL<-> direct 3D
wo ist eigentlich der unterschied zwischen openGL und direct 3D??
bringt das eine mehr leistung als das andere, oder ist das vom system abhängig was man benutzt? dumme frage, aber ich hab davon einfach keine ahnung, sorry. vielleicht hat jemand lust das zu beantworten. Gruß aus Ludwigsburg! der Julius |
Also was nun besser ist weiß ich nicht.
Aber der Hauptunterschied ist wohl, dass Direct X Dinge von Microsoft sind, während OpenGL Freeware ist. Das ist meiner Meinung nach der Hauptunterschied. Wenn du Graphik programmieren willst mit einer der 2 Bibliotheken dann empfehle ich diese Seite(ist sowohl Dx als auch OpenGL abgehandelt). Bin leider nich nicht dazu gekommen es zu lesen soll aber gut sein. http://www.husser.de/index.php?site=...=overview&id=2 Grüße, Harri |
Re: openGL<-> direct 3D
Zitat:
ob d3d oder openGL verwendet wird, bestimmt die im game verwendete grafikengine. d3d -> farcry openGL -> doom3 beides zur auswahl bietet z.b. die nascar racing-serie von papyrus, wobei hier openGL performanter ist. wie oben erwähnt und der name auch indiziert ist openGL 4 free. |
Moin
Zitat:
HalfLife, QuakeII etc. kannst Du unter D3D und oder OpenGL laufen lassen, der Engine ist das egal Der Grafikarten Treiber macht die Musik ! Auszug aus Wikipedia OpenGL ist eine Spezifikation für ein plattform- und programmiersprachenunabhängiges API (Application Programming Interface) zur Entwicklung von 3D-Computergrafik. Der OpenGL-Standard beschreibt etwa 250 Befehle, die die Berechnung komplexer 3D-Szenen in Echtzeit erlauben. Hersteller können jedoch auch eigene Erweiterungen definieren. OpenGL ist nur ein Standard, keine Implementierung. Wie das Betriebssystem die Befehle verarbeitet, ist Sache des Grafikkarten-Treibers, der die Befehle an die Grafikkarte weitergibt (Hardware- oder auch Direct Rendering) oder auf der CPU ausführt, wenn die Grafikkarte den entsprechenden Befehl nicht bearbeiten kann (Software Rendering). Die Implementierungen werden daher in der Regel vom Hersteller zur Verfügung gestellt, es gibt jedoch auch Open Source Varianten wie z.B. die Mesa-Bibliothek. OpenGL entstand ursprünglich aus dem von Silicon Graphics (SGI) entwickelten IRIS GL. Im so genannten Fahrenheit Projekt versuchten Microsoft und SGI ihre 3D-Standards zu vereinheitlichen, das Projekt wurde jedoch aufgrund finanzieller Schwierigkeiten auf Seiten von SGI abgebrochen. X-Plane setzt zB. auf OpenGL auf gruß mike |
Zitat:
Wie bereits gesagt, ist OpenGL plattformunabhängig, während es DirectX nur für Windows gibt. Und OpenGL ist Opensource. Ob man sich als Hersteller für DirectX oder OpenGL entscheidet, hängt vom Anwendungsgebiet der Applikation ab. Vermutlich lassen sich beim einen manche Dinge besser realisieren, als beim anderen. Aber wenn man Applikation für andere Bestriebssysteme als Windows entwickelt, kommt DirectX ja eh nicht in Frage. Diese Schnittstellen wurden eingeführt, um - naja, um eben eine gemeinsame Schnittstelle zu haben. Früher zu DOS-Zeiten mußte man für jede Grafikkarte, Soundkarte, etc. eigene Routinen programmieren. Vielleicht erinnern sich noch einige, dass man damals stets angeben mußte, welche Grafikkarte, Soundkarte, etc. man installiert hat. Und für jede Hardware, welche die Applikation unterstützen sollte, mußten die Entwickler eigene Routinen schreiben. Mit der Einführung von DirectX bzw. OpenGL brauchten die Entwickler in ihren Applikationen nur noch diese Schnittstelle anzusteuern. Diese geben die Befehle, welche sie von der Applikation erhalten, an den Treiber weiter, und der wiederum "übersetzt" das ganze dann für die jeweilige Hardware. Jetzt wo ich das schreibe, fällt mir auf: Warum gibt es eigentlich DirectX (oder OpenGL) UND den Treiber? Warum sendet die Schnittstelle ihre Befehle nicht direkt an die Hardware, sondern nimmt den Weg über den Treiber? Vielleicht weiß das ja jemand :confused:. |
Stichwort - Architektur der Grafikkarte,
das gab es mal bei Atari u. C-64 - da haben die Spiele den Grafik Chip direkt angesprochen. Stelle Dir vor - ein Spiel läuft nur auf der Grafik Karte X und nicht auf Y weil es keine (Schnittstellen) Standart(s) gibt Genau da setzten OpenGl und D3D auf, das ist für die Software Entwicklung ein großer Vorteil Im Prinzip müßte man also für jede Grafikkarte die Anwendungen individuell erstellen ( mein FS9 läuft auf ATI, aber nicht auf NVDIA Chip´s) Letztendlich entscheidet der Grafikkarten Treiber wesentlich über die Performance einer Anwendung gruß mike |
Zitat:
Aber meiner Meinung nach sind DX und OpenGL durchaus gleichwertig zu behandeln. Da kommt's wirklich auf die Launen des Programmierers drauf an für was er sich entscheidet. Grüße, Harri |
Zitat:
Wo jetzt die Stärken und Schwächen von DirectX und OpenGL liegen, weiß ich aber auch nicht. Vielleicht kann ja jemand anderes etwas darüber sagen. |
@Jens
"Warum sendet die Schnittstelle ihre Befehle nicht direkt an die Hardware, sondern nimmt den Weg über den Treiber?" Das ist schon immer so. Nur früher hat keiner den Treiber bemerkt, weil er entweder in der Hardware steckte (Chip) oder aber davor noch die Hardware so unflexibel war, dass sie nur für den entworfenen Zweck verwendbar war. Ein UND-Gatter braucht tatsächlich keinen Treiber. Mittlerweile ist die Hardware so komplex, dass schließlich der Treiber bestimmt, was mit der Hardware passiert. Mit einem Wort: Treiber dienen der flexiblen Anpassung der Hardware an den vorgesehenen Verwendungszweck. Und noch dies: Die CPU allein ist nicht viel wert, wenn nicht ein OS (Treiber?) bestimmt, was der Prozessor tun soll. Ich war mal überzeugt davon, dass Treiber nur das Unvermögen der Hardwarehersteller kaschiert die benötigten Funktionen richtig (fehlerfrei) in die Hardware zu implementieren. |
Zitat:
|
Schon, aber ich habe auch eingesehen, dass Treiber die Möglichkeit bieten Funktionen zu aktivieren, an die die Hardwareexperten zum Zeitpunkt der Konzeption noch gar nicht dachten.
Bei komplexen Chips ist der externe Treiber wohl die sinnvollste Lösung. Warum das allerdings bei einem Drucker o.ä. sein muss verstehe ich nach wie vor nicht. |
Druckertreiber
Treiber dienen immer dazu, Geräte voneinander zu entkoppeln. Wenn Daten von A nach B übertragen werden sollen (Programm -> Drucker, Joystick -> Programm, Programm -> Graphikkarte) dann ist es viel einfacher, einen Treiber zu verwenden, der dazwischen steht:
A -> T -> B Wenn es nämlich viele Geräte A1...An und viele Geräte B1...Bn gibt dann ist es viel einfacher A1 -> T A2 -> T ... An -> T und T -> B1 T -> B2 ... T -> Bn zu programmieren als A1 -> B1, A1 -> B2, ... A1 -> Bn A2 -> B1, A2 -> B2, ... A2 -> Bn ... An -> B1, An -> B2, ... An -> Bn Vielleicht können sich einige von euch noch an DOS, Atari ST, Amiga-Zeiten erinnern (von C64, CBM 8032, TSR-80, PET 2001 ganz zu schweigen :) ). Dort hat de facto jedes Programm eigene Druckertreiber gehabt. Man musste sowohl in WordPerfect als auch in Lotus 1-2-3 den angeschlossenen Drucker installieren. Für Programmierer ist es natürlich bei weitem einfacher, wenn man eine Seite des Dokuments an den Treiber schicken kann und der kümmert sich dann darum, wie sich die Papierqualität auswirkt oder ob der Drucker PostScript kann usw. Genauso bei der Graphikkarte. Der Programmierer möchte einen Kreis zeichnen. Ob der Kreis vom Treiber als Polygonzug mit Sinus und Cosinus gezeichnet wird oder ob in der Karte das Primitiv "Kreis" vorhanden ist, fällt nicht mehr auf (außer in der Zeichengeschwindigkeit). Und ob an einem Input-Gerät, das die Befehle "links, rechts, oben, unten" liefert ein Joystick, Gamepad, Tastatur oder VR-Anzug mit Raum-Tracker angeschlossen ist, ist belanglos. Alex |
Hallo Alex,
ist schon okay was du sagst, nur die Schnittstelle könnte m.E. im Drucker sein. Der Drucker selbst soll entscheiden (mit der Software, die drucken will) was und wie zu drucken ist. Und nicht, dass ich zusätzlich 20 MB Software installieren muss, die nur für den Drucker da ist. |
Zitat:
Bei "intelligenten" Druckern ist das ja der Fall. Ich denke da z.B. an gute PostScript-Drucker. Die haben ja einen PostScript-Interpreter oder sogar PDF-Interpreter in ihrer Firmware eingebaut. Dort braucht das Betriebssystem bzw. der Treiber eigentlich gar nichts mehr tun als die Datei oder die Ausgabe des Programms direkt an den Drucker zu senden. Hängt der Drucker im Netzwerk dann wird einfach alles an die entsprechende IP-Adresse geschickt. Über die 20 MB Software ärgere ich mich auch. Meistens sind das nämlich ganz unnötige Dinge. Da werden Hintergrundprozesse installiert, nur, um dauernd über den Tintenstand informiert zu werden. Bei den sog. WinPrint-Druckern (wo eine Tintenpatrone mehr kostet als der Drucker :D ) muss allerdings mehr installiert werden weil diese Drucker überhaupt keine "Eigenintelligenz" besitzen. Da muss der Host-Rechner die Aufbereitung der Druckdaten übernehmen und dementsprechend groß ist der Treiber. |
-
|
" - "
:lol: Übrigens, Mietzekatzen mag ich auch sehr ... |
| Alle Zeitangaben in WEZ +2. Es ist jetzt 11:38 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
© 2009 FSL Verlag