DirectX 10 oder 11 (SDK)

Für Fragen zu Grafik APIs wie DirectX und OpenGL sowie Shaderprogrammierung.
Antworten
IlikeMyLife
Establishment
Beiträge: 212
Registriert: 08.05.2011, 09:59
Benutzertext: Feel Free

DirectX 10 oder 11 (SDK)

Beitrag von IlikeMyLife »

Hallo,

ich habe scheinbar viele triviale fragen, so vielleicht auch diese:

Ich habe eine NVIDIA GeForce GT 320 in meinem derzeitigen Rechner.

laut Merkmale des Herstellers
http://www.nvidia.de/object/product_gef ... 20_de.html

wird mir nur DX 10 geboten...

Angabe des Herstellers:
Microsoft® DirectX® 10.1 Unterstützung
DirectX 10.1 Grafikprozessor mit Unterstützung für Shader Model 4.1.

Sollte ich nun lieber beim DX 10 SDK erstmal bleiben bis es in ferner zukunft eine bessere GraKa
für meinen Rechner gibt oder lieber gleich das 11er SDK nutzen und die Funktionalität auf
die 10er beschränken in der Programmierung?


In eigener Sache aber passt zum Thema:
@ Krishty:
Du hattest dich anfang letzten Jahres mal da rüber ausgelassen, dass das 11er lieber Aussagen beim debuggen
schluckt, als sie wie im 10er dem entwickler mit teilen zu wollen..
hat das 11er Paket mitlerweile eine therapie hinter sich und öffnet sich endlich dem programmierer?
Benutzeravatar
dot
Establishment
Beiträge: 1746
Registriert: 06.03.2004, 18:10
Echter Name: Michael Kenzel
Kontaktdaten:

Re: DirectX 10 oder 11 (SDK)

Beitrag von dot »

Es gibt kein 10er oder 11er SDK. Es gibt nur das aktuelle und die älteren SDKs. Im aktuellen SDK ist alles drin was du brauchst um für D3D9, 10 und 11 zu entwickeln. Die Frage ob D3D10 oder 11 erübrigt sich imo. D3D11 kann alles was 10 kann und viel mehr und läuft sogar noch auf D3D9 Hardware. Wenn dann würde man sich vielleicht für einen Moment überlegen ob man XP unterstützen will, in dem Fall wird man wohl D3D9 oder OpenGL verwenden wollen. Ansonsten D3D11.
Benutzeravatar
Krishty
Establishment
Beiträge: 8355
Registriert: 26.02.2009, 11:18
Benutzertext: state is the enemy
Kontaktdaten:

Re: DirectX 10 oder 11 (SDK)

Beitrag von Krishty »

Richtig.

Programmier Direct3D 11 und beschränk die Funktionalität auf 10.1 – das machst du, indem du D3D11CreateDevice() D3D_FEATURE_LEVEL_10_1 übergibst. Das beschränkt sich wohlgemerkt nur auf die Hardware-Features — du hast also keine Tesselation mehr, keine doubles in Shadern und Compute Shaders nur in stark begrenztem Umfang. Allerdings stehen dir API-Features wie Command Lists weiterhin zur Verfügung. Wenn man die gratis einstreichen kann, sollte man es auch tun.

Es wäre auch kein Beinbruch, bei Direct3D 10 zu bleiben – Direct3D 11 auf Feature Level 10.1 unterscheidet sich von Direct3D 10.1 eigentlich nur durch das Context-Modell (du sendest Befehle nicht mehr global an die GPU, sondern in einem Kontext), die 10_1 statt der 11 in Objektnamen und die genannten API-Features, die du verpasst. Ich gehe auch davon aus, dass 10 & 10.1 ziemlich schnell in der Versenkung verschwinden werden und 11 über die nächsten Jahre der Standard sein wird. Außerdem kannst du deine „Portierung“ auf die herbeigesehnte neue GraKa mit 11 darauf reduzieren, einfach oben erwähntes D3D_FEATURE_LEVEL_10_1 durch D3D_FEATURE_LEVEL_11 zu ersetzen.

Übrigens sagt einer der DirectX-Entwickler so ziemlich das Gegenteil – um mit D3D 11 anzufangen, sollte man sich zuerst D3D 10 anschauen. Ich denke, dass das nur über den Umstand hinwegtäuschen soll, dass es kaum Direct3D 10-Tutorials gibt und dass sich erst recht niemand die Mühe macht, was zu 11 zu schreiben und die auch Wichtigeres zu tun haben, als dem SDK noch mehr Einsteigerkram beizulegen. Aber – wie gesagt – abgesehen von der Initialisierung und dass bei D3D 11 alles durch ein Kontext-Objekt läuft ist fast alles, was du in D3D 10 machst, durch Einsetzen der 11 im Objekt- oder Funktionsnamen identisch. Die Tutorials, die du zu 10 findest, sollten also zum Großteil 1:1 auf 11 übertragbar sein.
IlikeMyLife hat geschrieben:In eigener Sache aber passt zum Thema:
@ Krishty:
Du hattest dich anfang letzten Jahres mal da rüber ausgelassen, dass das 11er lieber Aussagen beim debuggen
schluckt, als sie wie im 10er dem entwickler mit teilen zu wollen..
hat das 11er Paket mitlerweile eine therapie hinter sich und öffnet sich endlich dem programmierer?
Seit letztem Jahr ist kein neues DirectX-SDK erschienen (und das nächste wird wohl auch noch auf sich warten lassen), darum hat sich nichts geändert. Ja, es kann wirklich nervig sein, wenn da nichts kommt. Ich glaube, der Grund ist, dass out-of-Bounds-Zugriffe auf Vertex-Buffer und ähnliche Ressourcen seit Direct3D 10 wohldefiniert sind (geben immer 0 zurück), dass das tatsächlich aktiv ausgenutzt wird (tue ich auch) und dass sich darum viele der Warnungen als False Positives herausgestellt haben. Keine Ahnung, ob sich da noch was tun wird. Aber es ist jetzt nicht so, als ob garnichts mehr ausgespuckt würde. Man kann durchaus damit arbeiten.

Gruß
seziert Ace Combat, Driver, und S.T.A.L.K.E.R.   —   rendert Sterne
Benutzeravatar
Schrompf
Moderator
Beiträge: 5186
Registriert: 25.02.2009, 23:44
Benutzertext: Lernt nur selten dazu
Echter Name: Thomas
Wohnort: Dresden
Kontaktdaten:

Re: DirectX 10 oder 11 (SDK)

Beitrag von Schrompf »

Moment mal kurz. Hab ich das richtig verstanden, dass ich die schöne neue DX11-API benutzen könnte, selbst wenn ich Grafikkarten mit Shadermodell 2.0 und aufwärts unterstützen muss? Mit DX9-Hardware?
Früher mal Dreamworlds. Früher mal Open Asset Import Library. Heutzutage nur noch so rumwursteln.
Benutzeravatar
dot
Establishment
Beiträge: 1746
Registriert: 06.03.2004, 18:10
Echter Name: Michael Kenzel
Kontaktdaten:

Re: DirectX 10 oder 11 (SDK)

Beitrag von dot »

Krishty hat geschrieben:Ich gehe auch davon aus, dass 10 & 10.1 ziemlich schnell in der Versenkung verschwinden werden und 11 über die nächsten Jahre der Standard sein wird.
Ja ich denk auch dass D3D11 uns die nächsten paar Jahre erhalten bleiben wird, vielleicht sehen wir mal ein 11.1 mit HLSL 5.1 oder so, aber ansonsten ist die API wohl erstmal ziemlich zukunftssicher. Was D3D10 angeht bin ich jedenfalls der Meinung dass das schon am Tag da D3D11 rauskam in der Versenkung verschwunden ist ;)
Schrompf hat geschrieben:Moment mal kurz. Hab ich das richtig verstanden, dass ich die schöne neue DX11-API benutzen könnte, selbst wenn ich Grafikkarten mit Shadermodell 2.0 und aufwärts unterstützen muss? Mit DX9-Hardware?
Ja!? XP fällt damit eben flach, aber D3D11 läuft auch auf Shader Model 2.0 Hardware...
Benutzeravatar
Krishty
Establishment
Beiträge: 8355
Registriert: 26.02.2009, 11:18
Benutzertext: state is the enemy
Kontaktdaten:

Re: DirectX 10 oder 11 (SDK)

Beitrag von Krishty »

Natürlich nur mit entsprechenden Einschränkungen was mögliche Formate, Render-Targets, Anti-Aliasing, Shader-Typen, Rechenpräzision etc. angeht. Und du bekommst wieder Caps, die du testen musst (wenngleich auch deutlich weniger als in D3D 9).
seziert Ace Combat, Driver, und S.T.A.L.K.E.R.   —   rendert Sterne
Benutzeravatar
Schrompf
Moderator
Beiträge: 5186
Registriert: 25.02.2009, 23:44
Benutzertext: Lernt nur selten dazu
Echter Name: Thomas
Wohnort: Dresden
Kontaktdaten:

Re: DirectX 10 oder 11 (SDK)

Beitrag von Schrompf »

Achso, stimmt. Die aktuelle Steam Hardware-Umfrage besagt, dass nur noch etwa 20% ein Pre-Vista-Windows haben. Damit bleiben nur noch zwei Fragen:

a) Bin ich gewillt, 20% der Zielgruppe zu verlieren?
Gute Frage. Rein gefühlsmäßig ja, aber wenn ich ernsthaft überlege, Mac&Linux zu unterstützen, die mit vielleicht 6% dabei sind, wären 20% Verlust eine stumpfsinnige Entscheidung.

b) Lohnt sich der Umstieg?
Unsere DX9-Tech ist ausgereift und erprobt. DX11 hätte erstmal reinen Geek-Faktor ohne Verbesserungen für das Endprodukt. Ich muss mich wohl der Erkenntnis stellen, dass die Portierung ein reines Hobby wäre.

Gut. Private Entscheidung: es bleibt bei DX9. Für die Splitterwelten später stellt sich die Frage erneut, da lohnen sich dann auch die DX11-Features für potentiell bessere Performance und ein paar schicke Zusatzeffekte.
Früher mal Dreamworlds. Früher mal Open Asset Import Library. Heutzutage nur noch so rumwursteln.
Benutzeravatar
Krishty
Establishment
Beiträge: 8355
Registriert: 26.02.2009, 11:18
Benutzertext: state is the enemy
Kontaktdaten:

Re: DirectX 10 oder 11 (SDK)

Beitrag von Krishty »

Da ihr bei Splitterwelten CPU-limitiert seid (du hast ja mal erwähnt, dass ihr einen Großteil der Zeit in Draw-Calls verbringt), würde es sich dort ganz besonders lohnen. Ist ja nicht nur, dass D3D11-Aufrufe weniger kosten – Direct3D9 wird seit Windows 7 nur noch per D3D 11 emuliert, die Indirektion entfiele also.
seziert Ace Combat, Driver, und S.T.A.L.K.E.R.   —   rendert Sterne
IlikeMyLife
Establishment
Beiträge: 212
Registriert: 08.05.2011, 09:59
Benutzertext: Feel Free

Re: DirectX 10 oder 11 (SDK)

Beitrag von IlikeMyLife »

@D3D9, 10 oder 11:
Dann hat sich ja für mich die Frage geklährt :-) D3D11 mit Feature-Level-Angabe :-)
Was ich allerdings grad interessant finde ist die Möglichkeit von D3D_FEATURE_LEVEL_10_1.
Hat evtl, einer damit bereits Erfahrungen mehrere Feature-Level innerhalb einer Software zu behandeln?
Aufwärtskompatibilität hin oder her... Ich denke nur grade daran, falls die Software auf schwächeren Systemen Probleme macht,
dem entsprechend ein niedrigeres Feature-Level nebenbei laufen zu haben auf das im Notfall geswitcht werden kann.
Oder sind diese auch Abwärtskompatibel und wissen, wie zu reagieren ist.

@Das sich da noch nichts getan hat :-/ :
Naja... das werd ich ja noch feststellen wenn es so weit ist... Ansonsten gibt es eine Erweiterung für den Jammer-Thread :-)

@Zielgruppe:
Es handelt sich bei mir um ein HOBBY, ich kann auch auf die gesamten 26 Prozent verzichten. Wenn ich mir jetzt noch gedanken um ältere Systeme, als mein derzeitig aktuelles zu machen, komme ich ja zu gar nichts mehr. Und ich habe nun mal einen Win7 und weder einen XP oder Linux auf dem ich Proggen möchte.
Benutzeravatar
Krishty
Establishment
Beiträge: 8355
Registriert: 26.02.2009, 11:18
Benutzertext: state is the enemy
Kontaktdaten:

Re: DirectX 10 oder 11 (SDK)

Beitrag von Krishty »

IlikeMyLife hat geschrieben:Was ich allerdings grad interessant finde ist die Möglichkeit von D3D_FEATURE_LEVEL_10_1.
Hat evtl, einer damit bereits Erfahrungen mehrere Feature-Level innerhalb einer Software zu behandeln?
Eine frühe Version meiner Sternendemo lief per Direct3D 11 auf 10.1er- und 11er-Hardware (weil ich damals noch eine 10.1er-HD4850 hatte und meine jetzige 11er-HD5770 bereits in Aussicht war). Ich habe es später rausgeschmissen, weil meine Postprocessing-Effekte ohne Compute Shader, also 11, nicht realisierbar waren und die 10.1-Version ohne diese Effekte nicht mehr sinnvoll war.
IlikeMyLife hat geschrieben:Aufwärtskompatibilität hin oder her... Ich denke nur grade daran, falls die Software auf schwächeren Systemen Probleme macht, dem entsprechend ein niedrigeres Feature-Level nebenbei laufen zu haben auf das im Notfall geswitcht werden kann.
Oder sind diese auch Abwärtskompatibel und wissen, wie zu reagieren ist.
Ich hatte beim 11er-Level automatisch doppelt so gutes Antialiasing genommen, weil 11er-Chips üblicherweise mehr Rechenleistung haben … du kannst natürlich auch auf 11er-Karten noch auf 10.1-Level zurückschalten und die schwache 11er-Karte dann mit 10.1-Anforderungen laufen lassen.

Allerdings gibt es, insbesondere im Bereich von Postprocessing und Physik, Situationen, in denen 11 schneller ist als 10. Wenn die 11er-Karte dann schon zu schwach ist wird es nichts bringen, zu 10.1 zurückzuschalten. Darum würde ich dem User ganz klassische Optionen zur Auswahl der Grafikeinstellungen überlassen und das nicht nur über das Feature-Level regeln. Zumal ein 11er-Chip nicht automatisch schneller ist als ein 10.1er (könnte ja ein Notebook sein).
seziert Ace Combat, Driver, und S.T.A.L.K.E.R.   —   rendert Sterne
IlikeMyLife
Establishment
Beiträge: 212
Registriert: 08.05.2011, 09:59
Benutzertext: Feel Free

Re: DirectX 10 oder 11 (SDK)

Beitrag von IlikeMyLife »

Na, da ließe sich doch mal eine schöne Testsoftware mit schreiben :-)

ich habe derzeit 3 Rechner zu hause zur Verfügung:
- Win7 64Bit ( 3 Wochen alt )
- WinVista ( 2 Jahre alt )
- WinXP ( werd ich mir aus Hardware in meinem Schrank zurecht basteln )

Unabhängig, ob die Idee es über Standard-Optionen dem Gamer einstellen zu lassen schöner ist,
interessiert mich das thema mit dem Feature-Level doch so sehr, dass ich gern mal die Unterschiede am Bildschirm erleben möchte.

Und NEIN... wehe mir sagt jetzt einer, da gibt es schon Software für um das mal zu testen ;-) Selber Proggen macht Spaß :-)
Matthias Gubisch
Establishment
Beiträge: 507
Registriert: 01.03.2009, 19:09

Re: DirectX 10 oder 11 (SDK)

Beitrag von Matthias Gubisch »

Den XP Rechner kannst du dir sparen da DirectX 11 auch mit FeatureLevel_9 nicht unterstüzt wird ;)

Also wenn du keinen kompleten DX9 Pfad bauen willst wird das nicht funktionieren ;)
Bevor man den Kopf schüttelt, sollte man sich vergewissern einen zu haben
IlikeMyLife
Establishment
Beiträge: 212
Registriert: 08.05.2011, 09:59
Benutzertext: Feel Free

Re: DirectX 10 oder 11 (SDK)

Beitrag von IlikeMyLife »

na, ein glück das ich keinen arbeitsspeicher mehr im regal für den xp rechner gefunden habe.
sonst wär die mühe vergebens :D
Antworten