Das bekannte Programm zur optimalen Vorbereitung auf die theoretische Führerscheinprüfung
DirectX-Forum - Beitragsübersicht -
ThemaDX9: Direct3D extrem langsam
Von Cheaterhater
Datum 28. April 2010 um 21:01:27
Frage Hallo,

Ich hatte vor einiger Zeit mal ein kleines Spiel programmiert, für das ich der Einfachheit halber GDI+ (mit selbstgebauter Doppelpufferung) für die Grafikausgabe verwendet hatte. Das Spiel selbst läuft im Fenstermodus mit einer Fenstergröße von gerade einmal 229x261 Pixeln.
Dann hatte ich mir überlegt, dass es wegen der Geschwindigkeit vielleicht besser wäre, das ganze mit Direct3D zu machen, wozu ich DirectX 9 - 2D mit Direct3DX [.Net-Tipp 0129] und Direct3D 9 - Direct3D im Fenster (Window Mode) [.Net-Tipp 0130] (für den Fenstermodus) benutze. D. h., ich erstelle das D3DDevice wie in Direct3D 9 - Direct3D im Fenster (Window Mode) [.Net-Tipp 0130] angegeben:
Dim pParameter As New Microsoft.DirectX.Direct3D.PresentParameters
pParameter.Windowed = True
pParameter.SwapEffect = Microsoft.DirectX.Direct3D.SwapEffect.Discard
D3DDevice = New Microsoft.DirectX.Direct3D.Device(0, _
Microsoft.DirectX.Direct3D.DeviceType.Hardware, Me.Handle, _
Microsoft.DirectX.Direct3D.CreateFlags.SoftwareVertexProcessing, pParameter)
D3DSprite = New Microsoft.DirectX.Direct3D.Sprite(D3DDevice)
Testweise habe ich dann einmal das Hauptmenü mit D3D zeichnen lassen. Dabei wird genau eine einzige Textur, die vorher erstellt wird, auf das Formular gezeichnet:
D3DDevice.Clear(Microsoft.DirectX.Direct3D.ClearFlags.Target, BGColor, 1.0F, 0)
D3DDevice.BeginScene()
D3DSprite.Begin(Microsoft.DirectX.Direct3D.SpriteFlags.AlphaBlend)
D3DSprite.Draw2D(StaticTexStart, BufferRect, BufferSize, NullPoint, NullColor)
D3DSprite.End()
D3DDevice.EndScene()
D3DDevice.Present()
Während ich diese Textur mit GDI+ über 1000 mal in der Sekunde zeichnen konnte, kommt D3D dabei nur auf magere 40 mal, erreicht also nur 4% der Geschwindigkeit von GDI+. Da kann also definitiv etwas nicht stimmen, ich weiß leider nur nicht, was, da Programmierung mit Direct3D ziemliches Neuland für mich ist.

Ich hoffe, dass ich mein Problem einigermaßen klar ausdrücken konnte und es jemanden gibt, der mir helfen kann und bedanke mich im Voraus.
Antwort:
Von Cheaterhater
Datum 28. April 2010 um 22:11:59
Antwort Erst einmal danke für die Menge an Lösungsansätzen, das mit dem PresentInterval habe ich als erstes ausprobiert, da es mir am schlüssigsten erschien. Jetzt habe ich über 6000 FPS, danke
[ Antwort schreiben | Zurück zum DirectX-Forum | Forum-Hilfe ]
Antworten
DX9: Direct3D extrem langsam - Cheaterhater 28. April 2010 um 21:01:27
Re: Direct3D extrem langsam - Nico 28. April 2010 um 21:58:26
Re: Direct3D extrem langsam - Cheaterhater 28. April 2010 um 22:11:59

Ihre Antwort
(Nick-)Name   Wichtige Informationen zur Namensangabe
E-Mail (opt.)  Wichtige Informationen zur Angabe einer eMail-Adresse
Thema   Wichtige Informationen zur Angabe eines Themas
Betrifft (IDE)  DirectX 9
Ihre Antwort
Smilies
Mehr...
FettKursivUnterstrichen   Übersicht der Tipp-KürzelÜbersicht der Projekt-KürzelÜbersicht der Bücher-Kürzel 
Homepage
Titel
Root-Smilies              
             
             
[ Zurück zum DirectX-Forum | Forum-Archiv | Forum-Hilfe | Chat ]

Zum Seitenanfang

Startseite | VB-/VBA-Tipps | Projekte | Tutorials | API-Referenz | Komponenten | Bücherecke | Gewinnspiele | VB.Net | .Net-Forum | DirectX | DirectX-Forum | Chat | Ausschreibungen | Links | Suchen | Stichwortverzeichnis | Feedback | Impressum

Seite empfehlen Bug-Report
Letzte Aktualisierung: Sonntag, 13. Dezember 2015