IDirect3D9::CreateDevice möglichst gut aufrufen
-
Hi,
mit welchen Parametern ruft ihr CreateDevice auf, oder würdet es empfehlen, wenn der Benutzer möglichst wenig Enstellungen treffen müssen soll?
Adapter:
D3DADAPTER_DEFAULT - dürfte meiner Meinung nach in 98% der Fälle funktionierenDeviceType:
D3DDEVTYPE_HALhFocusWindow:
...BehaviorFlags:
D3DCREATE_MIXED_VERTEXPROCESSING oder D3DCREATE_HARDWARE_VERTEXPROCESSING?Ich bin mir da nichtmal über die genaue Bedeutung bzw. den Unterschied bewusst. Die DirectX Doku sagt:
D3DCREATE_HARDWARE_VERTEXPROCESSING
Specifies hardware vertex processing.D3DCREATE_MIXED_VERTEXPROCESSING
Specifies mixed (both software and hardware) vertex processing.Heißt das dann, wenn die Hardware eine Operation nicht unterstützt, wird sie bei D3DCREATE_HARDWARE_VERTEXPROCESSING weggelassen, bei D3DCREATE_MIXED_VERTEXPROCESSING aber emuliert? Wenn das so ist, würde ich D3DCREATE_MIXED_VERTEXPROCESSING wählen, sieht das jemand ähnlich?
pPresentationParameters:
BackBufferWidth, BackBufferHeight: Vom User erfragt
BackBufferFormat: Würde ich pauschal zu X8R8G8B8 greifen, wenn man es ab einer gewissen DirectX-Version voraussetzen darf
BackBufferCount: 1
MultiSampleType: Vom User erfragt
MultiSampleQuality: Über die Caps ermittelt - immer höchste Einstellung
SwapEffect: D3DSWAPEFFECT_DISCARD - laut Doku der Einzige, mit dem MultiSampling klappt
hDeviceWindow: ...
Windowed: Vom User erfragt
EnableAutoDepthStencil: TRUE
AutoDepthStencilFormat: D3DFMT_D24S8
Flags: Keine??
FullScreen_RefreshRateInHz: 0, falls Windowed TRUE, ansonsten vom User erfragt
PresentationInterval: D3DPRESENT_INTERVAL_DEFAULTppReturnedDeviceInterface:
...Ja, was mir noch unklar ist, habe ich ja schon kurz erwähnt. Aber im allgemeinen Frage ich mich, kann ich bestimmte Formate voraussetzen? Da gibt es ja so nette Begrifflichkeiten wie "Vollständig DirectX 9 kompatible Grafikkarte". Könnte ich da mein BackBufferFormat und AutoDepthStencilFormat voraussetzen? Was gibt es noch wichtiges zu beachten? Ist es in der Praxis üblich, dass die Grafikkarten je nach Backbuffer-Format unterschiedliche Auflösungen unterstützen? Ich hab gelesen, dass man mit allem rechnen sollte, aber dieses mit allem rechnen verkompliziert auch wieder vieles...

-
Also Grafik-Einstellung ist meiner Meinung nach garnicht so schwer.
Spontan würde ich das hier als Anfang nehmen
http://www.zfx.info/Tutorials.php?ID=78HAL würde ich standartmäßig voraussetzen, REF wäre für ne Diashow geeigneter
Das Vertexprozessing Zeug ist T&L, von Mixed würd ich abraten: macht oft Probleme
Software kannste machen wenn wenig berechnungen anfallen, aber ein _richtiges_ Spiel setzt Hardware T&L voraus.
Kannste prüfen indem du in den Caps DevCaps auf D3DDEVCAPS_HWTRANSFORMANDLIGHT testestSuch mal in der DX-Docu nach GetAdapterModeCount, EnumAdapterModes, CheckDeviceFormat, CheckMultiSampleType.
Oder leg dir gleich ein richtiges Buch zu dem Thema zu (meine Empfehlung: David Scherfgen "3D-Spieleprogrammierung mit DirectX9 und C++, 3. Auflage")
-
Ich kenne die Funktionen und besitze sogar das genannte Buch, die Fragen bleiben trotzdem offen.
