Быстрый способ установить массив байтов в 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