将字节数组设置为统一texture2d的快速方法

mX6*_*X64 6 c# shader unity-game-engine

在unity3d中,我从相机(彩色相机设备)获取图像作为插件的字节数组,我希望在屏幕上实时显示图像.

如果我用它Texture2D.SetPixels32来制作纹理,它会显着降低fps(从80到10).

//First convert byte[] to color[]
  colorr = GetColor(imageBuffer);

  imageColor.SetPixels32(colorr);
  imageColor.Apply();   // fps reduced here
Run Code Online (Sandbox Code Playgroud)

我想我需要在GPU上使用着色器执行此操作.

那么更快的解决方案是什么?如果回答是使用着色器,可以给出样本.

谢谢.

mX6*_*X64 5

我使用openGL完成了它.只需编写一个Unity的插件并从Unity获取Texture2D NativeID并将其发送到插件然后使用openGL将字节设置为纹理!这是惊人的 !FPS从10增加到50!你也需要知道你必须在OpenGL模式下运行游戏,使用"-force-opengl"来使用opengl函数.

  • 我知道这已经死了,但我想我会增加2美分.也可以,而不是强制OpenGL,编写插件,以允许OpenGL或DirectX取决于正在使用的内容.不需要强迫呢! (5认同)