DrToxic schrieb:
Tja, es ist aber nunmal genau so. Seit jeher konnte man (bzw. musste man sogar) Anwendungen im Fenstermodus ohne V-Sync laufen lassen. Nun kommt aber MS daher und erzwingt in Dx12 auf einmal V-Sync für alle, nur weil es "ein Problem" mit ihrem AppStore-Integrations-Gedöns gibt. Was soll daran denn bitte keine Sperre sein?
Tun sie ja gar nicht. Ashes of Singularity hat's ja zum Beispiel vernünftig implementiert.
Nur die dämlichen Patches alter DX11 Titel, die nie wirklich als UWP App vorgesehen waren, funktionieren nicht vernünftig, weil die Entwickler das nicht richtig handhaben.
Man kann wunderbar latenzfreie UWP Apps schreiben die mit mehr als der Monitorfrequenz arbeiten.
Optimieren der Eingabelatenz für UWP-DirectX-Spiele (Universelle Windows-Plattform)
Man muss lediglich zwei Dinge beachten:
1. Der Swapchain muss man angeben, dass die Berechnungen schneller erfolgen als die Framerate des Monitors
m_deviceResources->SetMaximumFrameLatency(1);
2. Beim präsentieren des Frames muss
SyncInterval = 0 sein. Hinzu kommen noch enige mögliche
Flags mit denen man recht frei bestimmen kann, wie der Frame synchronisiert werden soll.
m_deviceResources->Present(0,DXGI_PRESENT_DO_NOT_WAIT);
Das war's dann im Grunde genommen auch schon. Stand aber auch schon in meinem ersten Beitrag und kann man auch ganz easy durch eine 10 Sekunden Google Suche herausfinden.
Die Sache ist halt nur die, dass dies UWP spezifische Mechanismen sind, die man hier anwenden muss um latenzfreie Anwendungen zu ermöglichen. Man kann nicht einfach herkömliche Games wie Tomb Raider nehmen, in einen UWP Container packen und dann erwarten, dass V-Sync funktioniert. Das geht nicht. Allerdings will MS daran ja wie gesagt auch noch arbeiten.