2016-03-24 16 views
0

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

+0

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

Antwort

0

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.

+0

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

+0

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

+0

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