6

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

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

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

  imageColor.SetPixels32(colorr);
  imageColor.Apply();   // fps reduced here

我想我需要在 GPU 上使用着色器来做到这一点。

那么更快地做到这一点的解决方案是什么?如果答案是使用着色器,可以给出一个示例。

谢谢。

4

2 回答 2

5

我已经使用 openGL 完成了它。只需为 unity 编写一个插件,然后从 unity 获取 Texture2D NativeID 并将其发送到插件,然后使用 openGL 将字节设置为纹理!这是惊人的 !FPS 从 10 增加到 50 !!! 您还需要知道您必须在 OpenGL 模式下运行游戏,使用“-force-opengl”才能使用 opengl 功能。

于 2012-12-25T07:37:24.473 回答
0

这听起来很适合你...... http://docs.unity3d.com/Documentation/ScriptReference/WebCamTexture.html

于 2012-11-15T20:42:13.290 回答