Быстрый способ установить массив байтов в unity texture2d
в unity3d я получаю изображение с камеры (устройство цветной камеры) в виде массива байтов из плагина , и я хочу показать изображение в режиме реального времени на экране .
Если я использую Texture2D.SetPixels32
для создания текстуры, это значительно уменьшить fps ( от 80 до 10).
//First convert byte[] to color[]
colorr = GetColor(imageBuffer);
imageColor.SetPixels32(colorr);
imageColor.Apply(); // fps reduced here
Я думаю, мне нужно сделать это с шейдером на GPU .
Итак, что такое решение, чтобы сделать это быстрее ? Если ответ использует шейдер, можно дать образец .
Thx.
2 ответов
Я сделал это с помощью openGL. Просто напишите плагин для unity и получите Texture2D NativeID из unity и отправьте его в плагин затем используйте openGL для установки байтов в текстуру ! Это было потрясающе ! FPS увеличился с 10 до 50 !!! также вам нужно знать, что вы должны запускать игры в режиме OpenGL, с "-force-opengl", чтобы использовать функции opengl.
Это звучит так, как будто это будет работать идеально для вас... http://docs.unity3d.com/Documentation/ScriptReference/WebCamTexture.html