2012-04-11 23 views
1

Meine Anwendung muss mehr als 20 Ansichtsports verwalten, während nur 16 zulässig sind. Zum Glück kann die ganze Szene in mehrere Teile aufgeteilt werden, die keine Scheitelpunkte von einem zum anderen "lecken", jedes mit Ansichtsports kleiner als 10.Ruft RSSetViewports in Direct3D 11 asynchron oder synchron auf?

Jetzt ist das Problem, wenn es gut ist, View-Ports-Array zu ändern mitten im Rendering (obwohl es erlaubt ist). Meine Annahme ist, dass, solange es heißt * RS * SetViewports sollte es asynchron sein und könnte sicher in der Mitte des Renderings aufgerufen werden. Aber ich konnte keinen Beweis finden.

Antwort

2

Ja RSSetViewports ist ein gewöhnlicher Grafikzustandsbefehl, der auf den GPU-Befehlspuffer geschrieben wird, um asynchron ausgeführt zu werden, so dass es kein Problem gibt, ihn mehrmals pro Frame zu setzen, er wird die CPU beim Warten auf die GPU nicht blockieren Ausführung zu beenden.

Keine Zustände machen das, nur explizite Operationen wie ein Map-Aufruf (ohne D3D11_MAP_FLAG_DO_NOT_WAIT) würden blockieren und auf die GPU warten.

Verwandte Themen