2016-04-11 15 views
0

Ich habe eine Frage zu Frame-Puffer-Objekte in Spielen. Wenn ein Benutzer die Bildschirmauflösung in einem Spiel mehrmals ändert, was passiert dann mit den FBO-Größen für die Nachbearbeitung usw.? Müssen Sie alle erstellten FBOs löschen und neue anlegen? Ist es besser, die Größe zu ändern? Oder ist es besser, einen Handler zu erstellen, der neue erstellt, wenn sie nicht bereits vorhanden sind, und den alten speichert (der Benutzer kann zu der alten Bildschirmauflösung zurückkehren)? (Der neueste Vorschlag kann sehr viel Grafikspeicher belegen, wenn der Benutzer ständig die Bildschirmauflösung ändert).OpenGL FBO Textur Breite Höhe in Spielen

Vielen Dank im Voraus.

+0

Nur aus Neugierde, welche Art von Benutzer haben Sie im Auge, die Ihr Fenster oft genug für eine wichtige Design-Entscheidung skalieren wird? :) Sie scheinen nicht die nötige Aufmerksamkeitsspanne zu haben, um ein Spiel zu spielen. –

+0

Es sollte selten genug passieren, dass der Benutzer einfach fehlende Post-Processing-Effekte für 1-2 Frames oder eine ungewöhnliche Verzögerung akzeptiert, bevor der erste voll ausgebildete Frame nach der Größenänderung erscheint. Um so mehr, als die zeitliche Reprojektion heute üblich wird. –

+0

Andon M. Coleman: P Denken Sie nur an das Worst-Case-Szenario, wenn ein Benutzer versucht, die beste Bildschirmauflösung für höhere FPS/Qualität zu finden. – karl88

Antwort

1

Laut mir ist es nicht wirklich ein Problem, einige Sprünge zu haben, wenn Sie Ihr Fenster "skalieren". Wenn du die Größe des Fensters änderst, schätze ich, dass dir Performances egal sind. Wenn du die Größe des Fensters änderst, spielst du nicht wirklich, und wenn du spielst, benutzt du normalerweise den Vollbildmodus. Also gibt es zwei Möglichkeiten: Die erste, man legt die Größe aller Bildpuffer fest, es könnte für einfaches Spiel in Ordnung sein, aber nicht wirklich geeignet für "komplexe Spiele".

Der zweite ist ungefähr, was Sie sagten. FBO existieren für das Rendern von etwas zu ihnen und heutzutage könnte es dynamisch sein, so ist der einzige Zweck, mehrere Größe von fbo zu behalten, Latenzen zu vermeiden, wenn Sie die Größe ändern. IMHO, Sie können sich nicht um diese Art von Spüren kümmern und einfach FBOs entfernen und neu erstellen.

+0

Danke für die Antwort. Was ist mit Speicherfragmentierung in V-RAM? Etwas zu beachten beim Entfernen und Wiederherstellen? – karl88

+0

Wenn Sie sich wirklich Gedanken über die Speicherfragmentierung in V-RAM machen, sollten Sie zu Vulkan x) wechseln. Um seriöser zu sein, ich denke, in den Fahrer ist keine schlechte Idee. Wenn Sie zum Beispiel 100M Video-RAM zuweisen und unmittelbar nachdem Sie 50M entfernt und neu zugewiesen haben, ist es sehr wahrscheinlich, dass es denselben Bereich verwendet. –

+0

Aber es wird viel schlimmer, wenn der Benutzer einen 4K-Bildschirm hat. Nehmen wir an, der Benutzer spielt das Spiel mit einer Bildschirmauflösung von 1920 * 1080 und wechselt nach einigen Minuten zu 2560 * 1440 und erneut zu 3840 * 2160. Dies ist kritisch, wenn Sie große G-Puffer und andere Puffer für die Nachbearbeitung haben. Es wäre schön zu wissen, wie die großen Unternehmen die Erinnerung an die Fbos handhaben. – karl88