2009-08-20 7 views
2

Ich möchte zwei Szenen in OpenGL machen, und dann von einer Szene zur zweiten eine visuelle Überblendung zu tun. Kann jemand einen Ausgangspunkt vorschlagen, um zu lernen, wie man das macht?Blenden Szenen in OpenGL

Antwort

9

Die wichtigste Sache, die Sie lernen müssen, ist, wie Render-to-Texture zu tun.

Wenn Sie beide Szenen in 2 Texturen haben, ist es wirklich einfach, zwischen ihnen zu überblenden. In der Tat ist es ziemlich einfach, alle Manor von interessanten verblassen Effekte zu tun :)

+0

Danke, werde ich in Render-to-Textur suchen. Ich dachte darüber nach, war mir aber nicht sicher, welche Auswirkungen das auf die Leistung haben könnte. – BrenMcGuire

+0

Heutzutage nicht. Sie könnten die meisten Vollbild-Effekte nicht ohne sie machen. – Goz

+1

Schade, dass EXT_framebuffer_object immer noch in extension hell steckt :( – genpfault

1

Hier ist sample code of a cross fade. Dies scheint etwas anders zu sein als das, was Goz seit den beiden Szenen hat. In diesem Beispiel wird der Stencil-Puffer für die Überblendung verwendet.

+2

Das ist. Der Rage 128 wurde vor über 10 Jahren veröffentlicht, Render-to-Texture funktionierte damals nicht gut, es ist viel einfacher, Szene A in Textur A zu rendern, Szene B in Textur B zu rendern und dann Textur A und Textur zu rendern B in den Bildspeicher. Zusätzlicher Bonus ist, dass seine solche gemeinsame Codepfad, dass es in die Hölle optimiert ist und alle möglichen interessanten Effekte. die Art von Stencilbuffer Betrügerei Sie vorschlagen gut funktioniert, ist aber nicht das, was die meisten Entwickler zu tun und damit Wird langsamer und komplexer Es funktioniert aber :) – Goz

+0

Ich fand diesen Link, bevor ich die Frage gestellt, aber es war nicht der Cross-Fade-Effekt, den ich sah ng für (es ist nicht das, was ich eine Überblendung nennen würde). – BrenMcGuire

0

Ich könnte mir eine andere Möglichkeit vorstellen, Szenen zu überblenden, aber es hängt davon ab, wie komplex Ihr Szenen-Renderer ist. Wenn es einfach ist, könnten Sie ein Shader-Programm starten, bevor Sie die zweite Szene mit dem gewünschten Überblendungseffekt wiedergeben. Ich würde versuchen, GlBlend (GL_ALPHA, GL_ONE_MINUS_SRC_ALPHA) und manipulieren die Alpha-Werte der Fragmente im Shader. btw

FBOs sind. seit Jahren verfügbar - Erweiterung oder nicht. Wenn Ihr Renderer komplex ist und Shader-Programme verwendet, können Sie beide Szenen genauso gut in FBOs rendern und diese mischen. Die Verwendung von FBOs ist eine sehr gebräuchliche Technik, um alle Arten von Effekt-Rendering einfach anwenden zu können.