Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

1

10.05.2006, 17:12

Performanceprobleme mit VertexBuffer im Vollbild

Hallo,

ich habe einen Vertexbuffer in meinem Programm, den ich fast jedes Frame updaten muss.
Dies geht gut, solange ich das Programm im windowed-mode starte. Wenn ich aber den Vollbildmodus verwende habe ich eine Systemauslastung von 90% (anstatt 3%).

Ich verwende DirectX9 (Februar 2006 SDK) und VB.Net.

Die fraglichen Zeilen sind:

Dim Data As Microsoft.DirectX.GraphicsStream = Vb.Lock(0, 0, LockFlags.None)
Vb.Unlock()

Wenn ich die auskommentiere läufts sowohl im Fenster als auch in Vollbild super.

Wahrscheinlich habe ich nur irgendeinen Parameter falsch gesetzt. Aber ich finde ihn nicht.
Der einzige Unterschied zwischen Fenster und Vollbild ist
PresentParams.Windowed = True/False


Vielen Dank für jegliche Hilfe

Peter

ext

Treue Seele

  • Private Nachricht senden

2

10.05.2006, 17:21

Wie misst du die Systemauslastung denn im Vollbild und im Fenstermodus?

Und ansonsten, wenn du keine Framebremse drin hast, ist es doch normal, dass du ne hohe Systemauslastung hast, ist ja nichts schlimmes.
Was problematisch wäre, wenn die Framerate total einbricht von windowed zu fullscreen.

Phili

unregistriert

3

10.05.2006, 17:21

Ich will jetzt nix dummes sagen, aber eigentlich heißt das doch nur, das es mehr Ressourcen zugeteilt bekommt, nicht dass es langsamer ist.

Phili

unregistriert

4

10.05.2006, 17:22

@ext
nagut, du warst vor mir ;) :crying:

5

10.05.2006, 18:16

Hallo,

Wow das ging ja schnell.
Meine Framerate ist fest bei 60 Hz.
Ich messe die Zeit, die er zum Berechnen und Rendern bei jedem durchlauf der Mainloop braucht.
Im Windowed sind das 3% der gesamtzeit (also 5 ms). Im Vollbild 95% (160ms).
Außerdem geht im Taskmanager die CPU-Auslastung entsprechend hoch.

Eine Idee worans liegen könnte?

Danke schonmal
Peter

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

6

10.05.2006, 18:19

tipp am rande:

ich seh grad dass du IDirect3DVertexBuffer9::Lock() ohne flags aufrufst...
ich würd hier beim erstellen des buffers die flags D3DUSAGE_DYNAMIC | D3DUSAGE_WRITEONLY (writeonly natürlich nur wenn du nicht vorhast was zu lesen) und zum locken D3DLOCK_DISCARD verwenden.

7

14.05.2006, 22:11

Hallo Dot,

vielen Dank. mit dem D3DLOCK_DISCARD funktionierts.

Hast du eine Idee woran das liegen könnte, dass es im Windowed-Mode auch so geegangen ist?
Würd mich nur interessieren.

Vielen Dank
Peter

Werbeanzeige