Этого нельзя сделать без использования нативного плагина и глубоких знаний OpenGL и Vulkan. Если вы ориентируетесь на устройства с OpenGL ES 3.0 или выше, вы можете использовать PBO для операций асинхронной передачи пикселей.
Это действительная функция чтения пикселей без PBO:
void ReadPixels(void* data, int textureWidth, int textureHeight)
{
int currentFBORead;
int currentFBOWrite;
glGetIntegerv(GL_READ_FRAMEBUFFER_BINDING, ¤tFBORead);
glGetIntegerv(GL_DRAW_FRAMEBUFFER_BINDING, ¤tFBOWrite);
glBindFramebuffer(GL_READ_FRAMEBUFFER, currentFBOWrite);
glReadPixels(0, 0, textureWidth, textureHeight, GL_RGBA, GL_FLOAT, data);
glBindFramebuffer(GL_READ_FRAMEBUFFER, currentFBORead);
}