Android位图图像到Unity C#纹理

时间:2018-08-30 16:43:26

标签: java c# android unity3d

我处于android视图的绘制循环中:

        Bitmap bitmap = Bitmap.createBitmap(this.getWidth(), 
        this.getHeight(), Bitmap.Config.ARGB_4444);
        Canvas newCanvas = new Canvas(bitmap);
        super.draw(newCanvas);
        Log.d("AndroidUnity","Canvas Drawn!");
        mImageView.setImageBitmap(bitmap);

上面的代码为我显示了所附Image Viewer上的正确图形。

当我将位图转换为字节数组时:

        ByteBuffer byteBuffer = ByteBuffer.allocate(bitmap.getByteCount());
        bitmap.copyPixelsToBuffer(byteBuffer);
        byte[] bytes = byteBuffer.array();

将字节导入Unity不起作用(我的原始图像上显示黑色图像):

        imageTexture2D = new Texture2D(width, height, TextureFormat.ARGB4444, false);
        imageTexture2D.LoadRawTextureData(bytes);
        imageTexture2D.Apply();
        RawImage.texture = imageTexture2D;

关于如何获取Java bytes []以在Unity中显示为纹理/图像的任何想法吗?我测试了字节是否正确发送,即当我从Android推送{1,2,3,4}的字节数组时,在统一方面得到了{1,2,3,4}。

这并不是说Unity在尝试将字节作为字节[]传输时会引发错误,因此我必须遵循C#方面的this建议:

void ReceieveAndroidBytes(AndroidJavaObject jo){
AndroidJavaObject bufferObject = jo.Get<AndroidJavaObject>("Buffer");
byte[] bytes = AndroidJNIHelper.ConvertFromJNIArray<byte[]>(bufferObject.GetRawObject()); }

和Java端的琐碎byte []容器类“ Buffer”

0 个答案:

没有答案