Ich versuche, Pixel/Daten aus einer OpenGL-Textur zu lesen, die an GL_TEXTURE_EXTERNAL_OES gebunden ist.Android lesen Pixel aus GL_TEXTURE_EXTERNAL_OES
Der Grund für die Bindung der Textur an dieses Ziel ist, weil, um Live-Kamera-Feed auf Android bekommen ein SurfaceTexture aus einer OpenGL Textur erstellt werden muss, die an GL_TEXTURE_EXTERNAL_OES gebunden ist.
Da Android OpenGL ES verwendet, kann ich glGetTexImage() nicht verwenden, um die Bilddaten zu lesen.
Daher binde ich das Ziel an einen FBO und lese es dann mit readPixels(). Dies ist mein Code:
GLuint framebuffer;
glGenFramebuffers(1, &framebuffer);
glBindFramebuffer(GL_FRAMEBUFFER, framebuffer);
//Attach 2D texture to this FBO
glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_EXTERNAL_OES, cameraTexture, 0);
status("glFramebufferTexture2D() returned error %d", glGetError());
aber ich bin immer Fehler 1282 (GL_INVALID_OPERATION) aus irgendeinem Grund.
Dies ist nicht korrekt. Bei Android erfolgt die YUV-> RGB-Konvertierung automatisch im Hintergrund. Siehe https://stackoverflow.com/questions/46244179/android-mediacode-output-format-gles-external-texture-yuv-nv12-to-gles-tex – tmm1