Ich habe Code geschrieben, um YUV mit OpenGL ES 3.0 in RGB zu konvertieren. Anstatt das konvertierte Bild in die glViewPort-Oberfläche zu zeigen, möchte ich es im Bitmap-Speicher speichern. Ich habe OpenGL Frame-Buffer und render buffer (render to texture), dann versuche, die Ausgabe mit glReadpixels() -Funktion zu bekommen. Ich bekomme Ausgabe, aber ich weiß nicht, wie man die Ausgabe in Bitmap-Speicher hochlädt. Bitte helfen Sie.So laden Sie die Ausgabe von openGL glReadpixels() in den Bitmap-Speicher
Antwort
Wenn Sie Bilddaten im Client- (System-) Speicher haben und diese an Texturspeicher senden möchten, verwenden Sie (ich nehme an, Sie haben ein 2D-Bild).
Allerdings, wenn ich Ihren Anwendungsfall verstehe, ist es etwas seltsam zu Render-Puffer rendern, glReadPixels verwenden, um die Ergebnisse in den Systemspeicher zu lesen, und dann diese Daten verwenden, um eine neue Textur zu erstellen. Im Allgemeinen würden Sie einfach eine Textur als Farbausgabe für den Framebuffer anhängen und diese dann direkt verwenden. Dies würde den Hin- und Rückweg zum Systemspeicher umgehen, der teuer ist.
ich verwende drei Texturen für y u und v-Komponenten. Wenn ich diese Texturen an Framebuffer anschließe, ist der Framebuffer-Status abgeschlossen. aber wenn ich die Ausgabe vom Framebuffer lese, konnte ich nicht das endgültige RGB-Bild bekommen. Stattdessen liest es irgendeinen der Textureingaben vom Framebuffer. Ich muss die endgültige Ausgabe von YUV in RGB-Konvertierung lesen, um es für den weiteren Prozess zu speichern. – user255212
Wenn Sie YUV von 3 Input-Texturen in einem Shader in einen RGB-Framebuffer konvertieren, sollten die YUV-Texturen nicht an den Framebuffer angehängt werden einheitliche Eingaben für den Shader sein. – MuertoExcobito
Also eigentlich will ich nicht die Ausgabe in der Oberflächenansicht. Ich muss die Ausgabe von YUV in RGB in Puffer speichern. Ohne die Texturen am Framebuffer anzubringen, wie kann ich auf die Ausgabe zugreifen? Gibt es eine andere Möglichkeit, den YUV in den RGB-Ausgang vom Puffer zu holen? – user255212
- 1. iPhone OpenGL ES: glReadPixels funktioniert nicht
- 2. glReadPixels die Pufferdaten ändern?
- 3. So laden Sie CLR in den Prozess
- 4. So laden Sie Verzeichnisdaten in den Hive
- 5. So laden Sie die AJAX-Antwort in den VEX-Dialog
- 6. So lesen Sie die Ausgabe von + PrintTenuringDistribution
- 7. So unterdrücken Sie die Ausgabe
- 8. So erfassen Sie die Ausgabe von execvp
- 9. So laden Sie Bild von URL
- 10. So laden und zeigen Sie eine Textur mit Opengl
- 11. glReadPixels und GL_ALPHA
- 12. Laden von .obj in OpenGL in C
- 13. So laden Sie die Fremdschlüsselelemente in Tastypie
- 14. So lesen Sie die Ausgabe von sed in eine Variable
- 15. So laden Sie den Ace-Editor
- 16. So formatieren Sie die Ausgabe von kubectl describe in JSON
- 17. QOpenGLWidget und glReadPixels und Tiefenpuffer
- 18. So erfassen Sie die Ausgabe des Systems()
- 19. So verwenden Sie Spotlight in opengl
- 20. So speichern Sie die Ausgabe von "watch" in Datei
- 21. So steuern Sie die Ausgabe von Daten in @foreach
- 22. So laden Sie in die WAR-Datei von JBOSS Server
- 23. So laden Sie den Quellcode von code.google.com herunter
- 24. So sortieren Sie die Ausgabe einer Wortzählung
- 25. Libgdx OpenGL Ausgabe
- 26. Ausgabe mit Freetype und OpenGL
- 27. Texturbytes mit glReadPixels lesen?
- 28. So laden Sie die Dividendeninformationen zuverlässig herunter
- 29. Laden von PNG-Texturen zu OpenGL
- 30. Laden OpenGL> 1.1 Funktionen von Windows
Danke, ja, ich benutze 2D-Bild und mit glTexImage2D() habe ich meine Daten aus dem Systemspeicher Texturspeicher und einige Prozesse. Jetzt möchte ich die Ausgabe nach Shadern und verwendeten Texturen lesen, dafür habe ich glReadpixels() benutzt. Jetzt möchte ich dieses Ausgabebild auf meinem Bildschirm verwenden – user255212