Ich lese gerade durch die Dokumentation DirectX und stieß auf etwas Interessantes auf der Seite für IDirect3DDevice9::BeginScene:DirectX: Game-Loop-Reihenfolge, zuerst zeichnen und dann Eingabe?
maximale Parallelität zwischen der CPU und dem Grafikbeschleuniger zu aktivieren, ist es vorteilhaft, IDirect3DDevice9 zu nennen :: Endszene so weit vor dem Anstehen als möglich.
Ich bin es gewohnt, meine Spielschleife zu schreiben, um Eingaben zu verarbeiten und solche, dann zu zeichnen. Habe ich es rückwärts? Vielleicht sollte das Spiel Schleife mehr wie folgt aus: (semi-Pseudo-Code, offensichtlich)
while(running) {
d3ddev->Clear(...);
d3ddev->BeginScene();
// draw things
d3ddev->EndScene();
// handle input
// do any other processing
// play sounds, etc.
d3ddev->Present(NULL, NULL, NULL, NULL);
}
Nach diesem Satz der Dokumentation, würde diese Schleife „maximale Parallelität aktivieren“.
Wird dies normalerweise getan? Gibt es Nachteile beim Bestellen der Spielschleife? Ich sehe nach der ersten Iteration kein wirkliches Problem damit ... Und ich weiß, der beste Weg, den tatsächlichen Geschwindigkeitszuwachs von etwas wie diesem zu erkennen, ist, es tatsächlich zu benchmarken, aber hat jemand anderes das bereits versucht und kann man irgendeinen tatsächlichen bestätigen Geschwindigkeitszunahme?
Ich habe keine DirectX-Erfahrung (XNA dev), aber ich weiß, dass dies wahrscheinlich ein leicht "lückiges" Gefühl für das Spiel verursachen würde, wie Dinge gezeichnet werden, bevor Ihr Spiel mit der neuen gelieferten Eingabe aktualisiert und aktualisiert wird. – RCIX
@RCIX Siehe meine Antwort –