![]() |
DirectX-Forum - Beitragsübersicht - |
|
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 schreiben | Zurück zum DirectX-Forum | Forum-Hilfe ] |
|
Letzte Aktualisierung: Sonntag, 13. Dezember 2015 |
|