Register for your free account! | Forgot your password?

Go Back   elitepvpers > Coders Den > C/C++
You last visited: Today at 19:24

  • Please register to post and access all features, it's quick, easy and FREE!

Advertisement



VC DirectX Performance Frage

Discussion on VC DirectX Performance Frage within the C/C++ forum part of the Coders Den category.

Reply
 
Old   #1
 
elite*gold: 0
Join Date: Jun 2008
Posts: 114
Received Thanks: 14
VC DirectX Performance Frage

Hallo und zwar habe ich eine frage zum DirectX 9 System (d3d9).
Beim einstellen des "BehaviorFlags" in
Code:
STDMETHOD(CreateDevice)(THIS_ UINT Adapter,D3DDEVTYPE DeviceType,HWND hFocusWindow,DWORD BehaviorFlags,D3DPRESENT_PARAMETERS* pPresentationParameters,IDirect3DDevice9** ppReturnedDeviceInterface) PURE;
Und zwar will ich dieses 3D System so viel wie möglich am GPU laufen lassen (Damit CPU freier ist).
Welches Flag soll ich nehmen?

Code:
#define D3DCREATE_FPU_PRESERVE                  0x00000002L
#define D3DCREATE_MULTITHREADED                 0x00000004L

#define D3DCREATE_PUREDEVICE                    0x00000010L
#define D3DCREATE_SOFTWARE_VERTEXPROCESSING     0x00000020L
#define D3DCREATE_HARDWARE_VERTEXPROCESSING     0x00000040L
#define D3DCREATE_MIXED_VERTEXPROCESSING        0x00000080L

#define D3DCREATE_DISABLE_DRIVER_MANAGEMENT     0x00000100L
#define D3DCREATE_ADAPTERGROUP_DEVICE           0x00000200L
#define D3DCREATE_DISABLE_DRIVER_MANAGEMENT_EX  0x00000400L
Ich denke D3DCREATE_HARDWARE_VERTEXPROCESSING+D3DCREATE_PURE DEVICE sollten am besten sein (Wär dann 0x00000050L) (nachdem die "supported?" Abfragen gemacht wurden).

Stimmt dies?
xXxDarkheroxXx is offline  
Old 08/06/2012, 00:07   #2


 
MrSm!th's Avatar
 
elite*gold: 7110
Join Date: Jun 2009
Posts: 28,904
Received Thanks: 25,394
Gibt es nicht ein Flag, dass automatisch alles auf GPU läuft, was unterstützt wird und der Rest läuft dann auf der CPU?
MrSm!th is offline  
Old 08/06/2012, 00:13   #3
 
elite*gold: 0
Join Date: Jun 2008
Posts: 114
Received Thanks: 14
wahrscheinlich nicht, aber diesem examplecode her sollte das das optimum sein:
Code:
    D3DCAPS9 caps;
    d3dObject->GetDeviceCaps(D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, &caps);

    DWORD devBehaviorFlags = 0;
    if( caps.DevCaps & D3DDEVCAPS_HWTRANSFORMANDLIGHT )
          devBehaviorFlags |= D3DCREATE_HARDWARE_VERTEXPROCESSING;
    else
          devBehaviorFlags |= D3DCREATE_SOFTWARE_VERTEXPROCESSING;

    // If pure device and HW T&L supported
    if( caps.DevCaps & D3DDEVCAPS_PUREDEVICE &&
          devBehaviorFlags & D3DCREATE_HARDWARE_VERTEXPROCESSING)
                devBehaviorFlags |= D3DCREATE_PUREDEVICE;
Kann dies stimmen?

EDIT:
Hab eine gute erklärung gefunden:
Diese Eigenschaft bestimmt wie die Direct3D-Engine mit Vertexen, Texturen, Lighting usw. umgeht. Die beste Option hier ist D3DCEATE_PUREDEVICE - allerdings unterstützen nur wenige Grafikkarten diese Option(selbst die relativ neue TnL Geforce 256 nicht) Diese Option heißt, dass die Grafikkarte fasst alles übernimmt - Transformatierung, Schatten, Lighting, Texturen and Rasterung. Wenn ihre Hardware das nicht unterstützt ist das nächstbeste D3DCREATE_HARDWARE_VERTEXPROCESSING - diese Option benutzt Hardware so oft wie möglich; die meisten aktuellen 3D-Karten sollten diese Option unterstützen. Falls auch das schief läuft, können Sie es mit der Option D3DCREATE_MIXED_VERTEXPROCESSING versuchen, welche die Hardware benutzt, wenn es aber nicht geht, dann springen die Software-Komponenten ein. Die letzte Möglichkeit ist dann nur noch der Software-Rasterer und falls die Hardware kein 3D unterstützt, bleibt das die letzte Option. Der Software-Rasterer ist zwar fast immer sehr langsam und ist auch nicht sehr gut zu benutzten. Falls Sie nicht darumkommen: D3DCREATE_SOFTWARE_VERTEXPROCESSING.

xXxDarkheroxXx is offline  
Old 08/06/2012, 20:02   #4


 
MrSm!th's Avatar
 
elite*gold: 7110
Join Date: Jun 2009
Posts: 28,904
Received Thanks: 25,394
Quote:
wahrscheinlich nicht, aber diesem examplecode her sollte das das optimum sein:
Doch, für DX9 gibt es das.
MrSm!th is offline  
Old 08/07/2012, 14:27   #5
 
elite*gold: 0
Join Date: Jun 2008
Posts: 114
Received Thanks: 14
Code:
#define D3DCREATE_MIXED_VERTEXPROCESSING        0x00000080L
Das könntest du vllt. gemeint haben, mehr Behaviour flags gibt es seitens Microsoft nicht.
xXxDarkheroxXx is offline  
Old 08/07/2012, 16:45   #6
 
elite*gold: 0
Join Date: Jun 2012
Posts: 187
Received Thanks: 58
In dx9 ist es so, dass du beim öffnen des devices (CreateDevice und andere funktionen) angeben kannst, wo die vertices berechnet werden. Da hast du afaik zur auswahl "CPU", "GPU", "Automatic", "MIXED" und "Debug". Mehr kannst du daran nicht machen. Du musst immer mit der CPU Daten an die GPU schicken und die GPU wird diese Daten dann berechnen (sofern nicht beim Erstellen mit den obigen Flags anders gewünscht). Mehr performance kannst du da auch nicht rausholen. Erst mit DX11 kannst du mit mehreren Threads (mehreren CPUCores) Daten an die GPU schicken (die x-buffer binden). Aber hier ist der Performancegain nur relativ gering.

Das 'PureDevice' dingsbums ist quasi eine emulation von Shadern. Die kann man erst mit DX11 (dx10? weiß ich nicht) so wirklich performant benutzen. Vorrausetzung dafür ist eine DirectX11 fähige GPU und Windows Vista/7/8. Also kannste dann auch gleich DX11 nehmen (oder openGL, was das schon seit 2007 oder so unterstützt).
tnd0 is offline  
Reply


Similar Threads Similar Threads
Mw3 wie ist die Performance ?
11/18/2011 - Call of Duty - 20 Replies
Hallo, da ich mir vorhabe MW3 trotzdem zu holen wegen dem Singelplayer und diesen Coop dingens wollte ich fragen : Wieviel FPS ihr so habt :) Also ob black ops besser läuft undso! Und ob ihr nen schlechten mittelmäßigen PC habt ? Also lg.
Best performance of rf
04/16/2010 - RF Online - 1 Replies
Can anyone give me some decent pc specs for smooth gameplay for rf?
Frage zur Performance bzw. CPU
03/15/2010 - General Coding - 2 Replies
Hallo liebe Comm, ich hoffe mal das ich hier richtig bin :D Nun kurz und knapp. Ich habe einen Bot für Metin2 entwickelt. Dieser läuft Problemlos im Hidden Mod. Habe einen relative guten PC. CPU : Intel Core Duo E8400 a 3.0 GHz a 3.5 RAM : 4 GB ; 3,5 nur adressiert mit XP 32 Bit Nunja also wenn ich den Bot nun laufen lass dann hängt das manchmal, und ab 15 Fenstern oder so kackt der PC ab, hab mir mal überlegt ob ich meinen alten PC noch irgendwie mit dem neuen zusammenschließen kann. ...
[Performance-Camtasia Studio]Wie verbessere ich die Performance?
11/13/2009 - Video Art - 4 Replies
Hallo liebe Community und Mitglieder. Wenn ich mit dem Aufnahmeprogramm „Camtasia Studio" ein Fenster aufnehme, z.B. das Client Fenster von Metin2, verschlechtert sich die Performance beim späteren angucken des Resultates. D.h. es bleibt bei mehreren Hängern und es ist kein flüssiger Film. Was habe ich versucht? #Die Frames pro Sekunde zu erhöhen(bis 200 Frames pro Sekunde, aber dann gibt es auch schon bei der Aufnahme Hänger, bzw. beim produzieren) #Das Video in der Bearbeitung zu...
Performance
10/23/2007 - World of Warcraft - 4 Replies
Sers leutz, dezente Frage: wie mehr FPS / Performance in WoW?! Habe meist nur ~20FPS was ziemlich absuckt.. Zum PC: AMD Athlon 64 3200+ 1024 DDR1 (:-/) Ram Geforce FX 5900ZT



All times are GMT +2. The time now is 19:24.


Powered by vBulletin®
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Terms of Service | Abuse
Copyright ©2024 elitepvpers All Rights Reserved.