У меня есть сцена единства, где я хочу передать Texture2D в Android, выполнить некоторую обработку, а затем сохранить ее как растровое изображение.Мой код не работает.Для простоты я удалил часть обработки, и я пытаюсь просто сохранить изображение как растровое изображение.
На стороне единства есть некоторая инициализация для пакета Android и этой строки:
_pluginInterface.CallStatic("ProcessImage", testTexture.GetNativeTexturePtr().ToInt32(), testTexture.width, testTexture.height);
На стороне Java:
public static void ProcessImage(int ptr, int width, int height){
Bitmap b = Bitmap.createBitmap(width, height,Bitmap.Config.ARGB_8888); // this is just so I get the right length
int byteCount = b.getByteCount();
ByteBuffer inputBuffer = ByteBuffer.allocate(byteCount);
GLES20.glBindTexture(GLES20.GL_TEXTURE_2D, ptr);
GLES20.glReadPixels(0, 0, width, height, GLES20.GL_RGBA, GLES20.GL_UNSIGNED_BYTE, inputBuffer);
Bitmap bmp = Bitmap.createBitmap(width, height, Bitmap.Config.RGB_565);
inputBuffer.rewind();
bmp.copyPixelsFromBuffer(inputBuffer);
SaveToFileDebug(bmp); // basic function that saves the bitmap
}
Как вы, вероятно, можете сказать, что я повсюду с кодировками, и я думаю, что это может быть проблемой, но они, кажется, не совпадаютмежду единством и андроидом.
Заранее спасибо