Home | History | Annotate | Download | only in gles11
      1 /* void glGetActiveUniformBlockName ( GLuint program, GLuint uniformBlockIndex, GLsizei bufSize, GLsizei *length, GLchar *uniformBlockName ) */
      2 static void
      3 android_glGetActiveUniformBlockName_III_3II_3BI
      4     (JNIEnv* _env, jobject _this, jint program, jint uniformBlockIndex, int bufSize, jintArray length_ref, jint lengthOffset, jbyteArray name_ref, jint nameOffset) {
      5     jint _exception = 0;
      6     const char* _exceptionType;
      7     const char* _exceptionMessage;
      8     GLsizei* _length_base = (GLsizei*)0;
      9     jint _lengthRemaining;
     10     GLsizei* _length = (GLsizei*)0;
     11     GLchar* _name_base = (GLchar*)0;
     12     jint _nameRemaining;
     13     GLchar* _name = (GLchar*)0;
     14 
     15     if (length_ref) {
     16         if (lengthOffset < 0) {
     17             _exception = 1;
     18             _exceptionType = "java/lang/IllegalArgumentException";
     19             _exceptionMessage = "lengthOffset < 0";
     20             goto exit;
     21         }
     22         _lengthRemaining = _env->GetArrayLength(length_ref) - lengthOffset;
     23         _length_base = (GLsizei*)_env->GetIntArrayElements(
     24                 length_ref, (jboolean*)0);
     25         _length = _length_base + lengthOffset;
     26     }
     27 
     28     if (!name_ref) {
     29         _exception = 1;
     30         _exceptionType = "java/lang/IllegalArgumentException";
     31         _exceptionMessage = "uniformBlockName == null";
     32         goto exit;
     33     }
     34     if (nameOffset < 0) {
     35         _exception = 1;
     36         _exceptionType = "java/lang/IllegalArgumentException";
     37         _exceptionMessage = "uniformBlockNameOffset < 0";
     38         goto exit;
     39     }
     40     _nameRemaining = _env->GetArrayLength(name_ref) - nameOffset;
     41     _name_base = (GLchar*)_env->GetByteArrayElements(
     42             name_ref, (jboolean*)0);
     43     _name = _name_base + nameOffset;
     44 
     45     glGetActiveUniformBlockName(
     46         (GLuint)program,
     47         (GLuint)uniformBlockIndex,
     48         (GLsizei)bufSize,
     49         (GLsizei*)_length,
     50         (GLchar*)_name
     51     );
     52 
     53 exit:
     54     if (_name_base) {
     55         _env->ReleaseByteArrayElements(name_ref, (jbyte*)_name_base,
     56             _exception ? JNI_ABORT: 0);
     57     }
     58     if (_length_base) {
     59         _env->ReleaseIntArrayElements(length_ref, (jint*)_length_base,
     60             _exception ? JNI_ABORT: 0);
     61     }
     62     if (_exception) {
     63         jniThrowException(_env, _exceptionType, _exceptionMessage);
     64     }
     65 }
     66 
     67 /* void glGetActiveUniformBlockName ( GLuint program, GLuint uniformBlockIndex, GLsizei bufSize, GLsizei *length, GLchar *uniformBlockName ) */
     68 static void
     69 android_glGetActiveUniformBlockName_IILjava_nio_Buffer_2Ljava_nio_Buffer_2
     70     (JNIEnv* _env, jobject _this, jint program, jint uniformBlockIndex, jobject length_buf, jobject uniformBlockName_buf) {
     71     jint _exception = 0;
     72     const char* _exceptionType;
     73     const char* _exceptionMessage;
     74     jarray _lengthArray = (jarray)0;
     75     jint _lengthBufferOffset = (jint)0;
     76     GLsizei* _length = (GLsizei*)0;
     77     jint _lengthRemaining;
     78     jarray _nameArray = (jarray)0;
     79     jint _nameBufferOffset = (jint)0;
     80     GLchar* _name = (GLchar*)0;
     81     jint _nameRemaining;
     82 
     83     _length = (GLsizei*)getPointer(_env, length_buf, &_lengthArray, &_lengthRemaining, &_lengthBufferOffset);
     84     if (_length == NULL) {
     85         GLsizei* _lengthBase = (GLsizei*)_env->GetPrimitiveArrayCritical(_lengthArray, (jboolean*)0);
     86         _length = (GLsizei*)(_lengthBase + _lengthBufferOffset);
     87     }
     88 
     89     _name = (GLchar*)getPointer(_env, uniformBlockName_buf, &_nameArray, &_nameRemaining, &_nameBufferOffset);
     90     if (_name == NULL) {
     91         GLchar* _nameBase = (GLchar*)_env->GetPrimitiveArrayCritical(_nameArray, (jboolean*)0);
     92         _name = (GLchar*)(_nameBase + _nameBufferOffset);
     93     }
     94 
     95     glGetActiveUniformBlockName(
     96         (GLuint)program,
     97         (GLuint)uniformBlockIndex,
     98         (GLsizei)_nameRemaining,
     99         _length, _name
    100     );
    101     if (_nameArray) {
    102         releasePointer(_env, _nameArray, _name, JNI_TRUE);
    103     }
    104     if (_lengthArray) {
    105         releasePointer(_env, _lengthArray, _length, JNI_TRUE);
    106     }
    107 }
    108 
    109 /* void glGetActiveUniformBlockName ( GLuint program, GLuint uniformBlockIndex, GLsizei bufSize, GLsizei *length, GLchar *uniformBlockName ) */
    110 static jstring
    111 android_glGetActiveUniformBlockName_II
    112     (JNIEnv *_env, jobject _this, jint program, jint uniformBlockIndex) {
    113     GLint len = 0;
    114     glGetActiveUniformBlockiv((GLuint)program, (GLuint)uniformBlockIndex,
    115             GL_UNIFORM_BLOCK_NAME_LENGTH, &len);
    116     GLchar* name = (GLchar*)malloc(len);
    117     glGetActiveUniformBlockName((GLuint)program, (GLuint)uniformBlockIndex,
    118         len, NULL, name);
    119     jstring result = _env->NewStringUTF(name);
    120     free(name);
    121     return result;
    122 }
    123