我想流式传输手机摄像头视频,然后尝试将WebCamTexture
转换为byte[]
,但看来没有办法。我只能看到GetPixels()
和GetPixels32()
方法,但我相信它们相当慢。有没有一种有效的方法来使字节数组脱离摄像头框架?还是我走错路了?
如果不使用native plugin以及对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);
}