title: How to use unity CreateExternalTexture on Android?
body: <p>Can someone please help me figure out what is the problem with my code? I am trying to load an image from the native side and send the texture to Unity. I am using Unity Pro 5.0.2f1.</p>
  
  <p>Unity Side:</p>
  
  <pre><code>void Start () {
  AndroidJavaObject mImageLoader = new AndroidJavaObject("com.saeid.android.LoadTexture2D");
  Texture2D texture2D = new Texture2D(1920, 1080, TextureFormat.ARGB32, false);
  
  Int32 texPtr = mImageLoader.Call &lt;Int32&gt; ("loadImageReturnTexturePtr", "/storage/sdcard0/Images/test.jpg");
  Debug.Log("texture pointer? " + texPtr);
  Texture2D nativeTexture = Texture2D.CreateExternalTexture (1920, 1080, TextureFormat.ARGB32 , false, false, (IntPtr)texPtr);
  texture2D.UpdateExternalTexture(nativeTexture.GetNativeTexturePtr());
  gameObject.GetComponent&lt;Renderer&gt;().material.mainTexture = texture2D;
  }
  </code></pre>
  
  <p>Java Side:</p>
  
  <pre><code>public int loadImageReturnTexturePtr(String imagePath) {
  Log.d(LOGTAG, "loading image1: " + imagePath);
  
  Bitmap bitmap = BitmapFactory.decodeFile(imagePath);
  Log.d(LOGTAG, "Bitmap is: " + bitmap);
  
  ByteBuffer buffer = ByteBuffer.allocate(bitmap.getByteCount());
  bitmap.copyPixelsToBuffer(buffer);
  
  int textures[] = new int[1];
  GLES20.glGenTextures(1, textures, 0);
  int textureId = textures[0];
  
  GLES20.glActiveTexture(GLES20.GL_TEXTURE0);
  GLES20.glBindTexture(GLES20.GL_TEXTURE_2D, textureId);
  GLES20.glTexImage2D(GLES20.GL_TEXTURE_2D, 0, GLES20.GL_RGBA, 1920, 1080, 0, GLES20.GL_RGBA, GLES20.GL_UNSIGNED_BYTE, buffer);
  GLES20.glTexParameteri(GLES20.GL_TEXTURE_2D, GLES20.GL_TEXTURE_MIN_FILTER, GLES20.GL_LINEAR);
  GLES20.glTexParameteri(GLES20.GL_TEXTURE_2D, GLES20.GL_TEXTURE_MAG_FILTER, GLES20.GL_LINEAR);
  GLES20.glTexParameteri(GLES20.GL_TEXTURE_2D, GLES20.GL_TEXTURE_WRAP_S,
  GLES20.GL_CLAMP_TO_EDGE);
  GLES20.glTexParameteri(GLES20.GL_TEXTURE_2D, GLES20.GL_TEXTURE_WRAP_T,
  GLES20.GL_CLAMP_TO_EDGE);
  GLES20.glBindTexture(GLES20.GL_TEXTURE_2D, 0);
  Log.d(LOGTAG, "texture id returned: " + textureId);
  
  return textureId;
  } 
  </code></pre>