WebCamTexture для байта []? - PullRequest
       68

WebCamTexture для байта []?

0 голосов
/ 03 апреля 2020

Я хочу передать потоковое видео с камеры телефона, и для этого я пытаюсь преобразовать WebCamTexture в byte[], но оказалось, что это невозможно. Я вижу только методы GetPixels() и GetPixels32(), но я считаю, что они довольно медленные. Есть ли эффективный способ получить массив байтов из кадра веб-камеры? Или я на неправильном пути?

1 Ответ

1 голос
/ 03 апреля 2020

Этого нельзя сделать без использования нативного плагина и глубоких знаний 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, &currentFBORead);
     glGetIntegerv(GL_DRAW_FRAMEBUFFER_BINDING, &currentFBOWrite);

     glBindFramebuffer(GL_READ_FRAMEBUFFER, currentFBOWrite);

     glReadPixels(0, 0, textureWidth, textureHeight, GL_RGBA, GL_FLOAT, data);

     glBindFramebuffer(GL_READ_FRAMEBUFFER, currentFBORead);
}
...