在unity3d中,我从相机(彩色相机设备)获取图像作为插件的字节数组,我希望在屏幕上实时显示图像。
如果我使用Texture2D.SetPixels32
来制作纹理,会显着降低fps (从80到10)。
//First convert byte[] to color[]
colorr = GetColor(imageBuffer);
imageColor.SetPixels32(colorr);
imageColor.Apply(); // fps reduced here
我想我需要在GPU上使用着色器执行此操作。
那么更快地做到这一点的解决方案是什么? 如果回答是使用着色器,可以提供样本。
THX。
答案 0 :(得分:5)
我使用openGL完成了它。 只需编写一个Unity的插件并从Unity获取Texture2D NativeID并将其发送到插件 然后使用openGL将纹理设置为字节! 这是惊人的 ! FPS从10增加到50! 你也需要知道你必须在OpenGL模式下运行游戏,使用“-force-opengl”来使用opengl函数。
答案 1 :(得分:0)
听起来这对你来说很完美...... http://docs.unity3d.com/Documentation/ScriptReference/WebCamTexture.html