Fast way to set byte array to unity texture2d

13,134

I have done it with using openGL. Just write a plugin for unity and get Texture2D NativeID from unity and send that to the plugin then use openGL to set bytes to the texture ! It was amazing ! FPS increased from 10 to 50 !!! also you need to know that you have to run games in OpenGL mode, with "-force-opengl" to use opengl functions.

Share:
13,134
mX64
Author by

mX64

I like coding !

Updated on June 13, 2022

Comments

  • mX64
    mX64 almost 2 years

    In unity3d I get image from camera (color camera device) as byte array from a plugin , and I want show image in real-time in screen .

    If i use Texture2D.SetPixels32 for making a texture, it decrease fps dramatically ( from 80 to 10).

    //First convert byte[] to color[]
      colorr = GetColor(imageBuffer);
    
      imageColor.SetPixels32(colorr);
      imageColor.Apply();   // fps reduced here
    

    I guess I need to do this with a shader on GPU .

    So what is solution to do this faster ? If answer is using shader , can give a sample .

    Thx.