Advertisement
Guest User

LoadShader

a guest
Feb 26th, 2012
666
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.89 KB | None | 0 0
  1. C++ func which calls a Java method (JNI)
  2. char* loadAsset(const char* path)
  3. {
  4.  jstring _path = (*GET_JAVA_ENV())->NewStringUTF(GET_JAVA_ENV(), path);
  5.  jbyteArray result = (jbyteArray) (*GET_JAVA_ENV())->CallStaticObjectMethod(GET_JAVA_ENV(), GET_ACTIVITY_CLASS(), GET_STATIC_METHOD_ID("getAssetContents","(Ljava/lang/String;)[B"), _path);
  6.  jsize size = (*GET_JAVA_ENV())->GetArrayLength(GET_JAVA_ENV(), result);
  7.  char* data = (char*)calloc((size_t)size, sizeof(char));
  8.  (*GET_JAVA_ENV())->GetByteArrayRegion(GET_JAVA_ENV(), result, (jsize)0, size, (jbyte*)data);
  9.  return data; //data is returned as shader source
  10. }
  11.  
  12. Java Function which loads shader from android assets
  13.  public byte[] getAssetContents(String path) throws IOException
  14.  {
  15.   InputStream is = assetManager.open(path, AssetManager.ACCESS_BUFFER);
  16.   byte buffer[] = new byte[is.available()];
  17.   is.read(buffer);
  18.   return buffer;
  19.  }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement