Растровое изображение Android в текстуру Unity C # - PullRequest
0 голосов
/ 30 августа 2018

Я нахожусь в цикле отрисовки вида 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);

И приведенный выше код показывает мне правильный рисунок на прилагаемом Просмотрщике изображений.

Когда я преобразую растровое изображение в байтовый массив:

        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-байты [] отображаться как текстура / изображение в Unity? Я проверил, что байты отправляют правильно, то есть когда я отправляю байтовый массив {1,2,3,4} из Android, я получаю {1,2,3,4} на стороне единства.

это не означает, что Unity выдает ошибку при попытке передать байты как байт [], поэтому вместо этого я должен следовать этому совету на стороне C #:

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

и тривиальный байтовый [] контейнерный класс "Buffer" на стороне Java

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...