DirectX lernen
-
D3D10/11 sind im Gegensatz zu D3D9 anders was rein die API angeht. Die Grundprinzipien sind aber natürlich gleich. Wenn du D3D9 wirklich beherrscht geht der Umstieg zu D3D11 praktisch von allein da D3D11 einfach die logische Weiterentwicklung von D3D9 ist. D3D10 kannst du eigentlich ignorieren, es gibt keinen einzigen Grund warum man heute noch D3D10 würde verwenden wollen. D3D11 kann in wichtigen Bereichen mehr als D3D10, läuft im Gegensatz zu D3D10 auch auf D3D9 Hardware und bietet sogar auf D3D10 Hardware Features die mit D3D10 nicht benutzbar sind. Die Frage ist also nur D3D9 oder D3D11. Und damit reduziert sich das ganze auf Windows XP Support Ja oder Nein? D3D11 läuft nur ab Vista aufwärts, wenn du also XP noch Unterstützen willst dann wirst du wohl oder übel D3D9 verwenden müssen. Ansonsten ist D3D11 die API der Wahl. Für Anfänger ist D3D9 evtl. auch noch interessant da es imo eine um einiges flachere Lernkurve hat als D3D11.
-
Ok, danke für diese Einschätzung. Ich habe mir mal das DX SDK gesaugt, und werde wohl erstmal mit DX9 anfangen, die DX11 Shader sind mir suspekt
Falls jemand da gute Tutorials anzubieten hat, immer her damit, ich lese mich momentan eigentlich nur durch die SDK Samples.
-
dot schrieb:
Die Frage ist also nur D3D9 oder D3D11. Und damit reduziert sich das ganze auf Windows XP Support Ja oder Nein? D3D11 läuft nur ab Vista aufwärts, wenn du also XP noch Unterstützen willst dann wirst du wohl oder übel D3D9 verwenden müssen. Ansonsten ist D3D11 die API der Wahl.
Wer Windows XP noch unterstützen will, der benutzt heute für die 3d Grafik besser OpenGL 4.x, denn OpenGL läuft auf Windows XP UND den moderneren Nachfolgern aber bietet auch technisch das, was D3D11 bietet.
Mit OpenGL 4.x ist man also in beiden Welten Zuhause. Moderne API und trotzdem alle Windows Versionen ab AFAIK mind. Win 2000.
-
Ogl schrieb:
Wer Windows XP noch unterstützen will, der benutzt heute für die 3d Grafik besser OpenGL 4.x, denn OpenGL läuft auf Windows XP UND den moderneren Nachfolgern aber bietet auch technisch das, was D3D11 bietet.
Mit OpenGL 4.x ist man also in beiden Welten Zuhause. Moderne API und trotzdem alle Windows Versionen ab AFAIK mind. Win 2000.OpenGL 4.x ist zwar Featuremäßig nun annähernd (afaik nicht ganz) auf Augenhöhe mit D3D11, von einer "modernen API" ist es aber meilenweit entfernt wenn du mich fragst. Ein weiteres Problem mit OpenGL ist die Tatsache dass Intel Grafikkarten furchtbar schlechten OpenGL Support haben, wenn du auch auf Intel Karten mit deiner Performance in den Bereich interaktiver Frameraten vorstoßen willst ist Direct3D die einzige Option. Daran ist natürlich nicht OpenGL schuld sondern Intel, aber Intel GPUs sind nunmal in schwächeren Computern (Laptops, Netbooks) sehr verbreitet. Und wer Windows XP unterstützen will zielt wohl auf dieses Segment ab...
-
Ogl schrieb:
dot schrieb:
Die Frage ist also nur D3D9 oder D3D11. Und damit reduziert sich das ganze auf Windows XP Support Ja oder Nein? D3D11 läuft nur ab Vista aufwärts, wenn du also XP noch Unterstützen willst dann wirst du wohl oder übel D3D9 verwenden müssen. Ansonsten ist D3D11 die API der Wahl.
Wer Windows XP noch unterstützen will, der benutzt heute für die 3d Grafik besser OpenGL 4.x, denn OpenGL läuft auf Windows XP UND den moderneren Nachfolgern aber bietet auch technisch das, was D3D11 bietet.
Mit OpenGL 4.x ist man also in beiden Welten Zuhause. Moderne API und trotzdem alle Windows Versionen ab AFAIK mind. Win 2000.Wer sich ne DX11 Karte kauft, wird wohl kaum auf XP hocken^^.
-
OT: Davon abgesehen gibt es sowieso keinen Grund mehr auf XP zu hocken. Update und Treiberunterstützung werden runtergefahren, Software richtet sich an Windows 7 aus und und und. Ich denke aber auch das sich die Wahl der Schnittstelle an den Features orientieren sollten bzw. am Problem und nicht unbedingt an dem was alles möglich ist.
MkG Nas
-
dot schrieb:
OpenGL 4.x ist zwar Featuremäßig nun annähernd (afaik nicht ganz) auf Augenhöhe mit D3D11,
Was fehlt denn deiner Meinung nach?
von einer "modernen API" ist es aber meilenweit entfernt wenn du mich fragst.
Was ist denn für dich eine moderne API?
Etwa eine API die in C++ geschrieben wurde?Wenn ja, dann ist das ein sehr schlechtes Argument, denn OpenGL ist bewußt in C geschrieben weil OpenGL als Industriestandard nunmal von allen Programmiersprachen benutzt werden können soll und eine API in der Programmiersprache C bietet hier eben die beste Kompatibilität.
C++ kann das nicht bieten, deswegen verwendet man bei OpenGL ganz bewußt kein C++.Ansonsten ist OpenGL für eine C API sehr modern, ich wüßte nicht, warum das altbacken sein soll.
Ein weiteres Problem mit OpenGL ist die Tatsache dass Intel Grafikkarten furchtbar schlechten OpenGL Support haben, wenn du auch auf Intel Karten mit deiner Performance in den Bereich interaktiver Frameraten vorstoßen willst ist Direct3D die einzige Option. Daran ist natürlich nicht OpenGL schuld sondern Intel, aber Intel GPUs sind nunmal in schwächeren Computern (Laptops, Netbooks) sehr verbreitet. Und wer Windows XP unterstützen will zielt wohl auf dieses Segment ab...
Wer 3d nutzen will, der kauft sowieso keine Intel Grafikkarte.
Dafür waren Intel Grafikchips noch nie gut geeignet und die Treiber waren schon immer schlecht, auch unter Direct3d sind die Intel Treiber sehr schlecht, wenn man sie mit der Qualität der Treiber von ATI oder NVidia vergleicht.
Außerdem kann man mit OpenGL das Programm auch für Mac OS X und Linux entwickeln, mit Direct3d geht das nicht.
-
Scorcher24 schrieb:
Wer sich ne DX11 Karte kauft, wird wohl kaum auf XP hocken^^.
Ich habe eine Geforce 450 GTS, die ist prinzipiell DX11 fähig, aber ich nutze noch Windows XP weil ich eben auch OpenGL nutze und Windows 7 daher noch nicht brauche.
-
Ogl schrieb:
Scorcher24 schrieb:
Wer sich ne DX11 Karte kauft, wird wohl kaum auf XP hocken^^.
Ich habe eine Geforce 450 GTS, die ist prinzipiell DX11 fähig, aber ich nutze noch Windows XP weil ich eben auch OpenGL nutze und Windows 7 daher noch nicht brauche.
Was ne Verschwendung...
-
Scorcher24 schrieb:
Ogl schrieb:
Scorcher24 schrieb:
Wer sich ne DX11 Karte kauft, wird wohl kaum auf XP hocken^^.
Ich habe eine Geforce 450 GTS, die ist prinzipiell DX11 fähig, aber ich nutze noch Windows XP weil ich eben auch OpenGL nutze und Windows 7 daher noch nicht brauche.
Was ne Verschwendung...
Da wird gar nichts verschwendet!
Mit OpenGL 4.0 kann ich die Grafikkarte voll ausreizen und das gilt sowohl Featuremäßig als auch Leistungsmäßig.
Also, was willst du mir sagen?
Das du ein Gamer bist, der nur an nagelneue Computerspiele, DirectX 11 und Windows 7 denkt und nur deswegen gute Grafikkarten kauft?
-
Naja, wenn ich ne DX11 Graka hätte, würde ich auch meine Games mit DX11 zocken wollen. Grade auf das erscheinende BF3 schielend würde Vista oder 7 da schon seinen Nutzen haben.
-
Ogl schrieb:
dot schrieb:
OpenGL 4.x ist zwar Featuremäßig nun annähernd (afaik nicht ganz) auf Augenhöhe mit D3D11,
Was fehlt denn deiner Meinung nach?
Es gibt nun zwar endlich Program Binaries, da die jetzt aber erst wieder maschinenspezifisch gemacht wurden sind sie nichtmal annähernd so nützlich wie das was es in Direct3D seit nun 10 Jahren gibt.
Wie schauts aus mit Multithreaded Rendering?
Hast du schonmal OpenGL Anwendungen geschrieben die mit mehreren Displays und Grafikkarten rendern?
Append Buffer gibts nun ja nun offenbar endlich auch in OpenCL aber afaik gibt es keine Möglichkeit in OpenGL Shadern auf Compute-Funktionalität zuzugreifen, wie z.B. ein Fragment Shader der Scattered Writes in einen GPU Buffer durchführt, was in D3D11 alles kein Problem ist und von einigen fortgeschrittenen Techniken benutzt wird (z.B. ein Fragment-Level Depth-Sort für order indenpendent Transparency).Ja, wenn es um die großen Punkte auf der New Features Liste geht haben wir nun Gleichstand. Aber wenn man etwas genauer schaut eben doch nicht.
Ogl schrieb:
von einer "modernen API" ist es aber meilenweit entfernt wenn du mich fragst.
Was ist denn für dich eine moderne API?
Etwa eine API die in C++ geschrieben wurde?Mit C vs C++ hat das nichts zu tun. D3D basiert übrigens auf COM und kann daher auch von allen möglichen Sprachen (ja, auch C) benutzt werden, aber das nur nebenbei.
Im OpenGL Modell gibt es einfach einen riesigen globalen State. In D3D11 ist praktisch alles an State irgendwie gekapselt. Selbst wenn ich irgendwelche Objekte manipulieren will muss ich dies in OpenGL wegen des komischen Objektmodells über den globalen State erledigen. Ich kann nicht einfach den Texturfilter für Textur xyz setzen. Ich muss erst Textur xyz als aktuelles Texturobjekt in meinen globalen State binden und kann erst dann was damit machen. Die Erzeugung der Objekte ist durch dieses System mit den names auf mehrere Funktionen verteilt. Ich muss mir z.B. erst über glGenTextures() einen name holen diesen Binden und erzeuge erst dann mit glTexImage2D() mein eigentliches Objekt. Das ist nicht nur rein äußerlich unnötig komplex sondern auch für die Implementierung darunter sodass dieses ganze Bind Zeug unter Umständen sogar zu Performance-relevantem Overhead wird. Nicht umsonst bietet NVIDIA über eine Extension eine Bindless API an.
Ogl schrieb:
Wer 3d nutzen will, der kauft sowieso keine Intel Grafikkarte.
Dafür waren Intel Grafikchips noch nie gut geeignet und die Treiber waren schon immer schlecht, auch unter Direct3d sind die Intel Treiber sehr schlecht, wenn man sie mit der Qualität der Treiber von ATI oder NVidia vergleicht.
Außerdem kann man mit OpenGL das Programm auch für Mac OS X und Linux entwickeln, mit Direct3d geht das nicht.Die Portabilität ist imo das einzige Argument das für OpenGL spricht.
Der Direct3D Support von Intel ist eben dramatisch besser was die Performance angeht (wir reden hier nicht von ein paar FPS sondern unter Umständen von benutzbar vs. unbenutzbar). Natürlich liegt das nicht an OpenGL an sich sondern an Intel, trotzdem etwas was man bedenken sollte. Und dass sich Leute die 3D nutzen wollen keine Intel GPUs kaufen kann ich leider aus leidvoller Erfahrung nicht bestätigen, du glaubst gar nicht was ich da schon erlebt hab. Außerdem sind ja nicht alles Gamer und alle 3D Anwendungen gleich extrem professionelle High Performance Sachen wo man eben evtl. doch will dass es auch auf Mamis Laptop oder unterwegs am Netbook, der ja eigentlich eine voll D3D10 fähige GPU hätte, so gut wie möglich läuft...
-
Scorcher24 schrieb:
Naja, wenn ich ne DX11 Graka hätte, würde ich auch meine Games mit DX11 zocken wollen. Grade auf das erscheinende BF3 schielend würde Vista oder 7 da schon seinen Nutzen haben.
Ich sag ja du bist ein Gamer. Ich habe aber überhaupt kein DX11 Spiel, was soll ich da also zocken?
Und die Spiele die ich habe, die laufen unter WinXP sogar besser, unter Windows 7 laufen manche von denen gar nicht.
Windows 7 zu kaufen wäre also Verschwendung von Geld.
-
dot schrieb:
Die Portabilität ist imo das einzige Argument das für OpenGL spricht.
Der Direct3D Support von Intel ist eben dramatisch besser was die Performance angeht (wir reden hier nicht von ein paar FPS sondern von wirklich benutzbar vs. unbenutzbar). Natürlich liegt das nicht an OpenGL an sich sondern an Intel, trotzdem etwas was man bedenken sollte.Und wenn du deine Anwendungen nun für DX11 schreibst, denkst du dann, daß der Treibersupport bei Intel für OpenGL besser wird?
Warum sollte Intel Geld in die Treiber für OpenGL stecken, wenn Leute wie du alle Anwendungen sowieso für DX11 schreiben?
-
Ogl schrieb:
dot schrieb:
Die Portabilität ist imo das einzige Argument das für OpenGL spricht.
Der Direct3D Support von Intel ist eben dramatisch besser was die Performance angeht (wir reden hier nicht von ein paar FPS sondern von wirklich benutzbar vs. unbenutzbar). Natürlich liegt das nicht an OpenGL an sich sondern an Intel, trotzdem etwas was man bedenken sollte.Und wenn du deine Anwendungen nun für DX11 schreibst, denkst du dann, daß der Treibersupport bei Intel für OpenGL besser wird?
Warum sollte Intel Geld in die Treiber für OpenGL stecken, wenn Leute wie du alle Anwendungen sowieso für DX11 schreiben?
Nachtrag:
Denkt doch nur mal an ID Software.
Nur wegen ID Software können es die Gamer verdanken, daß sich die Grafikkartenhersteller bezügl. ihrer Treiber für OpenGL und Spiele in der Vergangenheit bemüht haben.
Ohne ID Software hätten wohl alle viel früher auf Direct3d gesetzt.
-
Das kann man so nicht sagen.
Wie schon öfters von mir im Forum angeführt, haben viele moderne Spiele einen OpenGL-Renderpfad. Vor allem Blizzards und Valves Spiele.
Bei Valve kannst bei allen Spielen -gl als Parameter angeben. Bei Blizzard geht es zumindest bei WoW, bei SCII keine Ahnung.
-
Schön dass du ID Software ins Spiel bringst, ich hab mich schon gefragt wie lang es dauern wird. Vermutlich hast du noch nicht gehört dass John Carmack, nachdem er C abgeschworen hat mittlerweile auch was Direct3D angeht meiner Meinung ist: http://www.bit-tech.net/news/gaming/2011/03/11/carmack-directx-better-opengl/1
-
Ogl schrieb:
Und wenn du deine Anwendungen nun für DX11 schreibst, denkst du dann, daß der Treibersupport bei Intel für OpenGL besser wird?
Ich kann mit D3D bessere Treiber und eine weitaus bessere API verwenden, warum sollte mich das also interessieren!? Ich würd mir eher Sorgen machen dass der D3D Support schlechter wird wenn ich meine Anwendungen nicht für D3D schreiben würde
Ogl schrieb:
Warum sollte Intel Geld in die Treiber für OpenGL stecken, wenn Leute wie du alle Anwendungen sowieso für DX11 schreiben?
ka, sag dus mir
-
dot schrieb:
Schön dass du ID Software ins Spiel bringst, ich hab mich schon gefragt wie lang es dauern wird. Vermutlich hast du noch nicht gehört dass John Carmack, nachdem er C abgeschworen hat mittlerweile auch was Direct3D angeht meiner Meinung ist: http://www.bit-tech.net/news/gaming/2011/03/11/carmack-directx-better-opengl/1
Nun, der Artikel zeigt doch, daß Journalisten nur die Hälfte verstehen und dem interviewten dann die Wörter falsch in den Mund legen oder wichtige Dinge einfach wieder weglassen.
Gültig ist damit eigentlich nur das kursiv gedruckte:
It is really just inertia that keeps us on OpenGL at this point,' Carmack told us. He also explained that the developer has no plans to move over to Direct3D, despite its advantages.
'OpenGL still works fine,' said Carmack, 'and we wouldn’t get any huge benefits by making the switch, so I can’t work up much enthusiasm for cleaning it out of our codebase
Er wechselt also nicht zu DX11.
Und der Rest vom Artikel ist ebenfalls Müll, weil OpenGL 4 ja noch sehr neu ist und es daher seine Zeit braucht, bis Engine Hersteller auch wirklich ne ordentliche Engine bieten können, die OpenGL auch nutzen.
Wenn der Artikel also schreibt, daß OpenGL in den Spielen verdrängt wird, weil es nicht mehr DX mithalten könne, dann liegt das daran, daß es hier noch um alte Fakten geht, nämlich um OpenGL 2.0 und vorher.
-
dot schrieb:
Ich kann mit D3D bessere Treiber und eine weitaus bessere API verwenden, warum sollte mich das also interessieren!?
Der TS will Windows XP verwenden, also ist OpenGL 4.x die erste Wahl.
Das Intel Problem kann man ignorieren.