Das bekannte Programm zur optimalen Vorbereitung auf die theoretische Führerscheinprüfung
DirectX-Forum - Beitragsübersicht -
ThemaSDX: Ermitteln, ob letzter Frame schon fertig gezeichnet ist
Von Nico
E-Mail nico.schertler@gmx.de
Datum 24. Februar 2010 um 17:41:14
Frage Hallo!

Wenn in meiner D3D-Anwendung die Framerate sinkt (so auf die 20 fps), merkt man ziemlich deutlich, dass die Mausbewegung auf dem Bildschirm hinter der tatsächlichen hinterherhängt.
Bei der Suche nach Lösungen für dieses Problem bin ich darauf gestoßen, dass das Problem wohl mit D3D und nicht mit DirectInput zu tun hat. Sprich, wenn zu die Grafikkarte zu viel zu tun hat, werden die Draw-Aufträge gebuffered, bis alle vorhergehenden abgearbeitet sind. Als Folge hängt das Bild auf dem Bildschirm eben etwas hinterher.
Kann ich dieses Buffern irgendwie ausstellen? Ich vermute mal nicht, deswegen gleich eine zweite Frage: Kann ich ermitteln, ob die Grafikkarte mit dem Rendern des vorhergehenden Frames schon fertig ist, sodass ich erst einen neuen Aufruf starte, wenn alles fertig ist?
Übigens habe ich schon PresentationInterval.Immediate und One probiert. Bei beiden dasselbe Problem. Wenn die Framerate wieder ziemlich hoch ist, bewegt sich die Maus auch wieder so, wie sie soll.

Nico
Antwort:
Von mdx
E-Mail mdx@vb-fun.de
Datum 01. März 2010 um 09:30:09
Antwort Hi Nico, das liegt leider einfach nur an deiner Rendertechnik, die ist entweder zu Prozessor oder Grafikkartenlastig.
Frameraten unter 25-30 sind generell nicht akzeptabel. Das heißt ja nichts anderes, als dass dein Renderzyklus einfach zu langsam ist und zuviel Zeit benötigt.
Der Directinput wird ja auch in dem Zyklus abgerufen und ruckelt natürlich munter mit deinen Frames mit.
Es würde nichts bringen auf Frames zu warten, oder diese zu droppen.

Der Presentationinterval beschleunigt das rendern nicht, er ist ledeglich dazu da um mit V-Sync oder ohne zu rendern.

Generell sieht das nach einem Codeproblem aus.
Die einzige Lösung ist, die Objekte zu mninimieren die du berechnest, wenn die Frames in den Keller gehen.

Welche Hardware nutzt du ?

MDX

[ Antwort schreiben | Zurück zum DirectX-Forum | Forum-Hilfe ]
Antworten
SDX: Ermitteln, ob letzter Frame schon fertig gezeichnet ist - Nico 24. Februar 2010 um 17:41:14
Re: Ermitteln, ob letzter Frame schon fertig gezeichnet ist - mdx 01. März 2010 um 09:30:09
Re: Ermitteln, ob letzter Frame schon fertig gezeichnet ist - Nico 01. März 2010 um 11:26:37
Re: Ermitteln, ob letzter Frame schon fertig gezeichnet ist - mdx 02. März 2010 um 09:20:11
Re: Ermitteln, ob letzter Frame schon fertig gezeichnet ist - cgmarco 03. März 2010 um 09:11:36
Lösung - Nico 03. März 2010 um 09:37:46
Zur Vervollständigung - mdx 04. März 2010 um 12:22:28

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)  SlimDX
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