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
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 :)
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.
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
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
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.
- 1. Crossfading-Szenen in Android mit OpenGL
- 2. Mehrere Szenen in JavaFX
- 3. Wie Szenen in Swift
- 4. blenden (kryptologie) in java
- 5. Szenen dynamisch in JavaFX umschalten
- 6. iOS SpriteKit Szenen - Mehrere Szenen Auf dem Bildschirm
- 7. Sortieren von Szenen in Xcode Interface Builder
- 8. Szenen Builder entfernt Importe in fxml Datei
- 9. Ändern von Szenen in JavaFX NullPointerException
- 10. JavaFX 8 3D Szenen Schnittpunkt
- 11. Cocos2d Wie wechsle ich Szenen
- 12. So blenden Sie eine Spalte in yii
- 13. So blenden Sie gepunktete Linien in QTreeWidget
- 14. Wie ist OpenGl in einem Betriebssystem implementiert?
- 15. OpenGL Near Clip Flugzeug
- 16. Ruft __str __() decode() Methode hinter Szenen auf?
- 17. NavigationExperimental Header schneidet die AnimatedView-Szenen ab
- 18. Problem mit Übergängen zwischen Szenen mit Effekten
- 19. Gleichzeitige Unity-Szenen mit dem SceneManager
- 20. Libgdx ändern Szenen nicht zerstören vorherige Szene
- 21. Share selbe Navmesh mit duplizierten Szenen
- 22. Erstellen Sie einen Halbkreis im Szenen-Kit
- 23. Laden Sie zwei Szenen zur Laufzeit
- 24. JavaFX 2.0 Speicherverlust beim Erstellen mehrerer Szenen
- 25. Ein Hintergrundbild für alle Szenen Objektiv c
- 26. Warum verwenden mehrere OpenGL-Kontext
- 27. OpenGL zu OpenGL-ES - glBegin();
- 28. OpenGL zu OpenGL-ES - glRectf()
- 29. So blenden Sie eine Navigationsleiste aus?
- 30. So blenden Sie die Stapelausgabe aus
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
Heutzutage nicht. Sie könnten die meisten Vollbild-Effekte nicht ohne sie machen. – Goz
Schade, dass EXT_framebuffer_object immer noch in extension hell steckt :( – genpfault