1d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* 2d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall** 3d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall** Copyright 2013, The Android Open Source Project 4d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall** 5d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall** Licensed under the Apache License, Version 2.0 (the "License"); 6d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall** you may not use this file except in compliance with the License. 7d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall** You may obtain a copy of the License at 8d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall** 9d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall** http://www.apache.org/licenses/LICENSE-2.0 10d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall** 11d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall** Unless required by applicable law or agreed to in writing, software 12d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall** distributed under the License is distributed on an "AS IS" BASIS, 13d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall** See the License for the specific language governing permissions and 15d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall** limitations under the License. 16d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall*/ 17d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 18d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall// This source file is automatically generated 19d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 20bfe6333c3cf529600f41f14e3b8c5846e632c9a2Andreas Gampe#pragma GCC diagnostic ignored "-Wunused-variable" 21bfe6333c3cf529600f41f14e3b8c5846e632c9a2Andreas Gampe#pragma GCC diagnostic ignored "-Wunused-function" 22bfe6333c3cf529600f41f14e3b8c5846e632c9a2Andreas Gampe 23d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall#include <GLES3/gl3.h> 24d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall#include <GLES3/gl3ext.h> 25d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 269626f8203a8c222b8960a49cdc66d540fdb688b0Jesse Hall#include <jni.h> 272279b2534272282a5b5152723235da397e49195cSteven Moreland#include <nativehelper/JNIHelp.h> 28d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall#include <android_runtime/AndroidRuntime.h> 29d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall#include <utils/misc.h> 30d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall#include <assert.h> 31d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 32d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic int initialized = 0; 33d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 34d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic jclass nioAccessClass; 35d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic jclass bufferClass; 36d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic jmethodID getBasePointerID; 37d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic jmethodID getBaseArrayID; 38d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic jmethodID getBaseArrayOffsetID; 39d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic jfieldID positionID; 40d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic jfieldID limitID; 41d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic jfieldID elementSizeShiftID; 42d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 43d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 44d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* special calls implemented in Android's GLES wrapper used to more 45d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall * efficiently bound-check passed arrays */ 46d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallextern "C" { 47d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall#ifdef GL_VERSION_ES_CM_1_1 48d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse HallGL_API void GL_APIENTRY glColorPointerBounds(GLint size, GLenum type, GLsizei stride, 49d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const GLvoid *ptr, GLsizei count); 50d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse HallGL_API void GL_APIENTRY glNormalPointerBounds(GLenum type, GLsizei stride, 51d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const GLvoid *pointer, GLsizei count); 52d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse HallGL_API void GL_APIENTRY glTexCoordPointerBounds(GLint size, GLenum type, 53d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLsizei stride, const GLvoid *pointer, GLsizei count); 54d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse HallGL_API void GL_APIENTRY glVertexPointerBounds(GLint size, GLenum type, 55d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLsizei stride, const GLvoid *pointer, GLsizei count); 56d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse HallGL_API void GL_APIENTRY glPointSizePointerOESBounds(GLenum type, 57d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLsizei stride, const GLvoid *pointer, GLsizei count); 58d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse HallGL_API void GL_APIENTRY glMatrixIndexPointerOESBounds(GLint size, GLenum type, 59d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLsizei stride, const GLvoid *pointer, GLsizei count); 60d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse HallGL_API void GL_APIENTRY glWeightPointerOESBounds(GLint size, GLenum type, 61d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLsizei stride, const GLvoid *pointer, GLsizei count); 62d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall#endif 63d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall#ifdef GL_ES_VERSION_2_0 64d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void glVertexAttribPointerBounds(GLuint indx, GLint size, GLenum type, 65d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLboolean normalized, GLsizei stride, const GLvoid *pointer, GLsizei count) { 66d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glVertexAttribPointer(indx, size, type, normalized, stride, pointer); 67d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 68d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall#endif 69d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall#ifdef GL_ES_VERSION_3_0 70d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void glVertexAttribIPointerBounds(GLuint indx, GLint size, GLenum type, 71d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLsizei stride, const GLvoid *pointer, GLsizei count) { 72d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glVertexAttribIPointer(indx, size, type, stride, pointer); 73d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 74d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall#endif 75d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 76d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 77d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* Cache method IDs each time the class is loaded. */ 78d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 79d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 80d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse HallnativeClassInit(JNIEnv *_env, jclass glImplClass) 81d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{ 82d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jclass nioAccessClassLocal = _env->FindClass("java/nio/NIOAccess"); 83d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall nioAccessClass = (jclass) _env->NewGlobalRef(nioAccessClassLocal); 84d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 85d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jclass bufferClassLocal = _env->FindClass("java/nio/Buffer"); 86d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall bufferClass = (jclass) _env->NewGlobalRef(bufferClassLocal); 87d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 88d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall getBasePointerID = _env->GetStaticMethodID(nioAccessClass, 89d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall "getBasePointer", "(Ljava/nio/Buffer;)J"); 90d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall getBaseArrayID = _env->GetStaticMethodID(nioAccessClass, 91d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall "getBaseArray", "(Ljava/nio/Buffer;)Ljava/lang/Object;"); 92d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall getBaseArrayOffsetID = _env->GetStaticMethodID(nioAccessClass, 93d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall "getBaseArrayOffset", "(Ljava/nio/Buffer;)I"); 94d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 95d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall positionID = _env->GetFieldID(bufferClass, "position", "I"); 96d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall limitID = _env->GetFieldID(bufferClass, "limit", "I"); 97d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall elementSizeShiftID = 98d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _env->GetFieldID(bufferClass, "_elementSizeShift", "I"); 99d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 100d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 101d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void * 102d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse HallgetPointer(JNIEnv *_env, jobject buffer, jarray *array, jint *remaining, jint *offset) 103d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{ 104d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint position; 105d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint limit; 106d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint elementSizeShift; 107d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jlong pointer; 108d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 109d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall position = _env->GetIntField(buffer, positionID); 110d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall limit = _env->GetIntField(buffer, limitID); 111d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall elementSizeShift = _env->GetIntField(buffer, elementSizeShiftID); 112d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall *remaining = (limit - position) << elementSizeShift; 113d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall pointer = _env->CallStaticLongMethod(nioAccessClass, 114d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall getBasePointerID, buffer); 115d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (pointer != 0L) { 116d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall *array = NULL; 11701c26ea89d4bbea3cf550e9328742302dd9a2b25Ashok Bhat return reinterpret_cast<void*>(pointer); 118d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 119d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 120d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall *array = (jarray) _env->CallStaticObjectMethod(nioAccessClass, 121d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall getBaseArrayID, buffer); 122d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall *offset = _env->CallStaticIntMethod(nioAccessClass, 123d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall getBaseArrayOffsetID, buffer); 124d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 125d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall return NULL; 126d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 127d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 1283b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchiclass ByteArrayGetter { 1293b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchipublic: 1303b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi static void* Get(JNIEnv* _env, jbyteArray array, jboolean* is_copy) { 1313b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi return _env->GetByteArrayElements(array, is_copy); 1323b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi } 1333b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi}; 1343b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchiclass BooleanArrayGetter { 1353b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchipublic: 1363b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi static void* Get(JNIEnv* _env, jbooleanArray array, jboolean* is_copy) { 1373b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi return _env->GetBooleanArrayElements(array, is_copy); 1383b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi } 1393b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi}; 1403b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchiclass CharArrayGetter { 1413b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchipublic: 1423b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi static void* Get(JNIEnv* _env, jcharArray array, jboolean* is_copy) { 1433b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi return _env->GetCharArrayElements(array, is_copy); 1443b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi } 1453b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi}; 1463b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchiclass ShortArrayGetter { 1473b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchipublic: 1483b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi static void* Get(JNIEnv* _env, jshortArray array, jboolean* is_copy) { 1493b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi return _env->GetShortArrayElements(array, is_copy); 1503b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi } 1513b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi}; 1523b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchiclass IntArrayGetter { 1533b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchipublic: 1543b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi static void* Get(JNIEnv* _env, jintArray array, jboolean* is_copy) { 1553b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi return _env->GetIntArrayElements(array, is_copy); 1563b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi } 1573b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi}; 1583b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchiclass LongArrayGetter { 1593b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchipublic: 1603b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi static void* Get(JNIEnv* _env, jlongArray array, jboolean* is_copy) { 1613b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi return _env->GetLongArrayElements(array, is_copy); 1623b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi } 1633b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi}; 1643b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchiclass FloatArrayGetter { 1653b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchipublic: 1663b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi static void* Get(JNIEnv* _env, jfloatArray array, jboolean* is_copy) { 1673b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi return _env->GetFloatArrayElements(array, is_copy); 1683b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi } 1693b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi}; 1703b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchiclass DoubleArrayGetter { 1713b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchipublic: 1723b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi static void* Get(JNIEnv* _env, jdoubleArray array, jboolean* is_copy) { 1733b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi return _env->GetDoubleArrayElements(array, is_copy); 1743b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi } 1753b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi}; 1763b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi 1773b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchitemplate<typename JTYPEARRAY, typename ARRAYGETTER> 1783b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchistatic void* 1793b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi YamauchigetArrayPointer(JNIEnv *_env, JTYPEARRAY array, jboolean* is_copy) { 1803b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi return ARRAYGETTER::Get(_env, array, is_copy); 1813b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi} 1823b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi 1833b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchiclass ByteArrayReleaser { 1843b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchipublic: 1853b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi static void Release(JNIEnv* _env, jbyteArray array, jbyte* data, jboolean commit) { 1863b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseByteArrayElements(array, data, commit ? 0 : JNI_ABORT); 1873b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi } 1883b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi}; 1893b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchiclass BooleanArrayReleaser { 1903b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchipublic: 1913b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi static void Release(JNIEnv* _env, jbooleanArray array, jboolean* data, jboolean commit) { 1923b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseBooleanArrayElements(array, data, commit ? 0 : JNI_ABORT); 1933b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi } 1943b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi}; 1953b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchiclass CharArrayReleaser { 1963b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchipublic: 1973b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi static void Release(JNIEnv* _env, jcharArray array, jchar* data, jboolean commit) { 1983b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseCharArrayElements(array, data, commit ? 0 : JNI_ABORT); 1993b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi } 2003b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi}; 2013b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchiclass ShortArrayReleaser { 2023b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchipublic: 2033b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi static void Release(JNIEnv* _env, jshortArray array, jshort* data, jboolean commit) { 2043b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseShortArrayElements(array, data, commit ? 0 : JNI_ABORT); 2053b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi } 2063b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi}; 2073b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchiclass IntArrayReleaser { 2083b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchipublic: 2093b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi static void Release(JNIEnv* _env, jintArray array, jint* data, jboolean commit) { 2103b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseIntArrayElements(array, data, commit ? 0 : JNI_ABORT); 2113b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi } 2123b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi}; 2133b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchiclass LongArrayReleaser { 2143b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchipublic: 2153b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi static void Release(JNIEnv* _env, jlongArray array, jlong* data, jboolean commit) { 2163b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseLongArrayElements(array, data, commit ? 0 : JNI_ABORT); 2173b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi } 2183b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi}; 2193b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchiclass FloatArrayReleaser { 2203b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchipublic: 2213b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi static void Release(JNIEnv* _env, jfloatArray array, jfloat* data, jboolean commit) { 2223b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseFloatArrayElements(array, data, commit ? 0 : JNI_ABORT); 2233b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi } 2243b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi}; 2253b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchiclass DoubleArrayReleaser { 2263b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchipublic: 2273b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi static void Release(JNIEnv* _env, jdoubleArray array, jdouble* data, jboolean commit) { 2283b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseDoubleArrayElements(array, data, commit ? 0 : JNI_ABORT); 2293b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi } 2303b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi}; 2313b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi 2323b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchitemplate<typename JTYPEARRAY, typename NTYPEARRAY, typename ARRAYRELEASER> 2333b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchistatic void 2343b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi YamauchireleaseArrayPointer(JNIEnv *_env, JTYPEARRAY array, NTYPEARRAY data, jboolean commit) { 2353b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi ARRAYRELEASER::Release(_env, array, data, commit); 2363b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi} 2373b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi 238d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 239d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse HallreleasePointer(JNIEnv *_env, jarray array, void *data, jboolean commit) 240d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{ 241d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _env->ReleasePrimitiveArrayCritical(array, data, 242d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall commit ? 0 : JNI_ABORT); 243d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 244d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 245d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void * 246d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse HallgetDirectBufferPointer(JNIEnv *_env, jobject buffer) { 247d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall char* buf = (char*) _env->GetDirectBufferAddress(buffer); 248d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (buf) { 249d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint position = _env->GetIntField(buffer, positionID); 250d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint elementSizeShift = _env->GetIntField(buffer, elementSizeShiftID); 251d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall buf += position << elementSizeShift; 252d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } else { 253d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jniThrowException(_env, "java/lang/IllegalArgumentException", 254d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall "Must use a native order direct Buffer"); 255d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 256d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall return (void*) buf; 257d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 258d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 259d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall// -------------------------------------------------------------------------- 260d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 261d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* 262d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall * returns the number of values glGet returns for a given pname. 263d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall * 264d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall * The code below is written such that pnames requiring only one values 265d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall * are the default (and are not explicitely tested for). This makes the 266d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall * checking code much shorter/readable/efficient. 267d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall * 268d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall * This means that unknown pnames (e.g.: extensions) will default to 1. If 269d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall * that unknown pname needs more than 1 value, then the validation check 270d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall * is incomplete and the app may crash if it passed the wrong number params. 271d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall */ 272d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic int getNeededCount(GLint pname) { 273d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall int needed = 1; 274dc43a6c99c21e99723058bab4041e80557795a74Romain Guy#ifdef GL_ES_VERSION_3_0 275dc43a6c99c21e99723058bab4041e80557795a74Romain Guy // GLES 3.x pnames 276dc43a6c99c21e99723058bab4041e80557795a74Romain Guy switch (pname) { 277dc43a6c99c21e99723058bab4041e80557795a74Romain Guy case GL_MAX_VIEWPORT_DIMS: 278dc43a6c99c21e99723058bab4041e80557795a74Romain Guy needed = 2; 279dc43a6c99c21e99723058bab4041e80557795a74Romain Guy break; 280dc43a6c99c21e99723058bab4041e80557795a74Romain Guy 281dc43a6c99c21e99723058bab4041e80557795a74Romain Guy case GL_PROGRAM_BINARY_FORMATS: 282dc43a6c99c21e99723058bab4041e80557795a74Romain Guy glGetIntegerv(GL_NUM_PROGRAM_BINARY_FORMATS, &needed); 283dc43a6c99c21e99723058bab4041e80557795a74Romain Guy break; 284dc43a6c99c21e99723058bab4041e80557795a74Romain Guy } 285dc43a6c99c21e99723058bab4041e80557795a74Romain Guy#endif 286dc43a6c99c21e99723058bab4041e80557795a74Romain Guy 287d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall#ifdef GL_ES_VERSION_2_0 288d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall // GLES 2.x pnames 289d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall switch (pname) { 290d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall case GL_ALIASED_LINE_WIDTH_RANGE: 291d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall case GL_ALIASED_POINT_SIZE_RANGE: 292d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall needed = 2; 293d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall break; 294d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 295d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall case GL_BLEND_COLOR: 296d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall case GL_COLOR_CLEAR_VALUE: 297d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall case GL_COLOR_WRITEMASK: 298d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall case GL_SCISSOR_BOX: 299d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall case GL_VIEWPORT: 300d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall needed = 4; 301d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall break; 302d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 303d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall case GL_COMPRESSED_TEXTURE_FORMATS: 304d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glGetIntegerv(GL_NUM_COMPRESSED_TEXTURE_FORMATS, &needed); 305d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall break; 306d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 307d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall case GL_SHADER_BINARY_FORMATS: 308d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glGetIntegerv(GL_NUM_SHADER_BINARY_FORMATS, &needed); 309d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall break; 310d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 311d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall#endif 312d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 313d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall#ifdef GL_VERSION_ES_CM_1_1 314d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall // GLES 1.x pnames 315d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall switch (pname) { 316d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall case GL_ALIASED_LINE_WIDTH_RANGE: 317d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall case GL_ALIASED_POINT_SIZE_RANGE: 318d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall case GL_DEPTH_RANGE: 319d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall case GL_SMOOTH_LINE_WIDTH_RANGE: 320d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall case GL_SMOOTH_POINT_SIZE_RANGE: 321d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall needed = 2; 322d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall break; 323d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 324d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall case GL_CURRENT_NORMAL: 325d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall case GL_POINT_DISTANCE_ATTENUATION: 326d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall needed = 3; 327d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall break; 328d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 329d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall case GL_COLOR_CLEAR_VALUE: 330d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall case GL_COLOR_WRITEMASK: 331d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall case GL_CURRENT_COLOR: 332d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall case GL_CURRENT_TEXTURE_COORDS: 333d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall case GL_FOG_COLOR: 334d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall case GL_LIGHT_MODEL_AMBIENT: 335d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall case GL_SCISSOR_BOX: 336d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall case GL_VIEWPORT: 337d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall needed = 4; 338d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall break; 339d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 340d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall case GL_MODELVIEW_MATRIX: 341d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall case GL_PROJECTION_MATRIX: 342d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall case GL_TEXTURE_MATRIX: 343d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall needed = 16; 344d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall break; 345d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 346d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall case GL_COMPRESSED_TEXTURE_FORMATS: 347d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glGetIntegerv(GL_NUM_COMPRESSED_TEXTURE_FORMATS, &needed); 348d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall break; 349d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 350d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall#endif 351d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall return needed; 352d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 353d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 3543b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchitemplate <typename JTYPEARRAY, typename ARRAYGETTER, typename NTYPEARRAY, 3553b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi typename ARRAYRELEASER, typename CTYPE, void GET(GLenum, CTYPE*)> 356d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 357d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallget 358d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint pname, JTYPEARRAY params_ref, jint offset) { 359d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _exception = 0; 360d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char * _exceptionType; 361d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char * _exceptionMessage; 362d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall CTYPE *params_base = (CTYPE *) 0; 363d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _remaining; 364d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall CTYPE *params = (CTYPE *) 0; 365d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall int _needed = 0; 366d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 367d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (!params_ref) { 368d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 369d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 370d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "params == null"; 371d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 372d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 373d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (offset < 0) { 374d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 375d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 376d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "offset < 0"; 377d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 378d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 379d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _remaining = _env->GetArrayLength(params_ref) - offset; 380d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _needed = getNeededCount(pname); 381d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall // if we didn't find this pname, we just assume the user passed 382d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall // an array of the right size -- this might happen with extensions 383d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall // or if we forget an enum here. 384d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_remaining < _needed) { 385d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 386d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 387d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "length - offset < needed"; 388d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 389d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 3903b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi params_base = (CTYPE *) getArrayPointer<JTYPEARRAY, ARRAYGETTER>( 3913b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env, params_ref, (jboolean *)0); 392d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall params = params_base + offset; 393d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 394d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GET( 395d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)pname, 396d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (CTYPE *)params 397d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 398d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 399d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallexit: 400d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (params_base) { 4013b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi releaseArrayPointer<JTYPEARRAY, NTYPEARRAY, ARRAYRELEASER>( 4023b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env, params_ref, params_base, !_exception); 403d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 404d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_exception) { 405d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jniThrowException(_env, _exceptionType, _exceptionMessage); 406d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 407d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 408d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 409d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 4103b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchitemplate <typename CTYPE, typename JTYPEARRAY, typename ARRAYGETTER, typename NTYPEARRAY, 4113b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi typename ARRAYRELEASER, void GET(GLenum, CTYPE*)> 412d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 413d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallgetarray 414d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint pname, jobject params_buf) { 415d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _exception = 0; 416d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char * _exceptionType; 417d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char * _exceptionMessage; 4183b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi JTYPEARRAY _array = (JTYPEARRAY) 0; 419d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _bufferOffset = (jint) 0; 420d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _remaining; 421d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall CTYPE *params = (CTYPE *) 0; 422d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall int _needed = 0; 423d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 4243b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi params = (CTYPE *)getPointer(_env, params_buf, (jarray*)&_array, &_remaining, &_bufferOffset); 425cee5198e7199fcbb131ff0d30165fb1d5c0107cfAndy McFadden _remaining /= sizeof(CTYPE); // convert from bytes to item count 426d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _needed = getNeededCount(pname); 427d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall // if we didn't find this pname, we just assume the user passed 428d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall // an array of the right size -- this might happen with extensions 429d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall // or if we forget an enum here. 430d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_needed>0 && _remaining < _needed) { 431d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 432d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 433d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "remaining() < needed"; 434d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 435d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 436d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (params == NULL) { 4373b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi char * _paramsBase = (char *) getArrayPointer<JTYPEARRAY, ARRAYGETTER>( 4383b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env, _array, (jboolean *) 0); 439d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall params = (CTYPE *) (_paramsBase + _bufferOffset); 440d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 441d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GET( 442d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)pname, 443d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (CTYPE *)params 444d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 445d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 446d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallexit: 447d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_array) { 4483b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi releaseArrayPointer<JTYPEARRAY, NTYPEARRAY, ARRAYRELEASER>( 4493b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env, _array, (NTYPEARRAY)params, _exception ? JNI_FALSE : JNI_TRUE); 450d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 451d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_exception) { 452d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jniThrowException(_env, _exceptionType, _exceptionMessage); 453d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 454d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 455d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 456d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall// -------------------------------------------------------------------------- 457d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glReadBuffer ( GLenum mode ) */ 458d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 459d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glReadBuffer__I 460d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint mode) { 461d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glReadBuffer( 462d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)mode 463d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 464d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 465d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 466d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glDrawRangeElements ( GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const GLvoid *indices ) */ 467d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 468d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glDrawRangeElements__IIIIILjava_nio_Buffer_2 469d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint mode, jint start, jint end, jint count, jint type, jobject indices_buf) { 47084cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy jint _exception = 0; 47184cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy const char * _exceptionType = NULL; 47284cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy const char * _exceptionMessage = NULL; 473d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jarray _array = (jarray) 0; 474d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _bufferOffset = (jint) 0; 475d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _remaining; 476d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLvoid *indices = (GLvoid *) 0; 477d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 47884cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy if (!indices_buf) { 47984cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exception = 1; 48084cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exceptionType = "java/lang/IllegalArgumentException"; 48184cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exceptionMessage = "indices == null"; 48284cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy goto exit; 48384cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy } 4843b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi indices = (GLvoid *)getPointer(_env, indices_buf, (jarray*)&_array, &_remaining, &_bufferOffset); 485d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (indices == NULL) { 486d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall char * _indicesBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); 487d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall indices = (GLvoid *) (_indicesBase + _bufferOffset); 488d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 489d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glDrawRangeElements( 490d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)mode, 491d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint)start, 492d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint)end, 493d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)count, 494d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)type, 495d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLvoid *)indices 496d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 49784cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy 49884cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guyexit: 499d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_array) { 500d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall releasePointer(_env, _array, indices, JNI_FALSE); 501d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 50284cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy if (_exception) { 50384cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy jniThrowException(_env, _exceptionType, _exceptionMessage); 50484cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy } 505d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 506d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 507d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glDrawRangeElements ( GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, GLsizei offset ) */ 508d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 509d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glDrawRangeElements__IIIIII 510d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint mode, jint start, jint end, jint count, jint type, jint offset) { 511d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glDrawRangeElements( 512d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)mode, 513d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint)start, 514d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint)end, 515d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)count, 516d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)type, 51701c26ea89d4bbea3cf550e9328742302dd9a2b25Ashok Bhat reinterpret_cast<GLvoid *>(offset) 518d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 519d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 520d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 521d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glTexImage3D ( GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const GLvoid *pixels ) */ 522d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 523d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glTexImage3D__IIIIIIIIILjava_nio_Buffer_2 524d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint target, jint level, jint internalformat, jint width, jint height, jint depth, jint border, jint format, jint type, jobject pixels_buf) { 52584cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy jint _exception = 0; 52684cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy const char * _exceptionType = NULL; 52784cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy const char * _exceptionMessage = NULL; 528d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jarray _array = (jarray) 0; 529d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _bufferOffset = (jint) 0; 530d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _remaining; 531d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLvoid *pixels = (GLvoid *) 0; 532d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 5336aff9068f91fdfef0bc55fda0721c180c0de9284Pablo Ceballos if (pixels_buf) { 5346aff9068f91fdfef0bc55fda0721c180c0de9284Pablo Ceballos pixels = (GLvoid *)getPointer(_env, pixels_buf, (jarray*)&_array, &_remaining, &_bufferOffset); 5356aff9068f91fdfef0bc55fda0721c180c0de9284Pablo Ceballos } 5366aff9068f91fdfef0bc55fda0721c180c0de9284Pablo Ceballos if (pixels_buf && pixels == NULL) { 537d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall char * _pixelsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); 538d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall pixels = (GLvoid *) (_pixelsBase + _bufferOffset); 539d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 540d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glTexImage3D( 541d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)target, 542d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint)level, 543d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint)internalformat, 544d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)width, 545d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)height, 546d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)depth, 547d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint)border, 548d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)format, 549d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)type, 550d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLvoid *)pixels 551d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 552d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_array) { 553d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall releasePointer(_env, _array, pixels, JNI_FALSE); 554d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 55584cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy if (_exception) { 55684cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy jniThrowException(_env, _exceptionType, _exceptionMessage); 55784cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy } 558d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 559d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 560d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glTexImage3D ( GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, GLsizei offset ) */ 561d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 562d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glTexImage3D__IIIIIIIIII 563d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint target, jint level, jint internalformat, jint width, jint height, jint depth, jint border, jint format, jint type, jint offset) { 564d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glTexImage3D( 565d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)target, 566d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint)level, 567d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint)internalformat, 568d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)width, 569d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)height, 570d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)depth, 571d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint)border, 572d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)format, 573d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)type, 57401c26ea89d4bbea3cf550e9328742302dd9a2b25Ashok Bhat reinterpret_cast<GLvoid *>(offset) 575d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 576d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 577d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 578d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glTexSubImage3D ( GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const GLvoid *pixels ) */ 579d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 580d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glTexSubImage3D__IIIIIIIIIILjava_nio_Buffer_2 581d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint target, jint level, jint xoffset, jint yoffset, jint zoffset, jint width, jint height, jint depth, jint format, jint type, jobject pixels_buf) { 58284cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy jint _exception = 0; 58384cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy const char * _exceptionType = NULL; 58484cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy const char * _exceptionMessage = NULL; 585d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jarray _array = (jarray) 0; 586d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _bufferOffset = (jint) 0; 587d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _remaining; 588d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLvoid *pixels = (GLvoid *) 0; 589d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 59084cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy if (!pixels_buf) { 59184cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exception = 1; 59284cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exceptionType = "java/lang/IllegalArgumentException"; 59384cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exceptionMessage = "pixels == null"; 59484cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy goto exit; 59584cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy } 5963b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi pixels = (GLvoid *)getPointer(_env, pixels_buf, (jarray*)&_array, &_remaining, &_bufferOffset); 597d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (pixels == NULL) { 598d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall char * _pixelsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); 599d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall pixels = (GLvoid *) (_pixelsBase + _bufferOffset); 600d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 601d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glTexSubImage3D( 602d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)target, 603d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint)level, 604d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint)xoffset, 605d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint)yoffset, 606d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint)zoffset, 607d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)width, 608d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)height, 609d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)depth, 610d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)format, 611d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)type, 612d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLvoid *)pixels 613d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 61484cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy 61584cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guyexit: 616d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_array) { 617d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall releasePointer(_env, _array, pixels, JNI_FALSE); 618d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 61984cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy if (_exception) { 62084cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy jniThrowException(_env, _exceptionType, _exceptionMessage); 62184cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy } 622d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 623d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 624d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glTexSubImage3D ( GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, GLsizei offset ) */ 625d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 626d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glTexSubImage3D__IIIIIIIIIII 627d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint target, jint level, jint xoffset, jint yoffset, jint zoffset, jint width, jint height, jint depth, jint format, jint type, jint offset) { 628d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glTexSubImage3D( 629d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)target, 630d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint)level, 631d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint)xoffset, 632d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint)yoffset, 633d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint)zoffset, 634d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)width, 635d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)height, 636d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)depth, 637d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)format, 638d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)type, 63901c26ea89d4bbea3cf550e9328742302dd9a2b25Ashok Bhat reinterpret_cast<GLvoid *>(offset) 640d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 641d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 642d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 643d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glCopyTexSubImage3D ( GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height ) */ 644d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 645d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glCopyTexSubImage3D__IIIIIIIII 646d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint target, jint level, jint xoffset, jint yoffset, jint zoffset, jint x, jint y, jint width, jint height) { 647d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glCopyTexSubImage3D( 648d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)target, 649d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint)level, 650d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint)xoffset, 651d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint)yoffset, 652d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint)zoffset, 653d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint)x, 654d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint)y, 655d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)width, 656d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)height 657d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 658d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 659d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 660d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glCompressedTexImage3D ( GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const GLvoid *data ) */ 661d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 662d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glCompressedTexImage3D__IIIIIIIILjava_nio_Buffer_2 663d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint target, jint level, jint internalformat, jint width, jint height, jint depth, jint border, jint imageSize, jobject data_buf) { 66484cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy jint _exception = 0; 66584cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy const char * _exceptionType = NULL; 66684cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy const char * _exceptionMessage = NULL; 667d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jarray _array = (jarray) 0; 668d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _bufferOffset = (jint) 0; 669d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _remaining; 670d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLvoid *data = (GLvoid *) 0; 671d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 67284cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy if (!data_buf) { 67384cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exception = 1; 67484cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exceptionType = "java/lang/IllegalArgumentException"; 67584cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exceptionMessage = "data == null"; 67684cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy goto exit; 67784cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy } 6783b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi data = (GLvoid *)getPointer(_env, data_buf, (jarray*)&_array, &_remaining, &_bufferOffset); 679d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (data == NULL) { 680d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall char * _dataBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); 681d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall data = (GLvoid *) (_dataBase + _bufferOffset); 682d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 683d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glCompressedTexImage3D( 684d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)target, 685d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint)level, 686d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)internalformat, 687d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)width, 688d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)height, 689d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)depth, 690d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint)border, 691d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)imageSize, 692d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLvoid *)data 693d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 69484cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy 69584cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guyexit: 696d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_array) { 697d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall releasePointer(_env, _array, data, JNI_FALSE); 698d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 69984cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy if (_exception) { 70084cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy jniThrowException(_env, _exceptionType, _exceptionMessage); 70184cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy } 702d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 703d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 704d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glCompressedTexImage3D ( GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, GLsizei offset ) */ 705d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 706d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glCompressedTexImage3D__IIIIIIIII 707d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint target, jint level, jint internalformat, jint width, jint height, jint depth, jint border, jint imageSize, jint offset) { 708d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glCompressedTexImage3D( 709d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)target, 710d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint)level, 711d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)internalformat, 712d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)width, 713d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)height, 714d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)depth, 715d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint)border, 716d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)imageSize, 71701c26ea89d4bbea3cf550e9328742302dd9a2b25Ashok Bhat reinterpret_cast<GLvoid *>(offset) 718d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 719d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 720d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 721d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glCompressedTexSubImage3D ( GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const GLvoid *data ) */ 722d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 723d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glCompressedTexSubImage3D__IIIIIIIIIILjava_nio_Buffer_2 724d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint target, jint level, jint xoffset, jint yoffset, jint zoffset, jint width, jint height, jint depth, jint format, jint imageSize, jobject data_buf) { 72584cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy jint _exception = 0; 72684cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy const char * _exceptionType = NULL; 72784cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy const char * _exceptionMessage = NULL; 728d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jarray _array = (jarray) 0; 729d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _bufferOffset = (jint) 0; 730d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _remaining; 731d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLvoid *data = (GLvoid *) 0; 732d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 73384cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy if (!data_buf) { 73484cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exception = 1; 73584cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exceptionType = "java/lang/IllegalArgumentException"; 73684cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exceptionMessage = "data == null"; 73784cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy goto exit; 73884cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy } 7393b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi data = (GLvoid *)getPointer(_env, data_buf, (jarray*)&_array, &_remaining, &_bufferOffset); 740d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (data == NULL) { 741d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall char * _dataBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); 742d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall data = (GLvoid *) (_dataBase + _bufferOffset); 743d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 744d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glCompressedTexSubImage3D( 745d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)target, 746d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint)level, 747d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint)xoffset, 748d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint)yoffset, 749d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint)zoffset, 750d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)width, 751d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)height, 752d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)depth, 753d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)format, 754d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)imageSize, 755d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLvoid *)data 756d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 75784cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy 75884cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guyexit: 759d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_array) { 760d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall releasePointer(_env, _array, data, JNI_FALSE); 761d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 76284cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy if (_exception) { 76384cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy jniThrowException(_env, _exceptionType, _exceptionMessage); 76484cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy } 765d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 766d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 767d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glCompressedTexSubImage3D ( GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, GLsizei offset ) */ 768d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 769d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glCompressedTexSubImage3D__IIIIIIIIIII 770d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint target, jint level, jint xoffset, jint yoffset, jint zoffset, jint width, jint height, jint depth, jint format, jint imageSize, jint offset) { 771d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glCompressedTexSubImage3D( 772d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)target, 773d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint)level, 774d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint)xoffset, 775d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint)yoffset, 776d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint)zoffset, 777d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)width, 778d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)height, 779d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)depth, 780d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)format, 781d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)imageSize, 78201c26ea89d4bbea3cf550e9328742302dd9a2b25Ashok Bhat reinterpret_cast<GLvoid *>(offset) 783d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 784d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 785d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 786d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glGenQueries ( GLsizei n, GLuint *ids ) */ 787d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 788d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glGenQueries__I_3II 789d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint n, jintArray ids_ref, jint offset) { 790d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _exception = 0; 791d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char * _exceptionType = NULL; 792d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char * _exceptionMessage = NULL; 793d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLuint *ids_base = (GLuint *) 0; 794d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _remaining; 795d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLuint *ids = (GLuint *) 0; 796d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 797d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (!ids_ref) { 798d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 799d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 800d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "ids == null"; 801d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 802d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 803d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (offset < 0) { 804d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 805d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 806d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "offset < 0"; 807d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 808d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 809d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _remaining = _env->GetArrayLength(ids_ref) - offset; 810d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ids_base = (GLuint *) 8113b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->GetIntArrayElements(ids_ref, (jboolean *)0); 812d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ids = ids_base + offset; 813d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 814d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glGenQueries( 815d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)n, 816d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint *)ids 817d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 818d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 819d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallexit: 820d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (ids_base) { 8213b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseIntArrayElements(ids_ref, (jint*)ids_base, 822d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception ? JNI_ABORT: 0); 823d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 824d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_exception) { 825d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jniThrowException(_env, _exceptionType, _exceptionMessage); 826d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 827d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 828d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 829d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glGenQueries ( GLsizei n, GLuint *ids ) */ 830d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 831d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glGenQueries__ILjava_nio_IntBuffer_2 832d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint n, jobject ids_buf) { 83384cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy jint _exception = 0; 83484cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy const char * _exceptionType = NULL; 83584cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy const char * _exceptionMessage = NULL; 8363b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi jintArray _array = (jintArray) 0; 837d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _bufferOffset = (jint) 0; 838d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _remaining; 839d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLuint *ids = (GLuint *) 0; 840d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 84184cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy if (!ids_buf) { 84284cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exception = 1; 84384cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exceptionType = "java/lang/IllegalArgumentException"; 84484cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exceptionMessage = "ids == null"; 84584cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy goto exit; 84684cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy } 8473b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi ids = (GLuint *)getPointer(_env, ids_buf, (jarray*)&_array, &_remaining, &_bufferOffset); 848d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (ids == NULL) { 8493b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi char * _idsBase = (char *)_env->GetIntArrayElements(_array, (jboolean *) 0); 850d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ids = (GLuint *) (_idsBase + _bufferOffset); 851d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 852d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glGenQueries( 853d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)n, 854d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint *)ids 855d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 85684cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy 85784cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guyexit: 858d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_array) { 85984cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _env->ReleaseIntArrayElements(_array, (jint*)ids, _exception ? JNI_ABORT : 0); 86084cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy } 86184cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy if (_exception) { 86284cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy jniThrowException(_env, _exceptionType, _exceptionMessage); 863d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 864d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 865d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 866d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glDeleteQueries ( GLsizei n, const GLuint *ids ) */ 867d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 868d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glDeleteQueries__I_3II 869d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint n, jintArray ids_ref, jint offset) { 870d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _exception = 0; 871d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char * _exceptionType = NULL; 872d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char * _exceptionMessage = NULL; 873d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLuint *ids_base = (GLuint *) 0; 874d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _remaining; 875d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLuint *ids = (GLuint *) 0; 876d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 877d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (!ids_ref) { 878d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 879d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 880d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "ids == null"; 881d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 882d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 883d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (offset < 0) { 884d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 885d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 886d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "offset < 0"; 887d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 888d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 889d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _remaining = _env->GetArrayLength(ids_ref) - offset; 890d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ids_base = (GLuint *) 8913b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->GetIntArrayElements(ids_ref, (jboolean *)0); 892d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ids = ids_base + offset; 893d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 894d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glDeleteQueries( 895d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)n, 896d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint *)ids 897d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 898d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 899d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallexit: 900d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (ids_base) { 9013b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseIntArrayElements(ids_ref, (jint*)ids_base, 902d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall JNI_ABORT); 903d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 904d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_exception) { 905d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jniThrowException(_env, _exceptionType, _exceptionMessage); 906d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 907d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 908d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 909d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glDeleteQueries ( GLsizei n, const GLuint *ids ) */ 910d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 911d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glDeleteQueries__ILjava_nio_IntBuffer_2 912d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint n, jobject ids_buf) { 91384cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy jint _exception = 0; 91484cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy const char * _exceptionType = NULL; 91584cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy const char * _exceptionMessage = NULL; 9163b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi jintArray _array = (jintArray) 0; 917d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _bufferOffset = (jint) 0; 918d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _remaining; 919d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLuint *ids = (GLuint *) 0; 920d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 92184cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy if (!ids_buf) { 92284cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exception = 1; 92384cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exceptionType = "java/lang/IllegalArgumentException"; 92484cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exceptionMessage = "ids == null"; 92584cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy goto exit; 92684cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy } 9273b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi ids = (GLuint *)getPointer(_env, ids_buf, (jarray*)&_array, &_remaining, &_bufferOffset); 928d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (ids == NULL) { 9293b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi char * _idsBase = (char *)_env->GetIntArrayElements(_array, (jboolean *) 0); 930d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ids = (GLuint *) (_idsBase + _bufferOffset); 931d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 932d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glDeleteQueries( 933d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)n, 934d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint *)ids 935d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 93684cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy 93784cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guyexit: 938d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_array) { 9393b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseIntArrayElements(_array, (jint*)ids, JNI_ABORT); 940d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 94184cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy if (_exception) { 94284cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy jniThrowException(_env, _exceptionType, _exceptionMessage); 94384cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy } 944d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 945d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 946d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* GLboolean glIsQuery ( GLuint id ) */ 947d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic jboolean 948d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glIsQuery__I 949d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint id) { 950d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLboolean _returnValue; 951d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _returnValue = glIsQuery( 952d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint)id 953d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 954d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall return (jboolean)_returnValue; 955d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 956d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 957d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glBeginQuery ( GLenum target, GLuint id ) */ 958d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 959d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glBeginQuery__II 960d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint target, jint id) { 961d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glBeginQuery( 962d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)target, 963d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint)id 964d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 965d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 966d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 967d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glEndQuery ( GLenum target ) */ 968d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 969d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glEndQuery__I 970d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint target) { 971d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glEndQuery( 972d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)target 973d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 974d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 975d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 976d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glGetQueryiv ( GLenum target, GLenum pname, GLint *params ) */ 977d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 978d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glGetQueryiv__II_3II 979d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint target, jint pname, jintArray params_ref, jint offset) { 980d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _exception = 0; 981d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char * _exceptionType = NULL; 982d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char * _exceptionMessage = NULL; 983d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLint *params_base = (GLint *) 0; 984d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _remaining; 985d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLint *params = (GLint *) 0; 986d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 987d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (!params_ref) { 988d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 989d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 990d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "params == null"; 991d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 992d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 993d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (offset < 0) { 994d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 995d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 996d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "offset < 0"; 997d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 998d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 999d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _remaining = _env->GetArrayLength(params_ref) - offset; 1000d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall params_base = (GLint *) 10013b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->GetIntArrayElements(params_ref, (jboolean *)0); 1002d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall params = params_base + offset; 1003d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 1004d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glGetQueryiv( 1005d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)target, 1006d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)pname, 1007d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint *)params 1008d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 1009d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 1010d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallexit: 1011d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (params_base) { 10123b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseIntArrayElements(params_ref, (jint*)params_base, 1013d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception ? JNI_ABORT: 0); 1014d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 1015d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_exception) { 1016d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jniThrowException(_env, _exceptionType, _exceptionMessage); 1017d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 1018d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 1019d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 1020d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glGetQueryiv ( GLenum target, GLenum pname, GLint *params ) */ 1021d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 1022d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glGetQueryiv__IILjava_nio_IntBuffer_2 1023d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint target, jint pname, jobject params_buf) { 102484cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy jint _exception = 0; 102584cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy const char * _exceptionType = NULL; 102684cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy const char * _exceptionMessage = NULL; 10273b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi jintArray _array = (jintArray) 0; 1028d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _bufferOffset = (jint) 0; 1029d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _remaining; 1030d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLint *params = (GLint *) 0; 1031d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 103284cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy if (!params_buf) { 103384cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exception = 1; 103484cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exceptionType = "java/lang/IllegalArgumentException"; 103584cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exceptionMessage = "params == null"; 103684cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy goto exit; 103784cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy } 10383b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi params = (GLint *)getPointer(_env, params_buf, (jarray*)&_array, &_remaining, &_bufferOffset); 1039d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (params == NULL) { 10403b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi char * _paramsBase = (char *)_env->GetIntArrayElements(_array, (jboolean *) 0); 1041d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall params = (GLint *) (_paramsBase + _bufferOffset); 1042d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 1043d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glGetQueryiv( 1044d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)target, 1045d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)pname, 1046d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint *)params 1047d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 104884cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy 104984cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guyexit: 1050d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_array) { 105184cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _env->ReleaseIntArrayElements(_array, (jint*)params, _exception ? JNI_ABORT : 0); 105284cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy } 105384cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy if (_exception) { 105484cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy jniThrowException(_env, _exceptionType, _exceptionMessage); 1055d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 1056d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 1057d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 1058d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glGetQueryObjectuiv ( GLuint id, GLenum pname, GLuint *params ) */ 1059d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 1060d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glGetQueryObjectuiv__II_3II 1061d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint id, jint pname, jintArray params_ref, jint offset) { 1062d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _exception = 0; 1063d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char * _exceptionType = NULL; 1064d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char * _exceptionMessage = NULL; 1065d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLuint *params_base = (GLuint *) 0; 1066d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _remaining; 1067d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLuint *params = (GLuint *) 0; 1068d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 1069d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (!params_ref) { 1070d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 1071d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 1072d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "params == null"; 1073d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 1074d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 1075d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (offset < 0) { 1076d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 1077d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 1078d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "offset < 0"; 1079d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 1080d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 1081d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _remaining = _env->GetArrayLength(params_ref) - offset; 1082d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall params_base = (GLuint *) 10833b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->GetIntArrayElements(params_ref, (jboolean *)0); 1084d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall params = params_base + offset; 1085d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 1086d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glGetQueryObjectuiv( 1087d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint)id, 1088d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)pname, 1089d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint *)params 1090d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 1091d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 1092d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallexit: 1093d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (params_base) { 10943b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseIntArrayElements(params_ref, (jint*)params_base, 1095d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception ? JNI_ABORT: 0); 1096d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 1097d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_exception) { 1098d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jniThrowException(_env, _exceptionType, _exceptionMessage); 1099d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 1100d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 1101d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 1102d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glGetQueryObjectuiv ( GLuint id, GLenum pname, GLuint *params ) */ 1103d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 1104d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glGetQueryObjectuiv__IILjava_nio_IntBuffer_2 1105d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint id, jint pname, jobject params_buf) { 110684cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy jint _exception = 0; 110784cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy const char * _exceptionType = NULL; 110884cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy const char * _exceptionMessage = NULL; 11093b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi jintArray _array = (jintArray) 0; 1110d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _bufferOffset = (jint) 0; 1111d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _remaining; 1112d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLuint *params = (GLuint *) 0; 1113d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 111484cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy if (!params_buf) { 111584cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exception = 1; 111684cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exceptionType = "java/lang/IllegalArgumentException"; 111784cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exceptionMessage = "params == null"; 111884cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy goto exit; 111984cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy } 11203b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi params = (GLuint *)getPointer(_env, params_buf, (jarray*)&_array, &_remaining, &_bufferOffset); 1121d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (params == NULL) { 11223b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi char * _paramsBase = (char *)_env->GetIntArrayElements(_array, (jboolean *) 0); 1123d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall params = (GLuint *) (_paramsBase + _bufferOffset); 1124d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 1125d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glGetQueryObjectuiv( 1126d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint)id, 1127d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)pname, 1128d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint *)params 1129d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 113084cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy 113184cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guyexit: 1132d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_array) { 113384cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _env->ReleaseIntArrayElements(_array, (jint*)params, _exception ? JNI_ABORT : 0); 113484cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy } 113584cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy if (_exception) { 113684cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy jniThrowException(_env, _exceptionType, _exceptionMessage); 1137d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 1138d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 1139d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 1140d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* GLboolean glUnmapBuffer ( GLenum target ) */ 1141d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic jboolean 1142d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glUnmapBuffer__I 1143d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint target) { 1144d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLboolean _returnValue; 1145d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _returnValue = glUnmapBuffer( 1146d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)target 1147d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 1148d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall return (jboolean)_returnValue; 1149d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 1150d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 1151d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glGetBufferPointerv ( GLenum target, GLenum pname, GLvoid** params ) */ 1152d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic jobject 1153d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glGetBufferPointerv__II 1154d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint target, jint pname) { 1155d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLint64 _mapLength; 1156d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLvoid* _p; 1157d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glGetBufferParameteri64v((GLenum)target, GL_BUFFER_MAP_LENGTH, &_mapLength); 1158d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glGetBufferPointerv((GLenum)target, (GLenum)pname, &_p); 1159d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall return _env->NewDirectByteBuffer(_p, _mapLength); 1160d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 1161d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 1162d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glDrawBuffers ( GLsizei n, const GLenum *bufs ) */ 1163d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 1164d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glDrawBuffers__I_3II 1165d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint n, jintArray bufs_ref, jint offset) { 1166d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _exception = 0; 1167d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char * _exceptionType = NULL; 1168d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char * _exceptionMessage = NULL; 1169d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLenum *bufs_base = (GLenum *) 0; 1170d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _remaining; 1171d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLenum *bufs = (GLenum *) 0; 1172d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 1173d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (!bufs_ref) { 1174d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 1175d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 1176d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "bufs == null"; 1177d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 1178d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 1179d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (offset < 0) { 1180d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 1181d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 1182d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "offset < 0"; 1183d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 1184d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 1185d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _remaining = _env->GetArrayLength(bufs_ref) - offset; 1186d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall bufs_base = (GLenum *) 11873b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->GetIntArrayElements(bufs_ref, (jboolean *)0); 1188d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall bufs = bufs_base + offset; 1189d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 1190d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glDrawBuffers( 1191d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)n, 1192d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum *)bufs 1193d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 1194d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 1195d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallexit: 1196d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (bufs_base) { 11973b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseIntArrayElements(bufs_ref, (jint*)bufs_base, 1198d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall JNI_ABORT); 1199d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 1200d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_exception) { 1201d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jniThrowException(_env, _exceptionType, _exceptionMessage); 1202d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 1203d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 1204d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 1205d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glDrawBuffers ( GLsizei n, const GLenum *bufs ) */ 1206d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 1207d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glDrawBuffers__ILjava_nio_IntBuffer_2 1208d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint n, jobject bufs_buf) { 120984cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy jint _exception = 0; 121084cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy const char * _exceptionType = NULL; 121184cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy const char * _exceptionMessage = NULL; 12123b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi jintArray _array = (jintArray) 0; 1213d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _bufferOffset = (jint) 0; 1214d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _remaining; 1215d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLenum *bufs = (GLenum *) 0; 1216d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 121784cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy if (!bufs_buf) { 121884cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exception = 1; 121984cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exceptionType = "java/lang/IllegalArgumentException"; 122084cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exceptionMessage = "bufs == null"; 122184cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy goto exit; 122284cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy } 12233b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi bufs = (GLenum *)getPointer(_env, bufs_buf, (jarray*)&_array, &_remaining, &_bufferOffset); 1224d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (bufs == NULL) { 12253b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi char * _bufsBase = (char *)_env->GetIntArrayElements(_array, (jboolean *) 0); 1226d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall bufs = (GLenum *) (_bufsBase + _bufferOffset); 1227d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 1228d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glDrawBuffers( 1229d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)n, 1230d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum *)bufs 1231d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 123284cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy 123384cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guyexit: 1234d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_array) { 12353b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseIntArrayElements(_array, (jint*)bufs, JNI_ABORT); 1236d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 123784cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy if (_exception) { 123884cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy jniThrowException(_env, _exceptionType, _exceptionMessage); 123984cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy } 1240d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 1241d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 1242d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glUniformMatrix2x3fv ( GLint location, GLsizei count, GLboolean transpose, const GLfloat *value ) */ 1243d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 1244d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glUniformMatrix2x3fv__IIZ_3FI 1245d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint location, jint count, jboolean transpose, jfloatArray value_ref, jint offset) { 1246d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _exception = 0; 1247d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char * _exceptionType = NULL; 1248d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char * _exceptionMessage = NULL; 1249d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLfloat *value_base = (GLfloat *) 0; 1250d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _remaining; 1251d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLfloat *value = (GLfloat *) 0; 1252d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 1253d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (!value_ref) { 1254d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 1255d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 1256d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "value == null"; 1257d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 1258d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 1259d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (offset < 0) { 1260d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 1261d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 1262d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "offset < 0"; 1263d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 1264d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 1265d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _remaining = _env->GetArrayLength(value_ref) - offset; 1266d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall value_base = (GLfloat *) 12673b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->GetFloatArrayElements(value_ref, (jboolean *)0); 1268d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall value = value_base + offset; 1269d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 1270d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glUniformMatrix2x3fv( 1271d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint)location, 1272d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)count, 1273d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLboolean)transpose, 1274d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLfloat *)value 1275d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 1276d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 1277d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallexit: 1278d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (value_base) { 12793b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseFloatArrayElements(value_ref, (jfloat*)value_base, 1280d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall JNI_ABORT); 1281d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 1282d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_exception) { 1283d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jniThrowException(_env, _exceptionType, _exceptionMessage); 1284d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 1285d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 1286d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 1287d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glUniformMatrix2x3fv ( GLint location, GLsizei count, GLboolean transpose, const GLfloat *value ) */ 1288d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 1289d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glUniformMatrix2x3fv__IIZLjava_nio_FloatBuffer_2 1290d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint location, jint count, jboolean transpose, jobject value_buf) { 129184cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy jint _exception = 0; 129284cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy const char * _exceptionType = NULL; 129384cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy const char * _exceptionMessage = NULL; 12943b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi jfloatArray _array = (jfloatArray) 0; 1295d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _bufferOffset = (jint) 0; 1296d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _remaining; 1297d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLfloat *value = (GLfloat *) 0; 1298d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 129984cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy if (!value_buf) { 130084cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exception = 1; 130184cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exceptionType = "java/lang/IllegalArgumentException"; 130284cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exceptionMessage = "value == null"; 130384cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy goto exit; 130484cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy } 13053b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi value = (GLfloat *)getPointer(_env, value_buf, (jarray*)&_array, &_remaining, &_bufferOffset); 1306d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (value == NULL) { 13073b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi char * _valueBase = (char *)_env->GetFloatArrayElements(_array, (jboolean *) 0); 1308d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall value = (GLfloat *) (_valueBase + _bufferOffset); 1309d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 1310d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glUniformMatrix2x3fv( 1311d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint)location, 1312d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)count, 1313d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLboolean)transpose, 1314d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLfloat *)value 1315d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 131684cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy 131784cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guyexit: 1318d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_array) { 13193b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseFloatArrayElements(_array, (jfloat*)value, JNI_ABORT); 1320d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 132184cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy if (_exception) { 132284cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy jniThrowException(_env, _exceptionType, _exceptionMessage); 132384cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy } 1324d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 1325d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 1326d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glUniformMatrix3x2fv ( GLint location, GLsizei count, GLboolean transpose, const GLfloat *value ) */ 1327d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 1328d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glUniformMatrix3x2fv__IIZ_3FI 1329d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint location, jint count, jboolean transpose, jfloatArray value_ref, jint offset) { 1330d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _exception = 0; 1331d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char * _exceptionType = NULL; 1332d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char * _exceptionMessage = NULL; 1333d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLfloat *value_base = (GLfloat *) 0; 1334d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _remaining; 1335d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLfloat *value = (GLfloat *) 0; 1336d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 1337d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (!value_ref) { 1338d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 1339d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 1340d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "value == null"; 1341d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 1342d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 1343d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (offset < 0) { 1344d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 1345d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 1346d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "offset < 0"; 1347d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 1348d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 1349d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _remaining = _env->GetArrayLength(value_ref) - offset; 1350d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall value_base = (GLfloat *) 13513b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->GetFloatArrayElements(value_ref, (jboolean *)0); 1352d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall value = value_base + offset; 1353d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 1354d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glUniformMatrix3x2fv( 1355d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint)location, 1356d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)count, 1357d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLboolean)transpose, 1358d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLfloat *)value 1359d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 1360d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 1361d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallexit: 1362d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (value_base) { 13633b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseFloatArrayElements(value_ref, (jfloat*)value_base, 1364d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall JNI_ABORT); 1365d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 1366d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_exception) { 1367d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jniThrowException(_env, _exceptionType, _exceptionMessage); 1368d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 1369d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 1370d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 1371d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glUniformMatrix3x2fv ( GLint location, GLsizei count, GLboolean transpose, const GLfloat *value ) */ 1372d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 1373d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glUniformMatrix3x2fv__IIZLjava_nio_FloatBuffer_2 1374d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint location, jint count, jboolean transpose, jobject value_buf) { 137584cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy jint _exception = 0; 137684cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy const char * _exceptionType = NULL; 137784cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy const char * _exceptionMessage = NULL; 13783b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi jfloatArray _array = (jfloatArray) 0; 1379d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _bufferOffset = (jint) 0; 1380d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _remaining; 1381d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLfloat *value = (GLfloat *) 0; 1382d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 138384cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy if (!value_buf) { 138484cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exception = 1; 138584cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exceptionType = "java/lang/IllegalArgumentException"; 138684cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exceptionMessage = "value == null"; 138784cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy goto exit; 138884cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy } 13893b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi value = (GLfloat *)getPointer(_env, value_buf, (jarray*)&_array, &_remaining, &_bufferOffset); 1390d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (value == NULL) { 13913b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi char * _valueBase = (char *)_env->GetFloatArrayElements(_array, (jboolean *) 0); 1392d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall value = (GLfloat *) (_valueBase + _bufferOffset); 1393d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 1394d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glUniformMatrix3x2fv( 1395d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint)location, 1396d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)count, 1397d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLboolean)transpose, 1398d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLfloat *)value 1399d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 140084cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy 140184cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guyexit: 1402d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_array) { 14033b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseFloatArrayElements(_array, (jfloat*)value, JNI_ABORT); 1404d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 140584cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy if (_exception) { 140684cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy jniThrowException(_env, _exceptionType, _exceptionMessage); 140784cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy } 1408d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 1409d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 1410d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glUniformMatrix2x4fv ( GLint location, GLsizei count, GLboolean transpose, const GLfloat *value ) */ 1411d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 1412d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glUniformMatrix2x4fv__IIZ_3FI 1413d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint location, jint count, jboolean transpose, jfloatArray value_ref, jint offset) { 1414d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _exception = 0; 1415d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char * _exceptionType = NULL; 1416d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char * _exceptionMessage = NULL; 1417d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLfloat *value_base = (GLfloat *) 0; 1418d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _remaining; 1419d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLfloat *value = (GLfloat *) 0; 1420d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 1421d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (!value_ref) { 1422d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 1423d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 1424d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "value == null"; 1425d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 1426d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 1427d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (offset < 0) { 1428d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 1429d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 1430d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "offset < 0"; 1431d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 1432d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 1433d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _remaining = _env->GetArrayLength(value_ref) - offset; 1434d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall value_base = (GLfloat *) 14353b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->GetFloatArrayElements(value_ref, (jboolean *)0); 1436d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall value = value_base + offset; 1437d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 1438d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glUniformMatrix2x4fv( 1439d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint)location, 1440d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)count, 1441d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLboolean)transpose, 1442d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLfloat *)value 1443d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 1444d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 1445d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallexit: 1446d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (value_base) { 14473b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseFloatArrayElements(value_ref, (jfloat*)value_base, 1448d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall JNI_ABORT); 1449d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 1450d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_exception) { 1451d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jniThrowException(_env, _exceptionType, _exceptionMessage); 1452d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 1453d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 1454d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 1455d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glUniformMatrix2x4fv ( GLint location, GLsizei count, GLboolean transpose, const GLfloat *value ) */ 1456d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 1457d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glUniformMatrix2x4fv__IIZLjava_nio_FloatBuffer_2 1458d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint location, jint count, jboolean transpose, jobject value_buf) { 145984cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy jint _exception = 0; 146084cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy const char * _exceptionType = NULL; 146184cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy const char * _exceptionMessage = NULL; 14623b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi jfloatArray _array = (jfloatArray) 0; 1463d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _bufferOffset = (jint) 0; 1464d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _remaining; 1465d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLfloat *value = (GLfloat *) 0; 1466d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 146784cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy if (!value_buf) { 146884cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exception = 1; 146984cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exceptionType = "java/lang/IllegalArgumentException"; 147084cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exceptionMessage = "value == null"; 147184cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy goto exit; 147284cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy } 14733b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi value = (GLfloat *)getPointer(_env, value_buf, (jarray*)&_array, &_remaining, &_bufferOffset); 1474d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (value == NULL) { 14753b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi char * _valueBase = (char *)_env->GetFloatArrayElements(_array, (jboolean *) 0); 1476d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall value = (GLfloat *) (_valueBase + _bufferOffset); 1477d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 1478d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glUniformMatrix2x4fv( 1479d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint)location, 1480d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)count, 1481d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLboolean)transpose, 1482d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLfloat *)value 1483d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 148484cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy 148584cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guyexit: 1486d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_array) { 14873b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseFloatArrayElements(_array, (jfloat*)value, JNI_ABORT); 1488d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 148984cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy if (_exception) { 149084cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy jniThrowException(_env, _exceptionType, _exceptionMessage); 149184cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy } 1492d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 1493d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 1494d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glUniformMatrix4x2fv ( GLint location, GLsizei count, GLboolean transpose, const GLfloat *value ) */ 1495d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 1496d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glUniformMatrix4x2fv__IIZ_3FI 1497d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint location, jint count, jboolean transpose, jfloatArray value_ref, jint offset) { 1498d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _exception = 0; 1499d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char * _exceptionType = NULL; 1500d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char * _exceptionMessage = NULL; 1501d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLfloat *value_base = (GLfloat *) 0; 1502d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _remaining; 1503d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLfloat *value = (GLfloat *) 0; 1504d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 1505d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (!value_ref) { 1506d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 1507d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 1508d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "value == null"; 1509d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 1510d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 1511d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (offset < 0) { 1512d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 1513d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 1514d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "offset < 0"; 1515d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 1516d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 1517d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _remaining = _env->GetArrayLength(value_ref) - offset; 1518d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall value_base = (GLfloat *) 15193b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->GetFloatArrayElements(value_ref, (jboolean *)0); 1520d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall value = value_base + offset; 1521d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 1522d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glUniformMatrix4x2fv( 1523d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint)location, 1524d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)count, 1525d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLboolean)transpose, 1526d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLfloat *)value 1527d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 1528d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 1529d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallexit: 1530d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (value_base) { 15313b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseFloatArrayElements(value_ref, (jfloat*)value_base, 1532d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall JNI_ABORT); 1533d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 1534d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_exception) { 1535d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jniThrowException(_env, _exceptionType, _exceptionMessage); 1536d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 1537d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 1538d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 1539d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glUniformMatrix4x2fv ( GLint location, GLsizei count, GLboolean transpose, const GLfloat *value ) */ 1540d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 1541d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glUniformMatrix4x2fv__IIZLjava_nio_FloatBuffer_2 1542d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint location, jint count, jboolean transpose, jobject value_buf) { 154384cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy jint _exception = 0; 154484cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy const char * _exceptionType = NULL; 154584cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy const char * _exceptionMessage = NULL; 15463b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi jfloatArray _array = (jfloatArray) 0; 1547d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _bufferOffset = (jint) 0; 1548d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _remaining; 1549d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLfloat *value = (GLfloat *) 0; 1550d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 155184cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy if (!value_buf) { 155284cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exception = 1; 155384cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exceptionType = "java/lang/IllegalArgumentException"; 155484cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exceptionMessage = "value == null"; 155584cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy goto exit; 155684cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy } 15573b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi value = (GLfloat *)getPointer(_env, value_buf, (jarray*)&_array, &_remaining, &_bufferOffset); 1558d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (value == NULL) { 15593b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi char * _valueBase = (char *)_env->GetFloatArrayElements(_array, (jboolean *) 0); 1560d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall value = (GLfloat *) (_valueBase + _bufferOffset); 1561d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 1562d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glUniformMatrix4x2fv( 1563d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint)location, 1564d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)count, 1565d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLboolean)transpose, 1566d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLfloat *)value 1567d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 156884cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy 156984cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guyexit: 1570d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_array) { 15713b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseFloatArrayElements(_array, (jfloat*)value, JNI_ABORT); 1572d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 157384cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy if (_exception) { 157484cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy jniThrowException(_env, _exceptionType, _exceptionMessage); 157584cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy } 1576d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 1577d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 1578d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glUniformMatrix3x4fv ( GLint location, GLsizei count, GLboolean transpose, const GLfloat *value ) */ 1579d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 1580d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glUniformMatrix3x4fv__IIZ_3FI 1581d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint location, jint count, jboolean transpose, jfloatArray value_ref, jint offset) { 1582d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _exception = 0; 1583d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char * _exceptionType = NULL; 1584d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char * _exceptionMessage = NULL; 1585d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLfloat *value_base = (GLfloat *) 0; 1586d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _remaining; 1587d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLfloat *value = (GLfloat *) 0; 1588d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 1589d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (!value_ref) { 1590d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 1591d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 1592d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "value == null"; 1593d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 1594d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 1595d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (offset < 0) { 1596d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 1597d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 1598d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "offset < 0"; 1599d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 1600d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 1601d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _remaining = _env->GetArrayLength(value_ref) - offset; 1602d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall value_base = (GLfloat *) 16033b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->GetFloatArrayElements(value_ref, (jboolean *)0); 1604d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall value = value_base + offset; 1605d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 1606d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glUniformMatrix3x4fv( 1607d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint)location, 1608d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)count, 1609d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLboolean)transpose, 1610d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLfloat *)value 1611d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 1612d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 1613d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallexit: 1614d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (value_base) { 16153b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseFloatArrayElements(value_ref, (jfloat*)value_base, 1616d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall JNI_ABORT); 1617d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 1618d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_exception) { 1619d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jniThrowException(_env, _exceptionType, _exceptionMessage); 1620d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 1621d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 1622d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 1623d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glUniformMatrix3x4fv ( GLint location, GLsizei count, GLboolean transpose, const GLfloat *value ) */ 1624d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 1625d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glUniformMatrix3x4fv__IIZLjava_nio_FloatBuffer_2 1626d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint location, jint count, jboolean transpose, jobject value_buf) { 162784cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy jint _exception = 0; 162884cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy const char * _exceptionType = NULL; 162984cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy const char * _exceptionMessage = NULL; 16303b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi jfloatArray _array = (jfloatArray) 0; 1631d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _bufferOffset = (jint) 0; 1632d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _remaining; 1633d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLfloat *value = (GLfloat *) 0; 1634d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 163584cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy if (!value_buf) { 163684cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exception = 1; 163784cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exceptionType = "java/lang/IllegalArgumentException"; 163884cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exceptionMessage = "value == null"; 163984cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy goto exit; 164084cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy } 16413b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi value = (GLfloat *)getPointer(_env, value_buf, (jarray*)&_array, &_remaining, &_bufferOffset); 1642d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (value == NULL) { 16433b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi char * _valueBase = (char *)_env->GetFloatArrayElements(_array, (jboolean *) 0); 1644d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall value = (GLfloat *) (_valueBase + _bufferOffset); 1645d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 1646d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glUniformMatrix3x4fv( 1647d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint)location, 1648d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)count, 1649d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLboolean)transpose, 1650d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLfloat *)value 1651d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 165284cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy 165384cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guyexit: 1654d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_array) { 16553b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseFloatArrayElements(_array, (jfloat*)value, JNI_ABORT); 1656d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 165784cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy if (_exception) { 165884cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy jniThrowException(_env, _exceptionType, _exceptionMessage); 165984cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy } 1660d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 1661d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 1662d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glUniformMatrix4x3fv ( GLint location, GLsizei count, GLboolean transpose, const GLfloat *value ) */ 1663d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 1664d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glUniformMatrix4x3fv__IIZ_3FI 1665d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint location, jint count, jboolean transpose, jfloatArray value_ref, jint offset) { 1666d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _exception = 0; 1667d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char * _exceptionType = NULL; 1668d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char * _exceptionMessage = NULL; 1669d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLfloat *value_base = (GLfloat *) 0; 1670d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _remaining; 1671d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLfloat *value = (GLfloat *) 0; 1672d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 1673d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (!value_ref) { 1674d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 1675d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 1676d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "value == null"; 1677d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 1678d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 1679d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (offset < 0) { 1680d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 1681d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 1682d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "offset < 0"; 1683d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 1684d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 1685d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _remaining = _env->GetArrayLength(value_ref) - offset; 1686d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall value_base = (GLfloat *) 16873b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->GetFloatArrayElements(value_ref, (jboolean *)0); 1688d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall value = value_base + offset; 1689d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 1690d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glUniformMatrix4x3fv( 1691d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint)location, 1692d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)count, 1693d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLboolean)transpose, 1694d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLfloat *)value 1695d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 1696d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 1697d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallexit: 1698d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (value_base) { 16993b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseFloatArrayElements(value_ref, (jfloat*)value_base, 1700d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall JNI_ABORT); 1701d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 1702d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_exception) { 1703d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jniThrowException(_env, _exceptionType, _exceptionMessage); 1704d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 1705d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 1706d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 1707d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glUniformMatrix4x3fv ( GLint location, GLsizei count, GLboolean transpose, const GLfloat *value ) */ 1708d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 1709d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glUniformMatrix4x3fv__IIZLjava_nio_FloatBuffer_2 1710d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint location, jint count, jboolean transpose, jobject value_buf) { 171184cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy jint _exception = 0; 171284cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy const char * _exceptionType = NULL; 171384cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy const char * _exceptionMessage = NULL; 17143b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi jfloatArray _array = (jfloatArray) 0; 1715d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _bufferOffset = (jint) 0; 1716d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _remaining; 1717d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLfloat *value = (GLfloat *) 0; 1718d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 171984cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy if (!value_buf) { 172084cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exception = 1; 172184cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exceptionType = "java/lang/IllegalArgumentException"; 172284cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exceptionMessage = "value == null"; 172384cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy goto exit; 172484cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy } 17253b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi value = (GLfloat *)getPointer(_env, value_buf, (jarray*)&_array, &_remaining, &_bufferOffset); 1726d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (value == NULL) { 17273b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi char * _valueBase = (char *)_env->GetFloatArrayElements(_array, (jboolean *) 0); 1728d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall value = (GLfloat *) (_valueBase + _bufferOffset); 1729d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 1730d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glUniformMatrix4x3fv( 1731d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint)location, 1732d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)count, 1733d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLboolean)transpose, 1734d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLfloat *)value 1735d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 173684cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy 173784cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guyexit: 1738d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_array) { 17393b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseFloatArrayElements(_array, (jfloat*)value, JNI_ABORT); 1740d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 174184cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy if (_exception) { 174284cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy jniThrowException(_env, _exceptionType, _exceptionMessage); 174384cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy } 1744d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 1745d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 1746d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glBlitFramebuffer ( GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter ) */ 1747d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 1748d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glBlitFramebuffer__IIIIIIIIII 1749d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint srcX0, jint srcY0, jint srcX1, jint srcY1, jint dstX0, jint dstY0, jint dstX1, jint dstY1, jint mask, jint filter) { 1750d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glBlitFramebuffer( 1751d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint)srcX0, 1752d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint)srcY0, 1753d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint)srcX1, 1754d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint)srcY1, 1755d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint)dstX0, 1756d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint)dstY0, 1757d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint)dstX1, 1758d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint)dstY1, 1759d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLbitfield)mask, 1760d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)filter 1761d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 1762d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 1763d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 1764d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glRenderbufferStorageMultisample ( GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height ) */ 1765d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 1766d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glRenderbufferStorageMultisample__IIIII 1767d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint target, jint samples, jint internalformat, jint width, jint height) { 1768d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glRenderbufferStorageMultisample( 1769d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)target, 1770d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)samples, 1771d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)internalformat, 1772d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)width, 1773d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)height 1774d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 1775d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 1776d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 1777d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glFramebufferTextureLayer ( GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer ) */ 1778d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 1779d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glFramebufferTextureLayer__IIIII 1780d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint target, jint attachment, jint texture, jint level, jint layer) { 1781d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glFramebufferTextureLayer( 1782d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)target, 1783d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)attachment, 1784d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint)texture, 1785d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint)level, 1786d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint)layer 1787d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 1788d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 1789d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 1790d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* GLvoid * glMapBufferRange ( GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access ) */ 1791d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic jobject 1792d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glMapBufferRange__IIII 1793d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint target, jint offset, jint length, jint access) { 1794d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLvoid* _p = glMapBufferRange((GLenum)target, 1795d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLintptr)offset, (GLsizeiptr)length, (GLbitfield)access); 1796d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jobject _buf = (jobject)0; 1797d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_p) { 1798d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _buf = _env->NewDirectByteBuffer(_p, length); 1799d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 1800d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall return _buf; 1801d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 1802d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 1803d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glFlushMappedBufferRange ( GLenum target, GLintptr offset, GLsizeiptr length ) */ 1804d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 1805d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glFlushMappedBufferRange__III 1806d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint target, jint offset, jint length) { 1807d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glFlushMappedBufferRange( 1808d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)target, 1809d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLintptr)offset, 1810d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizeiptr)length 1811d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 1812d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 1813d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 1814d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glBindVertexArray ( GLuint array ) */ 1815d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 1816d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glBindVertexArray__I 1817d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint array) { 1818d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glBindVertexArray( 1819d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint)array 1820d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 1821d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 1822d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 1823d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glDeleteVertexArrays ( GLsizei n, const GLuint *arrays ) */ 1824d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 1825d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glDeleteVertexArrays__I_3II 1826d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint n, jintArray arrays_ref, jint offset) { 1827d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _exception = 0; 1828d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char * _exceptionType = NULL; 1829d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char * _exceptionMessage = NULL; 1830d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLuint *arrays_base = (GLuint *) 0; 1831d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _remaining; 1832d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLuint *arrays = (GLuint *) 0; 1833d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 1834d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (!arrays_ref) { 1835d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 1836d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 1837d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "arrays == null"; 1838d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 1839d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 1840d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (offset < 0) { 1841d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 1842d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 1843d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "offset < 0"; 1844d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 1845d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 1846d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _remaining = _env->GetArrayLength(arrays_ref) - offset; 1847d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall arrays_base = (GLuint *) 18483b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->GetIntArrayElements(arrays_ref, (jboolean *)0); 1849d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall arrays = arrays_base + offset; 1850d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 1851d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glDeleteVertexArrays( 1852d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)n, 1853d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint *)arrays 1854d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 1855d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 1856d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallexit: 1857d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (arrays_base) { 18583b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseIntArrayElements(arrays_ref, (jint*)arrays_base, 1859d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall JNI_ABORT); 1860d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 1861d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_exception) { 1862d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jniThrowException(_env, _exceptionType, _exceptionMessage); 1863d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 1864d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 1865d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 1866d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glDeleteVertexArrays ( GLsizei n, const GLuint *arrays ) */ 1867d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 1868d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glDeleteVertexArrays__ILjava_nio_IntBuffer_2 1869d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint n, jobject arrays_buf) { 187084cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy jint _exception = 0; 187184cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy const char * _exceptionType = NULL; 187284cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy const char * _exceptionMessage = NULL; 18733b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi jintArray _array = (jintArray) 0; 1874d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _bufferOffset = (jint) 0; 1875d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _remaining; 1876d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLuint *arrays = (GLuint *) 0; 1877d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 187884cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy if (!arrays_buf) { 187984cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exception = 1; 188084cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exceptionType = "java/lang/IllegalArgumentException"; 188184cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exceptionMessage = "arrays == null"; 188284cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy goto exit; 188384cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy } 18843b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi arrays = (GLuint *)getPointer(_env, arrays_buf, (jarray*)&_array, &_remaining, &_bufferOffset); 1885d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (arrays == NULL) { 18863b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi char * _arraysBase = (char *)_env->GetIntArrayElements(_array, (jboolean *) 0); 1887d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall arrays = (GLuint *) (_arraysBase + _bufferOffset); 1888d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 1889d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glDeleteVertexArrays( 1890d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)n, 1891d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint *)arrays 1892d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 189384cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy 189484cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guyexit: 1895d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_array) { 18963b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseIntArrayElements(_array, (jint*)arrays, JNI_ABORT); 1897d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 189884cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy if (_exception) { 189984cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy jniThrowException(_env, _exceptionType, _exceptionMessage); 190084cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy } 1901d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 1902d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 1903d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glGenVertexArrays ( GLsizei n, GLuint *arrays ) */ 1904d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 1905d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glGenVertexArrays__I_3II 1906d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint n, jintArray arrays_ref, jint offset) { 1907d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _exception = 0; 1908d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char * _exceptionType = NULL; 1909d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char * _exceptionMessage = NULL; 1910d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLuint *arrays_base = (GLuint *) 0; 1911d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _remaining; 1912d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLuint *arrays = (GLuint *) 0; 1913d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 1914d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (!arrays_ref) { 1915d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 1916d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 1917d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "arrays == null"; 1918d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 1919d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 1920d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (offset < 0) { 1921d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 1922d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 1923d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "offset < 0"; 1924d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 1925d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 1926d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _remaining = _env->GetArrayLength(arrays_ref) - offset; 1927d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall arrays_base = (GLuint *) 19283b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->GetIntArrayElements(arrays_ref, (jboolean *)0); 1929d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall arrays = arrays_base + offset; 1930d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 1931d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glGenVertexArrays( 1932d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)n, 1933d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint *)arrays 1934d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 1935d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 1936d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallexit: 1937d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (arrays_base) { 19383b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseIntArrayElements(arrays_ref, (jint*)arrays_base, 1939d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception ? JNI_ABORT: 0); 1940d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 1941d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_exception) { 1942d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jniThrowException(_env, _exceptionType, _exceptionMessage); 1943d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 1944d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 1945d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 1946d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glGenVertexArrays ( GLsizei n, GLuint *arrays ) */ 1947d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 1948d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glGenVertexArrays__ILjava_nio_IntBuffer_2 1949d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint n, jobject arrays_buf) { 195084cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy jint _exception = 0; 195184cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy const char * _exceptionType = NULL; 195284cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy const char * _exceptionMessage = NULL; 19533b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi jintArray _array = (jintArray) 0; 1954d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _bufferOffset = (jint) 0; 1955d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _remaining; 1956d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLuint *arrays = (GLuint *) 0; 1957d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 195884cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy if (!arrays_buf) { 195984cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exception = 1; 196084cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exceptionType = "java/lang/IllegalArgumentException"; 196184cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exceptionMessage = "arrays == null"; 196284cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy goto exit; 196384cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy } 19643b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi arrays = (GLuint *)getPointer(_env, arrays_buf, (jarray*)&_array, &_remaining, &_bufferOffset); 1965d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (arrays == NULL) { 19663b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi char * _arraysBase = (char *)_env->GetIntArrayElements(_array, (jboolean *) 0); 1967d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall arrays = (GLuint *) (_arraysBase + _bufferOffset); 1968d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 1969d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glGenVertexArrays( 1970d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)n, 1971d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint *)arrays 1972d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 197384cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy 197484cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guyexit: 1975d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_array) { 197684cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _env->ReleaseIntArrayElements(_array, (jint*)arrays, _exception ? JNI_ABORT : 0); 197784cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy } 197884cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy if (_exception) { 197984cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy jniThrowException(_env, _exceptionType, _exceptionMessage); 1980d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 1981d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 1982d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 1983d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* GLboolean glIsVertexArray ( GLuint array ) */ 1984d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic jboolean 1985d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glIsVertexArray__I 1986d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint array) { 1987d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLboolean _returnValue; 1988d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _returnValue = glIsVertexArray( 1989d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint)array 1990d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 1991d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall return (jboolean)_returnValue; 1992d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 1993d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 1994d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glGetIntegeri_v ( GLenum target, GLuint index, GLint *data ) */ 1995d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 1996d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glGetIntegeri_v__II_3II 1997d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint target, jint index, jintArray data_ref, jint offset) { 1998d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _exception = 0; 1999d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char * _exceptionType = NULL; 2000d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char * _exceptionMessage = NULL; 2001d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLint *data_base = (GLint *) 0; 2002d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _remaining; 2003d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLint *data = (GLint *) 0; 2004d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 2005d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (!data_ref) { 2006d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 2007d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 2008d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "data == null"; 2009d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 2010d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 2011d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (offset < 0) { 2012d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 2013d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 2014d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "offset < 0"; 2015d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 2016d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 2017d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _remaining = _env->GetArrayLength(data_ref) - offset; 2018d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall data_base = (GLint *) 20193b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->GetIntArrayElements(data_ref, (jboolean *)0); 2020d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall data = data_base + offset; 2021d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 2022d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glGetIntegeri_v( 2023d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)target, 2024d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint)index, 2025d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint *)data 2026d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 2027d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 2028d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallexit: 2029d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (data_base) { 20303b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseIntArrayElements(data_ref, (jint*)data_base, 2031d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception ? JNI_ABORT: 0); 2032d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 2033d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_exception) { 2034d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jniThrowException(_env, _exceptionType, _exceptionMessage); 2035d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 2036d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 2037d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 2038d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glGetIntegeri_v ( GLenum target, GLuint index, GLint *data ) */ 2039d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 2040d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glGetIntegeri_v__IILjava_nio_IntBuffer_2 2041d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint target, jint index, jobject data_buf) { 204284cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy jint _exception = 0; 204384cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy const char * _exceptionType = NULL; 204484cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy const char * _exceptionMessage = NULL; 20453b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi jintArray _array = (jintArray) 0; 2046d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _bufferOffset = (jint) 0; 2047d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _remaining; 2048d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLint *data = (GLint *) 0; 2049d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 205084cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy if (!data_buf) { 205184cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exception = 1; 205284cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exceptionType = "java/lang/IllegalArgumentException"; 205384cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exceptionMessage = "data == null"; 205484cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy goto exit; 205584cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy } 20563b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi data = (GLint *)getPointer(_env, data_buf, (jarray*)&_array, &_remaining, &_bufferOffset); 2057d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (data == NULL) { 20583b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi char * _dataBase = (char *)_env->GetIntArrayElements(_array, (jboolean *) 0); 2059d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall data = (GLint *) (_dataBase + _bufferOffset); 2060d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 2061d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glGetIntegeri_v( 2062d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)target, 2063d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint)index, 2064d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint *)data 2065d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 206684cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy 206784cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guyexit: 2068d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_array) { 206984cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _env->ReleaseIntArrayElements(_array, (jint*)data, _exception ? JNI_ABORT : 0); 207084cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy } 207184cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy if (_exception) { 207284cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy jniThrowException(_env, _exceptionType, _exceptionMessage); 2073d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 2074d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 2075d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 2076d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glBeginTransformFeedback ( GLenum primitiveMode ) */ 2077d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 2078d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glBeginTransformFeedback__I 2079d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint primitiveMode) { 2080d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glBeginTransformFeedback( 2081d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)primitiveMode 2082d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 2083d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 2084d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 2085d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glEndTransformFeedback ( void ) */ 2086d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 2087d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glEndTransformFeedback__ 2088d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this) { 2089d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glEndTransformFeedback(); 2090d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 2091d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 2092d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glBindBufferRange ( GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size ) */ 2093d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 2094d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glBindBufferRange__IIIII 2095d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint target, jint index, jint buffer, jint offset, jint size) { 2096d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glBindBufferRange( 2097d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)target, 2098d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint)index, 2099d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint)buffer, 2100d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLintptr)offset, 2101d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizeiptr)size 2102d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 2103d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 2104d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 2105d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glBindBufferBase ( GLenum target, GLuint index, GLuint buffer ) */ 2106d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 2107d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glBindBufferBase__III 2108d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint target, jint index, jint buffer) { 2109d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glBindBufferBase( 2110d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)target, 2111d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint)index, 2112d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint)buffer 2113d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 2114d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 2115d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 2116d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glTransformFeedbackVaryings ( GLuint program, GLsizei count, const GLchar *varyings, GLenum bufferMode ) */ 2117d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic 2118d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallvoid 2119d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glTransformFeedbackVaryings 2120d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint program, jobjectArray varyings_ref, jint bufferMode) { 2121d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _exception = 0; 2122d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char* _exceptionType = NULL; 2123d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char* _exceptionMessage = NULL; 2124d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _count = 0, _i; 2125d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char** _varyings = NULL; 2126d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char* _varying = NULL; 2127d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 2128d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (!varyings_ref) { 2129d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 2130d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 2131d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "varyings == null"; 2132d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 2133d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 2134d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 2135d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _count = _env->GetArrayLength(varyings_ref); 2136d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _varyings = (const char**)calloc(_count, sizeof(const char*)); 2137d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall for (_i = 0; _i < _count; _i++) { 2138d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jstring _varying = (jstring)_env->GetObjectArrayElement(varyings_ref, _i); 2139d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (!_varying) { 2140d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 2141d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 2142d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "null varyings element"; 2143d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 2144d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 2145d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _varyings[_i] = _env->GetStringUTFChars(_varying, 0); 2146d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 2147d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 2148d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glTransformFeedbackVaryings(program, _count, _varyings, bufferMode); 2149d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 2150d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallexit: 2151d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall for (_i = _count - 1; _i >= 0; _i--) { 2152d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_varyings[_i]) { 2153d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jstring _varying = (jstring)_env->GetObjectArrayElement(varyings_ref, _i); 2154d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_varying) { 2155d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _env->ReleaseStringUTFChars(_varying, _varyings[_i]); 2156d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 2157d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 2158d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 2159d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall free(_varyings); 2160d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_exception) { 2161d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jniThrowException(_env, _exceptionType, _exceptionMessage); 2162d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 2163d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 2164d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 2165d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glGetTransformFeedbackVarying ( GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name ) */ 2166d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 2167d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glGetTransformFeedbackVarying__III_3II_3II_3II_3BI 2168d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint program, jint index, jint bufsize, jintArray length_ref, jint lengthOffset, jintArray size_ref, jint sizeOffset, jintArray type_ref, jint typeOffset, jbyteArray name_ref, jint nameOffset) { 2169d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _exception = 0; 2170d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char * _exceptionType; 2171d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char * _exceptionMessage; 2172d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLsizei *length_base = (GLsizei *) 0; 2173d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _lengthRemaining; 2174d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLsizei *length = (GLsizei *) 0; 2175d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLint *size_base = (GLint *) 0; 2176d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _sizeRemaining; 2177d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLint *size = (GLint *) 0; 2178d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLenum *type_base = (GLenum *) 0; 2179d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _typeRemaining; 2180d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLenum *type = (GLenum *) 0; 2181d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall char *name_base = (char *) 0; 2182d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _nameRemaining; 2183d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall char *name = (char *) 0; 2184d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 21856aff9068f91fdfef0bc55fda0721c180c0de9284Pablo Ceballos if (length_ref) { 21866aff9068f91fdfef0bc55fda0721c180c0de9284Pablo Ceballos if (lengthOffset < 0) { 21876aff9068f91fdfef0bc55fda0721c180c0de9284Pablo Ceballos _exception = 1; 21886aff9068f91fdfef0bc55fda0721c180c0de9284Pablo Ceballos _exceptionType = "java/lang/IllegalArgumentException"; 21896aff9068f91fdfef0bc55fda0721c180c0de9284Pablo Ceballos _exceptionMessage = "lengthOffset < 0"; 21906aff9068f91fdfef0bc55fda0721c180c0de9284Pablo Ceballos goto exit; 21916aff9068f91fdfef0bc55fda0721c180c0de9284Pablo Ceballos } 21926aff9068f91fdfef0bc55fda0721c180c0de9284Pablo Ceballos _lengthRemaining = _env->GetArrayLength(length_ref) - lengthOffset; 21936aff9068f91fdfef0bc55fda0721c180c0de9284Pablo Ceballos length_base = (GLsizei *) 21946aff9068f91fdfef0bc55fda0721c180c0de9284Pablo Ceballos _env->GetIntArrayElements(length_ref, (jboolean *)0); 21956aff9068f91fdfef0bc55fda0721c180c0de9284Pablo Ceballos length = length_base + lengthOffset; 2196d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 2197d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 2198d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (!size_ref) { 2199d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 2200d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 2201d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "size == null"; 2202d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 2203d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 2204d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (sizeOffset < 0) { 2205d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 2206d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 2207d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "sizeOffset < 0"; 2208d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 2209d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 2210d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _sizeRemaining = _env->GetArrayLength(size_ref) - sizeOffset; 2211d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall size_base = (GLint *) 22123b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->GetIntArrayElements(size_ref, (jboolean *)0); 2213d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall size = size_base + sizeOffset; 2214d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 2215d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (!type_ref) { 2216d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 2217d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 2218d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "type == null"; 2219d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 2220d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 2221d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (typeOffset < 0) { 2222d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 2223d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 2224d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "typeOffset < 0"; 2225d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 2226d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 2227d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _typeRemaining = _env->GetArrayLength(type_ref) - typeOffset; 2228d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall type_base = (GLenum *) 22293b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->GetIntArrayElements(type_ref, (jboolean *)0); 2230d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall type = type_base + typeOffset; 2231d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 2232d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (!name_ref) { 2233d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 2234d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 2235d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "name == null"; 2236d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 2237d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 2238d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (nameOffset < 0) { 2239d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 2240d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 2241d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "nameOffset < 0"; 2242d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 2243d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 2244d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _nameRemaining = _env->GetArrayLength(name_ref) - nameOffset; 2245d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall name_base = (char *) 22463b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->GetByteArrayElements(name_ref, (jboolean *)0); 2247d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall name = name_base + nameOffset; 2248d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 2249d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glGetTransformFeedbackVarying( 2250d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint)program, 2251d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint)index, 2252d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)bufsize, 2253d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei *)length, 2254d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint *)size, 2255d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum *)type, 2256d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (char *)name 2257d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 2258d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 2259d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallexit: 2260d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (name_base) { 22613b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseByteArrayElements(name_ref, (jbyte*)name_base, 2262d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception ? JNI_ABORT: 0); 2263d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 2264d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (type_base) { 22653b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseIntArrayElements(type_ref, (jint*)type_base, 2266d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception ? JNI_ABORT: 0); 2267d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 2268d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (size_base) { 22693b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseIntArrayElements(size_ref, (jint*)size_base, 2270d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception ? JNI_ABORT: 0); 2271d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 2272d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (length_base) { 22733b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseIntArrayElements(length_ref, (jint*)length_base, 2274d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception ? JNI_ABORT: 0); 2275d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 2276d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_exception) { 2277d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jniThrowException(_env, _exceptionType, _exceptionMessage); 2278d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 2279d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 2280d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 2281d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glGetTransformFeedbackVarying ( GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name ) */ 2282d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 2283d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glGetTransformFeedbackVarying__IIILjava_nio_IntBuffer_2Ljava_nio_IntBuffer_2Ljava_nio_IntBuffer_2B 2284d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint program, jint index, jint bufsize, jobject length_buf, jobject size_buf, jobject type_buf, jbyte name) { 228559fb43e7bdc607f49b301644e4300485f352b103Pablo Ceballos jniThrowException(_env, "java/lang/UnsupportedOperationException", "deprecated"); 228659fb43e7bdc607f49b301644e4300485f352b103Pablo Ceballos} 228759fb43e7bdc607f49b301644e4300485f352b103Pablo Ceballos 228859fb43e7bdc607f49b301644e4300485f352b103Pablo Ceballos/* void glGetTransformFeedbackVarying ( GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name ) */ 228959fb43e7bdc607f49b301644e4300485f352b103Pablo Ceballosstatic void 229059fb43e7bdc607f49b301644e4300485f352b103Pablo Ceballosandroid_glGetTransformFeedbackVarying__IIILjava_nio_IntBuffer_2Ljava_nio_IntBuffer_2Ljava_nio_IntBuffer_2Ljava_nio_ByteBuffer_2 229159fb43e7bdc607f49b301644e4300485f352b103Pablo Ceballos (JNIEnv *_env, jobject _this, jint program, jint index, jint bufsize, jobject length_buf, jobject size_buf, jobject type_buf, jobject name_buf) { 22923b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi jintArray _lengthArray = (jintArray) 0; 2293d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _lengthBufferOffset = (jint) 0; 22943b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi jintArray _sizeArray = (jintArray) 0; 2295d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _sizeBufferOffset = (jint) 0; 22963b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi jintArray _typeArray = (jintArray) 0; 2297d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _typeBufferOffset = (jint) 0; 229859fb43e7bdc607f49b301644e4300485f352b103Pablo Ceballos jbyteArray _nameArray = (jbyteArray)0; 229959fb43e7bdc607f49b301644e4300485f352b103Pablo Ceballos jint _nameBufferOffset = (jint)0; 2300d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _lengthRemaining; 2301d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLsizei *length = (GLsizei *) 0; 2302d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _sizeRemaining; 2303d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLint *size = (GLint *) 0; 2304d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _typeRemaining; 2305d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLenum *type = (GLenum *) 0; 230659fb43e7bdc607f49b301644e4300485f352b103Pablo Ceballos jint _nameRemaining; 230759fb43e7bdc607f49b301644e4300485f352b103Pablo Ceballos GLchar* name = (GLchar*)0; 230859fb43e7bdc607f49b301644e4300485f352b103Pablo Ceballos 2309d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 23103b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi length = (GLsizei *)getPointer(_env, length_buf, (jarray*)&_lengthArray, &_lengthRemaining, &_lengthBufferOffset); 23113b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi size = (GLint *)getPointer(_env, size_buf, (jarray*)&_sizeArray, &_sizeRemaining, &_sizeBufferOffset); 23123b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi type = (GLenum *)getPointer(_env, type_buf, (jarray*)&_typeArray, &_typeRemaining, &_typeBufferOffset); 231359fb43e7bdc607f49b301644e4300485f352b103Pablo Ceballos name = (GLchar*)getPointer(_env, name_buf, (jarray*)&_nameArray, &_nameRemaining, &_nameBufferOffset); 2314d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (length == NULL) { 23153b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi char * _lengthBase = (char *)_env->GetIntArrayElements(_lengthArray, (jboolean *) 0); 2316d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall length = (GLsizei *) (_lengthBase + _lengthBufferOffset); 2317d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 2318d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (size == NULL) { 23193b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi char * _sizeBase = (char *)_env->GetIntArrayElements(_sizeArray, (jboolean *) 0); 2320d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall size = (GLint *) (_sizeBase + _sizeBufferOffset); 2321d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 2322d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (type == NULL) { 23233b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi char * _typeBase = (char *)_env->GetIntArrayElements(_typeArray, (jboolean *) 0); 2324d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall type = (GLenum *) (_typeBase + _typeBufferOffset); 2325d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 232659fb43e7bdc607f49b301644e4300485f352b103Pablo Ceballos if (name == NULL) { 232759fb43e7bdc607f49b301644e4300485f352b103Pablo Ceballos char* _nameBase = (char *)_env->GetByteArrayElements(_nameArray, (jboolean*)0); 232859fb43e7bdc607f49b301644e4300485f352b103Pablo Ceballos name = (GLchar *) (_nameBase + _nameBufferOffset); 232959fb43e7bdc607f49b301644e4300485f352b103Pablo Ceballos } 2330d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glGetTransformFeedbackVarying( 2331d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint)program, 2332d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint)index, 2333d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)bufsize, 2334d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei *)length, 2335d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint *)size, 2336d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum *)type, 233759fb43e7bdc607f49b301644e4300485f352b103Pablo Ceballos (GLchar*)name 2338d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 2339d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_typeArray) { 23403b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi releaseArrayPointer<jintArray, jint*, IntArrayReleaser>(_env, _typeArray, (jint*)type, JNI_TRUE); 2341d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 2342d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_sizeArray) { 23433b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi releaseArrayPointer<jintArray, jint*, IntArrayReleaser>(_env, _sizeArray, (jint*)size, JNI_TRUE); 2344d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 2345d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_lengthArray) { 23463b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi releaseArrayPointer<jintArray, jint*, IntArrayReleaser>(_env, _lengthArray, (jint*)length, JNI_TRUE); 2347d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 234859fb43e7bdc607f49b301644e4300485f352b103Pablo Ceballos if (_nameArray) { 234959fb43e7bdc607f49b301644e4300485f352b103Pablo Ceballos releaseArrayPointer<jbyteArray, jbyte*, ByteArrayReleaser>(_env, _nameArray, (jbyte*)name, JNI_TRUE); 235059fb43e7bdc607f49b301644e4300485f352b103Pablo Ceballos } 2351d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 2352d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 2353d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glGetTransformFeedbackVarying ( GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name ) */ 2354d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic jstring 2355d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glGetTransformFeedbackVarying1 2356d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint program, jint index, jintArray size_ref, jint sizeOffset, jintArray type_ref, jint typeOffset) { 2357d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _exception = 0; 2358d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char * _exceptionType; 2359d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char * _exceptionMessage; 2360d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLint *size_base = (GLint *) 0; 2361d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _sizeRemaining; 2362d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLint *size = (GLint *) 0; 2363d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLenum *type_base = (GLenum *) 0; 2364d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _typeRemaining; 2365d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLenum *type = (GLenum *) 0; 2366d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 2367d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jstring result = 0; 2368d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 2369d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLint len = 0; 2370d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glGetProgramiv((GLuint)program, GL_ACTIVE_ATTRIBUTE_MAX_LENGTH, &len); 2371d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (!len) { 2372d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall return _env->NewStringUTF(""); 2373d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 2374d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall char* buf = (char*) malloc(len); 2375d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 2376d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (buf == NULL) { 2377d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jniThrowException(_env, "java/lang/IllegalArgumentException", "out of memory"); 2378d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall return NULL; 2379d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 2380d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (!size_ref) { 2381d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 2382d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 2383d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "size == null"; 2384d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 2385d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 2386d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (sizeOffset < 0) { 2387d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 2388d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 2389d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "sizeOffset < 0"; 2390d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 2391d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 2392d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _sizeRemaining = _env->GetArrayLength(size_ref) - sizeOffset; 2393d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall size_base = (GLint *) 23943b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->GetIntArrayElements(size_ref, (jboolean *)0); 2395d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall size = size_base + sizeOffset; 2396d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 2397d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (!type_ref) { 2398d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 2399d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 2400d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "type == null"; 2401d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 2402d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 2403d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (typeOffset < 0) { 2404d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 2405d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 2406d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "typeOffset < 0"; 2407d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 2408d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 2409d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _typeRemaining = _env->GetArrayLength(type_ref) - typeOffset; 2410d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall type_base = (GLenum *) 24113b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->GetIntArrayElements(type_ref, (jboolean *)0); 2412d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall type = type_base + typeOffset; 2413d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 2414d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glGetTransformFeedbackVarying( 2415d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint)program, 2416d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint)index, 2417d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)len, 2418d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall NULL, 2419d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint *)size, 2420d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum *)type, 2421d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (char *)buf 2422d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 2423d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallexit: 2424d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (type_base) { 24253b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseIntArrayElements(type_ref, (jint*)type_base, 2426d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception ? JNI_ABORT: 0); 2427d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 2428d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (size_base) { 24293b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseIntArrayElements(size_ref, (jint*)size_base, 2430d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception ? JNI_ABORT: 0); 2431d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 2432d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_exception != 1) { 2433d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall result = _env->NewStringUTF(buf); 2434d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 2435d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (buf) { 2436d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall free(buf); 2437d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 2438d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_exception) { 2439d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jniThrowException(_env, _exceptionType, _exceptionMessage); 2440d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 2441d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (result == 0) { 2442d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall result = _env->NewStringUTF(""); 2443d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 2444d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 2445d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall return result; 2446d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 2447d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 2448d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glGetTransformFeedbackVarying ( GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name ) */ 2449d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic jstring 2450d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glGetTransformFeedbackVarying2 2451d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint program, jint index, jobject size_buf, jobject type_buf) { 24523b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi jintArray _sizeArray = (jintArray) 0; 2453d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _sizeBufferOffset = (jint) 0; 24543b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi jintArray _typeArray = (jintArray) 0; 2455d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _typeBufferOffset = (jint) 0; 2456d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _lengthRemaining; 2457d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLsizei *length = (GLsizei *) 0; 2458d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _sizeRemaining; 2459d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLint *size = (GLint *) 0; 2460d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _typeRemaining; 2461d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLenum *type = (GLenum *) 0; 2462d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 2463d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jstring result = 0; 2464d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 2465d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLint len = 0; 2466d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glGetProgramiv((GLuint)program, GL_ACTIVE_ATTRIBUTE_MAX_LENGTH, &len); 2467d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (!len) { 2468d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall return _env->NewStringUTF(""); 2469d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 2470d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall char* buf = (char*) malloc(len); 2471d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 2472d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (buf == NULL) { 2473d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jniThrowException(_env, "java/lang/IllegalArgumentException", "out of memory"); 2474d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall return NULL; 2475d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 2476d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 24773b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi size = (GLint *)getPointer(_env, size_buf, (jarray*)&_sizeArray, &_sizeRemaining, &_sizeBufferOffset); 24783b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi type = (GLenum *)getPointer(_env, type_buf, (jarray*)&_typeArray, &_typeRemaining, &_typeBufferOffset); 2479d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (size == NULL) { 24803b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi char * _sizeBase = (char *)_env->GetIntArrayElements(_sizeArray, (jboolean *) 0); 2481d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall size = (GLint *) (_sizeBase + _sizeBufferOffset); 2482d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 2483d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (type == NULL) { 24843b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi char * _typeBase = (char *)_env->GetIntArrayElements(_typeArray, (jboolean *) 0); 2485d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall type = (GLenum *) (_typeBase + _typeBufferOffset); 2486d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 2487d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glGetTransformFeedbackVarying( 2488d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint)program, 2489d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint)index, 2490d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)len, 2491d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall NULL, 2492d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint *)size, 2493d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum *)type, 2494d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (char *)buf 2495d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 2496d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 2497d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_typeArray) { 24983b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi releaseArrayPointer<jintArray, jint*, IntArrayReleaser>(_env, _typeArray, (jint*)type, JNI_TRUE); 2499d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 2500d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_sizeArray) { 25013b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi releaseArrayPointer<jintArray, jint*, IntArrayReleaser>(_env, _sizeArray, (jint*)size, JNI_TRUE); 2502d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 2503d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall result = _env->NewStringUTF(buf); 2504d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (buf) { 2505d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall free(buf); 2506d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 2507d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall return result; 2508d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 2509d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glVertexAttribIPointer ( GLuint index, GLint size, GLenum type, GLsizei stride, const GLvoid *pointer ) */ 2510d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 2511d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glVertexAttribIPointerBounds__IIIILjava_nio_Buffer_2I 2512d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint index, jint size, jint type, jint stride, jobject pointer_buf, jint remaining) { 251384cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy jint _exception = 0; 251484cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy const char * _exceptionType = NULL; 251584cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy const char * _exceptionMessage = NULL; 2516d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jarray _array = (jarray) 0; 2517d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _bufferOffset = (jint) 0; 2518d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _remaining; 2519d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLvoid *pointer = (GLvoid *) 0; 2520d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 2521d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (pointer_buf) { 2522d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall pointer = (GLvoid *) getDirectBufferPointer(_env, pointer_buf); 2523d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if ( ! pointer ) { 2524d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall return; 2525d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 2526d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 2527d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glVertexAttribIPointerBounds( 2528d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint)index, 2529d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint)size, 2530d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)type, 2531d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)stride, 2532d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLvoid *)pointer, 2533d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)remaining 2534d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 253584cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy if (_exception) { 253684cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy jniThrowException(_env, _exceptionType, _exceptionMessage); 253784cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy } 2538d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 2539d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 2540d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glVertexAttribIPointer ( GLuint index, GLint size, GLenum type, GLsizei stride, GLsizei offset ) */ 2541d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 2542d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glVertexAttribIPointer__IIIII 2543d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint index, jint size, jint type, jint stride, jint offset) { 2544d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glVertexAttribIPointer( 2545d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint)index, 2546d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint)size, 2547d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)type, 2548d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)stride, 254901c26ea89d4bbea3cf550e9328742302dd9a2b25Ashok Bhat reinterpret_cast<GLvoid *>(offset) 2550d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 2551d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 2552d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 2553d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glGetVertexAttribIiv ( GLuint index, GLenum pname, GLint *params ) */ 2554d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 2555d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glGetVertexAttribIiv__II_3II 2556d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint index, jint pname, jintArray params_ref, jint offset) { 2557d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _exception = 0; 2558d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char * _exceptionType = NULL; 2559d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char * _exceptionMessage = NULL; 2560d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLint *params_base = (GLint *) 0; 2561d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _remaining; 2562d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLint *params = (GLint *) 0; 2563d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 2564d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (!params_ref) { 2565d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 2566d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 2567d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "params == null"; 2568d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 2569d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 2570d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (offset < 0) { 2571d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 2572d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 2573d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "offset < 0"; 2574d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 2575d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 2576d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _remaining = _env->GetArrayLength(params_ref) - offset; 2577d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall params_base = (GLint *) 25783b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->GetIntArrayElements(params_ref, (jboolean *)0); 2579d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall params = params_base + offset; 2580d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 2581d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glGetVertexAttribIiv( 2582d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint)index, 2583d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)pname, 2584d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint *)params 2585d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 2586d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 2587d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallexit: 2588d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (params_base) { 25893b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseIntArrayElements(params_ref, (jint*)params_base, 2590d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception ? JNI_ABORT: 0); 2591d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 2592d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_exception) { 2593d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jniThrowException(_env, _exceptionType, _exceptionMessage); 2594d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 2595d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 2596d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 2597d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glGetVertexAttribIiv ( GLuint index, GLenum pname, GLint *params ) */ 2598d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 2599d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glGetVertexAttribIiv__IILjava_nio_IntBuffer_2 2600d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint index, jint pname, jobject params_buf) { 260184cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy jint _exception = 0; 260284cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy const char * _exceptionType = NULL; 260384cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy const char * _exceptionMessage = NULL; 26043b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi jintArray _array = (jintArray) 0; 2605d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _bufferOffset = (jint) 0; 2606d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _remaining; 2607d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLint *params = (GLint *) 0; 2608d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 260984cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy if (!params_buf) { 261084cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exception = 1; 261184cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exceptionType = "java/lang/IllegalArgumentException"; 261284cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exceptionMessage = "params == null"; 261384cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy goto exit; 261484cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy } 26153b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi params = (GLint *)getPointer(_env, params_buf, (jarray*)&_array, &_remaining, &_bufferOffset); 2616d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (params == NULL) { 26173b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi char * _paramsBase = (char *)_env->GetIntArrayElements(_array, (jboolean *) 0); 2618d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall params = (GLint *) (_paramsBase + _bufferOffset); 2619d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 2620d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glGetVertexAttribIiv( 2621d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint)index, 2622d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)pname, 2623d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint *)params 2624d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 262584cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy 262684cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guyexit: 2627d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_array) { 262884cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _env->ReleaseIntArrayElements(_array, (jint*)params, _exception ? JNI_ABORT : 0); 2629d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 263084cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy if (_exception) { 263184cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy jniThrowException(_env, _exceptionType, _exceptionMessage); 263284cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy } 263384cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy} 263484cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy 2635d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glGetVertexAttribIuiv ( GLuint index, GLenum pname, GLuint *params ) */ 2636d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 2637d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glGetVertexAttribIuiv__II_3II 2638d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint index, jint pname, jintArray params_ref, jint offset) { 2639d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _exception = 0; 2640d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char * _exceptionType = NULL; 2641d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char * _exceptionMessage = NULL; 2642d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLuint *params_base = (GLuint *) 0; 2643d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _remaining; 2644d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLuint *params = (GLuint *) 0; 2645d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 2646d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (!params_ref) { 2647d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 2648d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 2649d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "params == null"; 2650d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 2651d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 2652d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (offset < 0) { 2653d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 2654d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 2655d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "offset < 0"; 2656d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 2657d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 2658d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _remaining = _env->GetArrayLength(params_ref) - offset; 2659d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall params_base = (GLuint *) 26603b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->GetIntArrayElements(params_ref, (jboolean *)0); 2661d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall params = params_base + offset; 2662d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 2663d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glGetVertexAttribIuiv( 2664d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint)index, 2665d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)pname, 2666d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint *)params 2667d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 2668d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 2669d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallexit: 2670d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (params_base) { 26713b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseIntArrayElements(params_ref, (jint*)params_base, 2672d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception ? JNI_ABORT: 0); 2673d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 2674d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_exception) { 2675d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jniThrowException(_env, _exceptionType, _exceptionMessage); 2676d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 2677d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 2678d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 2679d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glGetVertexAttribIuiv ( GLuint index, GLenum pname, GLuint *params ) */ 2680d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 2681d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glGetVertexAttribIuiv__IILjava_nio_IntBuffer_2 2682d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint index, jint pname, jobject params_buf) { 268384cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy jint _exception = 0; 268484cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy const char * _exceptionType = NULL; 268584cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy const char * _exceptionMessage = NULL; 26863b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi jintArray _array = (jintArray) 0; 2687d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _bufferOffset = (jint) 0; 2688d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _remaining; 2689d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLuint *params = (GLuint *) 0; 2690d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 269184cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy if (!params_buf) { 269284cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exception = 1; 269384cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exceptionType = "java/lang/IllegalArgumentException"; 269484cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exceptionMessage = "params == null"; 269584cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy goto exit; 269684cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy } 26973b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi params = (GLuint *)getPointer(_env, params_buf, (jarray*)&_array, &_remaining, &_bufferOffset); 2698d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (params == NULL) { 26993b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi char * _paramsBase = (char *)_env->GetIntArrayElements(_array, (jboolean *) 0); 2700d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall params = (GLuint *) (_paramsBase + _bufferOffset); 2701d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 2702d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glGetVertexAttribIuiv( 2703d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint)index, 2704d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)pname, 2705d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint *)params 2706d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 270784cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy 270884cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guyexit: 2709d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_array) { 271084cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _env->ReleaseIntArrayElements(_array, (jint*)params, _exception ? JNI_ABORT : 0); 271184cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy } 271284cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy if (_exception) { 271384cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy jniThrowException(_env, _exceptionType, _exceptionMessage); 2714d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 2715d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 2716d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 2717d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glVertexAttribI4i ( GLuint index, GLint x, GLint y, GLint z, GLint w ) */ 2718d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 2719d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glVertexAttribI4i__IIIII 2720d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint index, jint x, jint y, jint z, jint w) { 2721d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glVertexAttribI4i( 2722d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint)index, 2723d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint)x, 2724d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint)y, 2725d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint)z, 2726d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint)w 2727d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 2728d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 2729d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 2730d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glVertexAttribI4ui ( GLuint index, GLuint x, GLuint y, GLuint z, GLuint w ) */ 2731d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 2732d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glVertexAttribI4ui__IIIII 2733d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint index, jint x, jint y, jint z, jint w) { 2734d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glVertexAttribI4ui( 2735d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint)index, 2736d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint)x, 2737d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint)y, 2738d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint)z, 2739d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint)w 2740d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 2741d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 2742d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 2743d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glVertexAttribI4iv ( GLuint index, const GLint *v ) */ 2744d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 2745d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glVertexAttribI4iv__I_3II 2746d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint index, jintArray v_ref, jint offset) { 2747d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _exception = 0; 2748d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char * _exceptionType = NULL; 2749d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char * _exceptionMessage = NULL; 2750d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLint *v_base = (GLint *) 0; 2751d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _remaining; 2752d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLint *v = (GLint *) 0; 2753d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 2754d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (!v_ref) { 2755d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 2756d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 2757d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "v == null"; 2758d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 2759d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 2760d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (offset < 0) { 2761d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 2762d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 2763d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "offset < 0"; 2764d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 2765d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 2766d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _remaining = _env->GetArrayLength(v_ref) - offset; 2767d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall v_base = (GLint *) 27683b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->GetIntArrayElements(v_ref, (jboolean *)0); 2769d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall v = v_base + offset; 2770d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 2771d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glVertexAttribI4iv( 2772d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint)index, 2773d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint *)v 2774d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 2775d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 2776d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallexit: 2777d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (v_base) { 27783b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseIntArrayElements(v_ref, (jint*)v_base, 2779d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall JNI_ABORT); 2780d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 2781d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_exception) { 2782d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jniThrowException(_env, _exceptionType, _exceptionMessage); 2783d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 2784d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 2785d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 2786d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glVertexAttribI4iv ( GLuint index, const GLint *v ) */ 2787d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 2788d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glVertexAttribI4iv__ILjava_nio_IntBuffer_2 2789d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint index, jobject v_buf) { 279084cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy jint _exception = 0; 279184cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy const char * _exceptionType = NULL; 279284cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy const char * _exceptionMessage = NULL; 27933b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi jintArray _array = (jintArray) 0; 2794d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _bufferOffset = (jint) 0; 2795d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _remaining; 2796d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLint *v = (GLint *) 0; 2797d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 279884cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy if (!v_buf) { 279984cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exception = 1; 280084cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exceptionType = "java/lang/IllegalArgumentException"; 280184cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exceptionMessage = "v == null"; 280284cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy goto exit; 280384cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy } 28043b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi v = (GLint *)getPointer(_env, v_buf, (jarray*)&_array, &_remaining, &_bufferOffset); 2805d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (v == NULL) { 28063b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi char * _vBase = (char *)_env->GetIntArrayElements(_array, (jboolean *) 0); 2807d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall v = (GLint *) (_vBase + _bufferOffset); 2808d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 2809d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glVertexAttribI4iv( 2810d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint)index, 2811d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint *)v 2812d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 281384cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy 281484cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guyexit: 2815d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_array) { 28163b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseIntArrayElements(_array, (jint*)v, JNI_ABORT); 2817d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 281884cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy if (_exception) { 281984cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy jniThrowException(_env, _exceptionType, _exceptionMessage); 282084cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy } 2821d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 2822d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 2823d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glVertexAttribI4uiv ( GLuint index, const GLuint *v ) */ 2824d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 2825d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glVertexAttribI4uiv__I_3II 2826d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint index, jintArray v_ref, jint offset) { 2827d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _exception = 0; 2828d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char * _exceptionType = NULL; 2829d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char * _exceptionMessage = NULL; 2830d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLuint *v_base = (GLuint *) 0; 2831d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _remaining; 2832d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLuint *v = (GLuint *) 0; 2833d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 2834d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (!v_ref) { 2835d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 2836d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 2837d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "v == null"; 2838d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 2839d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 2840d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (offset < 0) { 2841d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 2842d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 2843d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "offset < 0"; 2844d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 2845d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 2846d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _remaining = _env->GetArrayLength(v_ref) - offset; 2847d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall v_base = (GLuint *) 28483b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->GetIntArrayElements(v_ref, (jboolean *)0); 2849d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall v = v_base + offset; 2850d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 2851d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glVertexAttribI4uiv( 2852d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint)index, 2853d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint *)v 2854d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 2855d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 2856d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallexit: 2857d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (v_base) { 28583b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseIntArrayElements(v_ref, (jint*)v_base, 2859d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall JNI_ABORT); 2860d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 2861d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_exception) { 2862d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jniThrowException(_env, _exceptionType, _exceptionMessage); 2863d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 2864d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 2865d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 2866d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glVertexAttribI4uiv ( GLuint index, const GLuint *v ) */ 2867d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 2868d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glVertexAttribI4uiv__ILjava_nio_IntBuffer_2 2869d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint index, jobject v_buf) { 287084cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy jint _exception = 0; 287184cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy const char * _exceptionType = NULL; 287284cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy const char * _exceptionMessage = NULL; 28733b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi jintArray _array = (jintArray) 0; 2874d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _bufferOffset = (jint) 0; 2875d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _remaining; 2876d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLuint *v = (GLuint *) 0; 2877d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 287884cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy if (!v_buf) { 287984cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exception = 1; 288084cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exceptionType = "java/lang/IllegalArgumentException"; 288184cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exceptionMessage = "v == null"; 288284cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy goto exit; 288384cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy } 28843b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi v = (GLuint *)getPointer(_env, v_buf, (jarray*)&_array, &_remaining, &_bufferOffset); 2885d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (v == NULL) { 28863b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi char * _vBase = (char *)_env->GetIntArrayElements(_array, (jboolean *) 0); 2887d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall v = (GLuint *) (_vBase + _bufferOffset); 2888d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 2889d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glVertexAttribI4uiv( 2890d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint)index, 2891d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint *)v 2892d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 289384cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy 289484cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guyexit: 2895d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_array) { 28963b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseIntArrayElements(_array, (jint*)v, JNI_ABORT); 2897d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 289884cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy if (_exception) { 289984cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy jniThrowException(_env, _exceptionType, _exceptionMessage); 290084cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy } 2901d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 2902d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 2903d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glGetUniformuiv ( GLuint program, GLint location, GLuint *params ) */ 2904d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 2905d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glGetUniformuiv__II_3II 2906d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint program, jint location, jintArray params_ref, jint offset) { 2907d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _exception = 0; 2908d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char * _exceptionType = NULL; 2909d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char * _exceptionMessage = NULL; 2910d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLuint *params_base = (GLuint *) 0; 2911d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _remaining; 2912d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLuint *params = (GLuint *) 0; 2913d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 2914d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (!params_ref) { 2915d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 2916d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 2917d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "params == null"; 2918d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 2919d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 2920d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (offset < 0) { 2921d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 2922d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 2923d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "offset < 0"; 2924d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 2925d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 2926d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _remaining = _env->GetArrayLength(params_ref) - offset; 2927d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall params_base = (GLuint *) 29283b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->GetIntArrayElements(params_ref, (jboolean *)0); 2929d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall params = params_base + offset; 2930d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 2931d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glGetUniformuiv( 2932d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint)program, 2933d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint)location, 2934d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint *)params 2935d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 2936d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 2937d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallexit: 2938d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (params_base) { 29393b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseIntArrayElements(params_ref, (jint*)params_base, 2940d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception ? JNI_ABORT: 0); 2941d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 2942d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_exception) { 2943d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jniThrowException(_env, _exceptionType, _exceptionMessage); 2944d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 2945d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 2946d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 2947d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glGetUniformuiv ( GLuint program, GLint location, GLuint *params ) */ 2948d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 2949d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glGetUniformuiv__IILjava_nio_IntBuffer_2 2950d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint program, jint location, jobject params_buf) { 295184cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy jint _exception = 0; 295284cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy const char * _exceptionType = NULL; 295384cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy const char * _exceptionMessage = NULL; 29543b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi jintArray _array = (jintArray) 0; 2955d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _bufferOffset = (jint) 0; 2956d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _remaining; 2957d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLuint *params = (GLuint *) 0; 2958d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 295984cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy if (!params_buf) { 296084cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exception = 1; 296184cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exceptionType = "java/lang/IllegalArgumentException"; 296284cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exceptionMessage = "params == null"; 296384cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy goto exit; 296484cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy } 29653b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi params = (GLuint *)getPointer(_env, params_buf, (jarray*)&_array, &_remaining, &_bufferOffset); 2966d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (params == NULL) { 29673b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi char * _paramsBase = (char *)_env->GetIntArrayElements(_array, (jboolean *) 0); 2968d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall params = (GLuint *) (_paramsBase + _bufferOffset); 2969d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 2970d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glGetUniformuiv( 2971d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint)program, 2972d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint)location, 2973d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint *)params 2974d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 297584cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy 297684cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guyexit: 2977d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_array) { 297884cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _env->ReleaseIntArrayElements(_array, (jint*)params, _exception ? JNI_ABORT : 0); 297984cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy } 298084cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy if (_exception) { 298184cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy jniThrowException(_env, _exceptionType, _exceptionMessage); 2982d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 2983d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 2984d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 2985d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* GLint glGetFragDataLocation ( GLuint program, const GLchar *name ) */ 2986d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic jint 2987d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glGetFragDataLocation__ILjava_lang_String_2 2988d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint program, jstring name) { 2989d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _exception = 0; 2990d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char * _exceptionType = NULL; 2991d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char * _exceptionMessage = NULL; 2992d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLint _returnValue = 0; 2993d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char* _nativename = 0; 2994d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 2995d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (!name) { 2996428d3fcbe3596b18549cdada9fc68a29f159a946Elliott Hughes _exception = 1; 2997d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 2998d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "name == null"; 2999d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 3000d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 3001d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _nativename = _env->GetStringUTFChars(name, 0); 3002d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 3003d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _returnValue = glGetFragDataLocation( 3004d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint)program, 3005d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLchar *)_nativename 3006d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 3007d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 3008d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallexit: 3009d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_nativename) { 3010d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _env->ReleaseStringUTFChars(name, _nativename); 3011d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 3012d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 3013d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_exception) { 3014d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jniThrowException(_env, _exceptionType, _exceptionMessage); 3015d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 3016d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall return (jint)_returnValue; 3017d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 3018d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 3019d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glUniform1ui ( GLint location, GLuint v0 ) */ 3020d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 3021d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glUniform1ui__II 3022d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint location, jint v0) { 3023d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glUniform1ui( 3024d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint)location, 3025d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint)v0 3026d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 3027d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 3028d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 3029d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glUniform2ui ( GLint location, GLuint v0, GLuint v1 ) */ 3030d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 3031d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glUniform2ui__III 3032d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint location, jint v0, jint v1) { 3033d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glUniform2ui( 3034d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint)location, 3035d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint)v0, 3036d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint)v1 3037d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 3038d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 3039d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 3040d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glUniform3ui ( GLint location, GLuint v0, GLuint v1, GLuint v2 ) */ 3041d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 3042d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glUniform3ui__IIII 3043d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint location, jint v0, jint v1, jint v2) { 3044d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glUniform3ui( 3045d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint)location, 3046d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint)v0, 3047d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint)v1, 3048d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint)v2 3049d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 3050d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 3051d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 3052d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glUniform4ui ( GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3 ) */ 3053d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 3054d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glUniform4ui__IIIII 3055d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint location, jint v0, jint v1, jint v2, jint v3) { 3056d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glUniform4ui( 3057d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint)location, 3058d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint)v0, 3059d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint)v1, 3060d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint)v2, 3061d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint)v3 3062d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 3063d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 3064d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 3065d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glUniform1uiv ( GLint location, GLsizei count, const GLuint *value ) */ 3066d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 3067d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glUniform1uiv__II_3II 3068d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint location, jint count, jintArray value_ref, jint offset) { 3069d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _exception = 0; 3070d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char * _exceptionType = NULL; 3071d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char * _exceptionMessage = NULL; 3072d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLuint *value_base = (GLuint *) 0; 3073d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _remaining; 3074d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLuint *value = (GLuint *) 0; 3075d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 3076d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (!value_ref) { 3077d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 3078d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 3079d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "value == null"; 3080d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 3081d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 3082d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (offset < 0) { 3083d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 3084d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 3085d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "offset < 0"; 3086d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 3087d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 3088d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _remaining = _env->GetArrayLength(value_ref) - offset; 3089d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall value_base = (GLuint *) 30903b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->GetIntArrayElements(value_ref, (jboolean *)0); 3091d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall value = value_base + offset; 3092d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 3093d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glUniform1uiv( 3094d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint)location, 3095d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)count, 3096d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint *)value 3097d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 3098d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 3099d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallexit: 3100d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (value_base) { 31013b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseIntArrayElements(value_ref, (jint*)value_base, 3102d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall JNI_ABORT); 3103d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 3104d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_exception) { 3105d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jniThrowException(_env, _exceptionType, _exceptionMessage); 3106d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 3107d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 3108d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 3109d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glUniform1uiv ( GLint location, GLsizei count, const GLuint *value ) */ 3110d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 3111d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glUniform1uiv__IILjava_nio_IntBuffer_2 3112d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint location, jint count, jobject value_buf) { 311384cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy jint _exception = 0; 311484cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy const char * _exceptionType = NULL; 311584cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy const char * _exceptionMessage = NULL; 31163b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi jintArray _array = (jintArray) 0; 3117d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _bufferOffset = (jint) 0; 3118d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _remaining; 3119d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLuint *value = (GLuint *) 0; 3120d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 312184cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy if (!value_buf) { 312284cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exception = 1; 312384cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exceptionType = "java/lang/IllegalArgumentException"; 312484cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exceptionMessage = "value == null"; 312584cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy goto exit; 312684cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy } 31273b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi value = (GLuint *)getPointer(_env, value_buf, (jarray*)&_array, &_remaining, &_bufferOffset); 3128d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (value == NULL) { 31293b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi char * _valueBase = (char *)_env->GetIntArrayElements(_array, (jboolean *) 0); 3130d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall value = (GLuint *) (_valueBase + _bufferOffset); 3131d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 3132d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glUniform1uiv( 3133d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint)location, 3134d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)count, 3135d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint *)value 3136d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 313784cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy 313884cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guyexit: 3139d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_array) { 31403b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseIntArrayElements(_array, (jint*)value, JNI_ABORT); 3141d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 314284cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy if (_exception) { 314384cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy jniThrowException(_env, _exceptionType, _exceptionMessage); 314484cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy } 3145d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 3146d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 3147d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glUniform2uiv ( GLint location, GLsizei count, const GLuint *value ) */ 3148d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 3149d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glUniform2uiv__II_3II 3150d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint location, jint count, jintArray value_ref, jint offset) { 3151d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _exception = 0; 3152d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char * _exceptionType = NULL; 3153d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char * _exceptionMessage = NULL; 3154d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLuint *value_base = (GLuint *) 0; 3155d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _remaining; 3156d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLuint *value = (GLuint *) 0; 3157d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 3158d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (!value_ref) { 3159d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 3160d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 3161d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "value == null"; 3162d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 3163d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 3164d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (offset < 0) { 3165d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 3166d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 3167d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "offset < 0"; 3168d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 3169d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 3170d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _remaining = _env->GetArrayLength(value_ref) - offset; 3171d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall value_base = (GLuint *) 31723b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->GetIntArrayElements(value_ref, (jboolean *)0); 3173d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall value = value_base + offset; 3174d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 3175d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glUniform2uiv( 3176d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint)location, 3177d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)count, 3178d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint *)value 3179d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 3180d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 3181d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallexit: 3182d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (value_base) { 31833b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseIntArrayElements(value_ref, (jint*)value_base, 3184d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall JNI_ABORT); 3185d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 3186d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_exception) { 3187d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jniThrowException(_env, _exceptionType, _exceptionMessage); 3188d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 3189d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 3190d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 3191d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glUniform2uiv ( GLint location, GLsizei count, const GLuint *value ) */ 3192d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 3193d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glUniform2uiv__IILjava_nio_IntBuffer_2 3194d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint location, jint count, jobject value_buf) { 319584cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy jint _exception = 0; 319684cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy const char * _exceptionType = NULL; 319784cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy const char * _exceptionMessage = NULL; 31983b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi jintArray _array = (jintArray) 0; 3199d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _bufferOffset = (jint) 0; 3200d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _remaining; 3201d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLuint *value = (GLuint *) 0; 3202d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 320384cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy if (!value_buf) { 320484cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exception = 1; 320584cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exceptionType = "java/lang/IllegalArgumentException"; 320684cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exceptionMessage = "value == null"; 320784cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy goto exit; 320884cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy } 32093b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi value = (GLuint *)getPointer(_env, value_buf, (jarray*)&_array, &_remaining, &_bufferOffset); 3210d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (value == NULL) { 32113b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi char * _valueBase = (char *)_env->GetIntArrayElements(_array, (jboolean *) 0); 3212d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall value = (GLuint *) (_valueBase + _bufferOffset); 3213d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 3214d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glUniform2uiv( 3215d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint)location, 3216d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)count, 3217d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint *)value 3218d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 321984cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy 322084cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guyexit: 3221d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_array) { 32223b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseIntArrayElements(_array, (jint*)value, JNI_ABORT); 3223d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 322484cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy if (_exception) { 322584cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy jniThrowException(_env, _exceptionType, _exceptionMessage); 322684cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy } 3227d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 3228d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 3229d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glUniform3uiv ( GLint location, GLsizei count, const GLuint *value ) */ 3230d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 3231d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glUniform3uiv__II_3II 3232d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint location, jint count, jintArray value_ref, jint offset) { 3233d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _exception = 0; 3234d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char * _exceptionType = NULL; 3235d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char * _exceptionMessage = NULL; 3236d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLuint *value_base = (GLuint *) 0; 3237d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _remaining; 3238d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLuint *value = (GLuint *) 0; 3239d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 3240d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (!value_ref) { 3241d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 3242d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 3243d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "value == null"; 3244d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 3245d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 3246d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (offset < 0) { 3247d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 3248d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 3249d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "offset < 0"; 3250d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 3251d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 3252d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _remaining = _env->GetArrayLength(value_ref) - offset; 3253d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall value_base = (GLuint *) 32543b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->GetIntArrayElements(value_ref, (jboolean *)0); 3255d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall value = value_base + offset; 3256d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 3257d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glUniform3uiv( 3258d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint)location, 3259d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)count, 3260d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint *)value 3261d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 3262d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 3263d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallexit: 3264d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (value_base) { 32653b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseIntArrayElements(value_ref, (jint*)value_base, 3266d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall JNI_ABORT); 3267d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 3268d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_exception) { 3269d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jniThrowException(_env, _exceptionType, _exceptionMessage); 3270d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 3271d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 3272d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 3273d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glUniform3uiv ( GLint location, GLsizei count, const GLuint *value ) */ 3274d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 3275d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glUniform3uiv__IILjava_nio_IntBuffer_2 3276d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint location, jint count, jobject value_buf) { 327784cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy jint _exception = 0; 327884cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy const char * _exceptionType = NULL; 327984cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy const char * _exceptionMessage = NULL; 32803b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi jintArray _array = (jintArray) 0; 3281d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _bufferOffset = (jint) 0; 3282d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _remaining; 3283d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLuint *value = (GLuint *) 0; 3284d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 328584cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy if (!value_buf) { 328684cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exception = 1; 328784cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exceptionType = "java/lang/IllegalArgumentException"; 328884cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exceptionMessage = "value == null"; 328984cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy goto exit; 329084cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy } 32913b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi value = (GLuint *)getPointer(_env, value_buf, (jarray*)&_array, &_remaining, &_bufferOffset); 3292d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (value == NULL) { 32933b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi char * _valueBase = (char *)_env->GetIntArrayElements(_array, (jboolean *) 0); 3294d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall value = (GLuint *) (_valueBase + _bufferOffset); 3295d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 3296d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glUniform3uiv( 3297d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint)location, 3298d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)count, 3299d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint *)value 3300d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 330184cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy 330284cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guyexit: 3303d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_array) { 33043b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseIntArrayElements(_array, (jint*)value, JNI_ABORT); 3305d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 330684cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy if (_exception) { 330784cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy jniThrowException(_env, _exceptionType, _exceptionMessage); 330884cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy } 3309d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 3310d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 3311d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glUniform4uiv ( GLint location, GLsizei count, const GLuint *value ) */ 3312d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 3313d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glUniform4uiv__II_3II 3314d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint location, jint count, jintArray value_ref, jint offset) { 3315d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _exception = 0; 3316d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char * _exceptionType = NULL; 3317d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char * _exceptionMessage = NULL; 3318d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLuint *value_base = (GLuint *) 0; 3319d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _remaining; 3320d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLuint *value = (GLuint *) 0; 3321d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 3322d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (!value_ref) { 3323d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 3324d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 3325d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "value == null"; 3326d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 3327d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 3328d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (offset < 0) { 3329d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 3330d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 3331d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "offset < 0"; 3332d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 3333d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 3334d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _remaining = _env->GetArrayLength(value_ref) - offset; 3335d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall value_base = (GLuint *) 33363b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->GetIntArrayElements(value_ref, (jboolean *)0); 3337d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall value = value_base + offset; 3338d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 3339d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glUniform4uiv( 3340d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint)location, 3341d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)count, 3342d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint *)value 3343d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 3344d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 3345d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallexit: 3346d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (value_base) { 33473b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseIntArrayElements(value_ref, (jint*)value_base, 3348d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall JNI_ABORT); 3349d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 3350d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_exception) { 3351d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jniThrowException(_env, _exceptionType, _exceptionMessage); 3352d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 3353d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 3354d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 3355d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glUniform4uiv ( GLint location, GLsizei count, const GLuint *value ) */ 3356d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 3357d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glUniform4uiv__IILjava_nio_IntBuffer_2 3358d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint location, jint count, jobject value_buf) { 335984cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy jint _exception = 0; 336084cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy const char * _exceptionType = NULL; 336184cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy const char * _exceptionMessage = NULL; 33623b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi jintArray _array = (jintArray) 0; 3363d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _bufferOffset = (jint) 0; 3364d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _remaining; 3365d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLuint *value = (GLuint *) 0; 3366d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 336784cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy if (!value_buf) { 336884cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exception = 1; 336984cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exceptionType = "java/lang/IllegalArgumentException"; 337084cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exceptionMessage = "value == null"; 337184cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy goto exit; 337284cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy } 33733b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi value = (GLuint *)getPointer(_env, value_buf, (jarray*)&_array, &_remaining, &_bufferOffset); 3374d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (value == NULL) { 33753b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi char * _valueBase = (char *)_env->GetIntArrayElements(_array, (jboolean *) 0); 3376d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall value = (GLuint *) (_valueBase + _bufferOffset); 3377d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 3378d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glUniform4uiv( 3379d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint)location, 3380d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)count, 3381d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint *)value 3382d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 338384cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy 338484cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guyexit: 3385d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_array) { 33863b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseIntArrayElements(_array, (jint*)value, JNI_ABORT); 3387d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 338884cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy if (_exception) { 338984cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy jniThrowException(_env, _exceptionType, _exceptionMessage); 339084cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy } 3391d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 3392d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 3393d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glClearBufferiv ( GLenum buffer, GLint drawbuffer, const GLint *value ) */ 3394d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 3395d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glClearBufferiv__II_3II 3396d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint buffer, jint drawbuffer, jintArray value_ref, jint offset) { 3397d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _exception = 0; 3398d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char * _exceptionType = NULL; 3399d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char * _exceptionMessage = NULL; 3400d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLint *value_base = (GLint *) 0; 3401d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _remaining; 3402d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLint *value = (GLint *) 0; 3403d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 3404d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (!value_ref) { 3405d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 3406d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 3407d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "value == null"; 3408d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 3409d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 3410d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (offset < 0) { 3411d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 3412d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 3413d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "offset < 0"; 3414d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 3415d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 3416d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _remaining = _env->GetArrayLength(value_ref) - offset; 3417d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall value_base = (GLint *) 34183b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->GetIntArrayElements(value_ref, (jboolean *)0); 3419d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall value = value_base + offset; 3420d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 3421d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glClearBufferiv( 3422d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)buffer, 3423d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint)drawbuffer, 3424d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint *)value 3425d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 3426d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 3427d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallexit: 3428d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (value_base) { 34293b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseIntArrayElements(value_ref, (jint*)value_base, 3430d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall JNI_ABORT); 3431d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 3432d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_exception) { 3433d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jniThrowException(_env, _exceptionType, _exceptionMessage); 3434d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 3435d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 3436d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 3437d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glClearBufferiv ( GLenum buffer, GLint drawbuffer, const GLint *value ) */ 3438d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 3439d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glClearBufferiv__IILjava_nio_IntBuffer_2 3440d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint buffer, jint drawbuffer, jobject value_buf) { 344184cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy jint _exception = 0; 344284cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy const char * _exceptionType = NULL; 344384cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy const char * _exceptionMessage = NULL; 34443b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi jintArray _array = (jintArray) 0; 3445d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _bufferOffset = (jint) 0; 3446d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _remaining; 3447d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLint *value = (GLint *) 0; 3448d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 344984cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy if (!value_buf) { 345084cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exception = 1; 345184cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exceptionType = "java/lang/IllegalArgumentException"; 345284cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exceptionMessage = "value == null"; 345384cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy goto exit; 345484cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy } 34553b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi value = (GLint *)getPointer(_env, value_buf, (jarray*)&_array, &_remaining, &_bufferOffset); 3456d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (value == NULL) { 34573b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi char * _valueBase = (char *)_env->GetIntArrayElements(_array, (jboolean *) 0); 3458d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall value = (GLint *) (_valueBase + _bufferOffset); 3459d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 3460d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glClearBufferiv( 3461d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)buffer, 3462d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint)drawbuffer, 3463d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint *)value 3464d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 346584cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy 346684cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guyexit: 3467d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_array) { 34683b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseIntArrayElements(_array, (jint*)value, JNI_ABORT); 3469d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 347084cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy if (_exception) { 347184cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy jniThrowException(_env, _exceptionType, _exceptionMessage); 347284cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy } 3473d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 3474d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 3475d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glClearBufferuiv ( GLenum buffer, GLint drawbuffer, const GLuint *value ) */ 3476d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 3477d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glClearBufferuiv__II_3II 3478d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint buffer, jint drawbuffer, jintArray value_ref, jint offset) { 3479d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _exception = 0; 3480d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char * _exceptionType = NULL; 3481d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char * _exceptionMessage = NULL; 3482d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLuint *value_base = (GLuint *) 0; 3483d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _remaining; 3484d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLuint *value = (GLuint *) 0; 3485d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 3486d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (!value_ref) { 3487d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 3488d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 3489d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "value == null"; 3490d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 3491d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 3492d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (offset < 0) { 3493d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 3494d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 3495d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "offset < 0"; 3496d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 3497d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 3498d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _remaining = _env->GetArrayLength(value_ref) - offset; 3499d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall value_base = (GLuint *) 35003b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->GetIntArrayElements(value_ref, (jboolean *)0); 3501d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall value = value_base + offset; 3502d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 3503d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glClearBufferuiv( 3504d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)buffer, 3505d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint)drawbuffer, 3506d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint *)value 3507d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 3508d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 3509d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallexit: 3510d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (value_base) { 35113b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseIntArrayElements(value_ref, (jint*)value_base, 3512d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall JNI_ABORT); 3513d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 3514d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_exception) { 3515d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jniThrowException(_env, _exceptionType, _exceptionMessage); 3516d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 3517d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 3518d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 3519d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glClearBufferuiv ( GLenum buffer, GLint drawbuffer, const GLuint *value ) */ 3520d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 3521d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glClearBufferuiv__IILjava_nio_IntBuffer_2 3522d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint buffer, jint drawbuffer, jobject value_buf) { 352384cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy jint _exception = 0; 352484cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy const char * _exceptionType = NULL; 352584cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy const char * _exceptionMessage = NULL; 35263b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi jintArray _array = (jintArray) 0; 3527d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _bufferOffset = (jint) 0; 3528d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _remaining; 3529d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLuint *value = (GLuint *) 0; 3530d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 353184cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy if (!value_buf) { 353284cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exception = 1; 353384cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exceptionType = "java/lang/IllegalArgumentException"; 353484cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exceptionMessage = "value == null"; 353584cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy goto exit; 353684cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy } 35373b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi value = (GLuint *)getPointer(_env, value_buf, (jarray*)&_array, &_remaining, &_bufferOffset); 3538d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (value == NULL) { 35393b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi char * _valueBase = (char *)_env->GetIntArrayElements(_array, (jboolean *) 0); 3540d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall value = (GLuint *) (_valueBase + _bufferOffset); 3541d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 3542d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glClearBufferuiv( 3543d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)buffer, 3544d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint)drawbuffer, 3545d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint *)value 3546d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 354784cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy 354884cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guyexit: 3549d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_array) { 35503b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseIntArrayElements(_array, (jint*)value, JNI_ABORT); 3551d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 355284cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy if (_exception) { 355384cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy jniThrowException(_env, _exceptionType, _exceptionMessage); 355484cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy } 3555d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 3556d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 3557d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glClearBufferfv ( GLenum buffer, GLint drawbuffer, const GLfloat *value ) */ 3558d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 3559d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glClearBufferfv__II_3FI 3560d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint buffer, jint drawbuffer, jfloatArray value_ref, jint offset) { 3561d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _exception = 0; 3562d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char * _exceptionType = NULL; 3563d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char * _exceptionMessage = NULL; 3564d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLfloat *value_base = (GLfloat *) 0; 3565d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _remaining; 3566d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLfloat *value = (GLfloat *) 0; 3567d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 3568d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (!value_ref) { 3569d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 3570d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 3571d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "value == null"; 3572d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 3573d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 3574d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (offset < 0) { 3575d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 3576d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 3577d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "offset < 0"; 3578d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 3579d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 3580d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _remaining = _env->GetArrayLength(value_ref) - offset; 3581d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall value_base = (GLfloat *) 35823b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->GetFloatArrayElements(value_ref, (jboolean *)0); 3583d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall value = value_base + offset; 3584d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 3585d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glClearBufferfv( 3586d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)buffer, 3587d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint)drawbuffer, 3588d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLfloat *)value 3589d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 3590d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 3591d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallexit: 3592d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (value_base) { 35933b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseFloatArrayElements(value_ref, (jfloat*)value_base, 3594d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall JNI_ABORT); 3595d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 3596d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_exception) { 3597d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jniThrowException(_env, _exceptionType, _exceptionMessage); 3598d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 3599d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 3600d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 3601d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glClearBufferfv ( GLenum buffer, GLint drawbuffer, const GLfloat *value ) */ 3602d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 3603d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glClearBufferfv__IILjava_nio_FloatBuffer_2 3604d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint buffer, jint drawbuffer, jobject value_buf) { 360584cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy jint _exception = 0; 360684cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy const char * _exceptionType = NULL; 360784cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy const char * _exceptionMessage = NULL; 36083b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi jfloatArray _array = (jfloatArray) 0; 3609d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _bufferOffset = (jint) 0; 3610d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _remaining; 3611d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLfloat *value = (GLfloat *) 0; 3612d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 361384cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy if (!value_buf) { 361484cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exception = 1; 361584cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exceptionType = "java/lang/IllegalArgumentException"; 361684cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exceptionMessage = "value == null"; 361784cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy goto exit; 361884cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy } 36193b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi value = (GLfloat *)getPointer(_env, value_buf, (jarray*)&_array, &_remaining, &_bufferOffset); 3620d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (value == NULL) { 36213b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi char * _valueBase = (char *)_env->GetFloatArrayElements(_array, (jboolean *) 0); 3622d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall value = (GLfloat *) (_valueBase + _bufferOffset); 3623d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 3624d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glClearBufferfv( 3625d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)buffer, 3626d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint)drawbuffer, 3627d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLfloat *)value 3628d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 362984cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy 363084cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guyexit: 3631d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_array) { 36323b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseFloatArrayElements(_array, (jfloat*)value, JNI_ABORT); 3633d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 363484cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy if (_exception) { 363584cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy jniThrowException(_env, _exceptionType, _exceptionMessage); 363684cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy } 3637d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 3638d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 3639d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glClearBufferfi ( GLenum buffer, GLint drawbuffer, GLfloat depth, GLint stencil ) */ 3640d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 3641d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glClearBufferfi__IIFI 3642d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint buffer, jint drawbuffer, jfloat depth, jint stencil) { 3643d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glClearBufferfi( 3644d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)buffer, 3645d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint)drawbuffer, 3646d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLfloat)depth, 3647d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint)stencil 3648d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 3649d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 3650d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 3651d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* const GLubyte * glGetStringi ( GLenum name, GLuint index ) */ 3652d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic jstring 3653d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glGetStringi__II 3654d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint name, jint index) { 3655d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const GLubyte* _chars = glGetStringi((GLenum)name, (GLuint)index); 3656d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall return _env->NewStringUTF((const char*)_chars); 3657d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 3658d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 3659d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glCopyBufferSubData ( GLenum readTarget, GLenum writeTarget, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size ) */ 3660d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 3661d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glCopyBufferSubData__IIIII 3662d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint readTarget, jint writeTarget, jint readOffset, jint writeOffset, jint size) { 3663d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glCopyBufferSubData( 3664d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)readTarget, 3665d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)writeTarget, 3666d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLintptr)readOffset, 3667d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLintptr)writeOffset, 3668d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizeiptr)size 3669d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 3670d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 3671d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 3672d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glGetUniformIndices ( GLuint program, GLsizei uniformCount, const GLchar *const *uniformNames, GLuint *uniformIndices ) */ 3673d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic 3674d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallvoid 3675d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glGetUniformIndices_array 3676d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint program, jobjectArray uniformNames_ref, jintArray uniformIndices_ref, jint uniformIndicesOffset) { 3677d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _exception = 0; 3678d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char* _exceptionType = NULL; 3679d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char* _exceptionMessage = NULL; 3680d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _count = 0; 3681d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _i; 3682d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char** _names = NULL; 3683d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLuint* _indices_base = NULL; 3684d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLuint* _indices = NULL; 3685d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 3686d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (!uniformNames_ref) { 3687d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 3688d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 3689d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "uniformNames == null"; 3690d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 3691d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 3692d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _count = _env->GetArrayLength(uniformNames_ref); 3693d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _names = (const char**)calloc(_count, sizeof(const char*)); 3694d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall for (_i = 0; _i < _count; _i++) { 3695d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jstring _name = (jstring)_env->GetObjectArrayElement(uniformNames_ref, _i); 3696d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (!_name) { 3697d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 3698d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 3699d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "null uniformNames element"; 3700d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 3701d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 3702d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _names[_i] = _env->GetStringUTFChars(_name, 0); 3703d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 3704d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 3705d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (!uniformIndices_ref) { 3706d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 3707d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 3708d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "uniformIndices == null"; 3709d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 3710d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 3711d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (uniformIndicesOffset < 0) { 3712d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 3713d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 3714d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "uniformIndicesOffset < 0"; 3715d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 3716d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 3717d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_env->GetArrayLength(uniformIndices_ref) - uniformIndicesOffset < _count) { 3718d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 3719d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 3720d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "not enough space in uniformIndices"; 3721d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 3722d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 37233b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _indices_base = (GLuint*)_env->GetIntArrayElements( 3724d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall uniformIndices_ref, 0); 3725d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _indices = _indices_base + uniformIndicesOffset; 3726d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 3727d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glGetUniformIndices(program, _count, _names, _indices); 3728d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 3729d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallexit: 3730d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_indices_base) { 37313b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseIntArrayElements(uniformIndices_ref, (jint*)_indices_base, 37323b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _exception ? JNI_ABORT : 0); 3733d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 3734d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall for (_i = _count - 1; _i >= 0; _i--) { 3735d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_names[_i]) { 3736d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jstring _name = (jstring)_env->GetObjectArrayElement(uniformNames_ref, _i); 3737d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_name) { 3738d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _env->ReleaseStringUTFChars(_name, _names[_i]); 3739d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 3740d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 3741d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 3742d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall free(_names); 3743d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_exception) { 3744d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jniThrowException(_env, _exceptionType, _exceptionMessage); 3745d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 3746d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 3747d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 3748d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glGetUniformIndices ( GLuint program, GLsizei uniformCount, const GLchar *const *uniformNames, GLuint *uniformIndices ) */ 3749d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic 3750d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallvoid 3751d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glGetUniformIndices_buffer 3752d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint program, jobjectArray uniformNames_ref, jobject uniformIndices_buf) { 3753d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _exception = 0; 3754d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char* _exceptionType = NULL; 3755d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char* _exceptionMessage = NULL; 3756d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _count = 0; 3757d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _i; 3758d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char** _names = NULL; 37593b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi jintArray _uniformIndicesArray = (jintArray)0; 3760d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _uniformIndicesRemaining; 3761d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _uniformIndicesOffset = 0; 3762d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLuint* _indices = NULL; 3763d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall char* _indicesBase = NULL; 3764d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 3765d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (!uniformNames_ref) { 3766d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 3767d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 3768d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "uniformNames == null"; 3769d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 3770d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 3771d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (!uniformIndices_buf) { 3772d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 3773d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 3774d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "uniformIndices == null"; 3775d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 3776d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 3777d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 3778d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _count = _env->GetArrayLength(uniformNames_ref); 3779d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _names = (const char**)calloc(_count, sizeof(const char*)); 3780d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall for (_i = 0; _i < _count; _i++) { 3781d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jstring _name = (jstring)_env->GetObjectArrayElement(uniformNames_ref, _i); 3782d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (!_name) { 3783d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 3784d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 3785d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "null uniformNames element"; 3786d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 3787d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 3788d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _names[_i] = _env->GetStringUTFChars(_name, 0); 3789d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 3790d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 3791d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _indices = (GLuint*)getPointer(_env, uniformIndices_buf, 37923b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi (jarray*)&_uniformIndicesArray, &_uniformIndicesRemaining, 3793d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall &_uniformIndicesOffset); 3794d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (!_indices) { 37953b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _indicesBase = (char*)_env->GetIntArrayElements( 37963b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _uniformIndicesArray, 0); 3797d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _indices = (GLuint*)(_indicesBase + _uniformIndicesOffset); 3798d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 3799d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_uniformIndicesRemaining < _count) { 3800d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 3801d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 3802d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "not enough space in uniformIndices"; 3803d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 3804d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 3805d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 3806d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glGetUniformIndices(program, _count, _names, _indices); 3807d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 3808d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallexit: 3809d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_uniformIndicesArray) { 38103b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi releaseArrayPointer<jintArray, jint*, IntArrayReleaser>( 38113b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env, _uniformIndicesArray, (jint*)_indicesBase, JNI_TRUE); 3812d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 3813d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall for (_i = _count - 1; _i >= 0; _i--) { 3814d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_names[_i]) { 3815d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jstring _name = (jstring)_env->GetObjectArrayElement(uniformNames_ref, _i); 3816d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_name) { 3817d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _env->ReleaseStringUTFChars(_name, _names[_i]); 3818d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 3819d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 3820d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 3821d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall free(_names); 3822d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_exception) { 3823d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jniThrowException(_env, _exceptionType, _exceptionMessage); 3824d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 3825d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 3826d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glGetActiveUniformsiv ( GLuint program, GLsizei uniformCount, const GLuint *uniformIndices, GLenum pname, GLint *params ) */ 3827d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 3828d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glGetActiveUniformsiv__II_3III_3II 3829d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint program, jint uniformCount, jintArray uniformIndices_ref, jint uniformIndicesOffset, jint pname, jintArray params_ref, jint paramsOffset) { 3830d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _exception = 0; 3831d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char * _exceptionType = NULL; 3832d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char * _exceptionMessage = NULL; 3833d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLuint *uniformIndices_base = (GLuint *) 0; 3834d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _uniformIndicesRemaining; 3835d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLuint *uniformIndices = (GLuint *) 0; 3836d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLint *params_base = (GLint *) 0; 3837d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _paramsRemaining; 3838d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLint *params = (GLint *) 0; 3839d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 3840d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (!uniformIndices_ref) { 3841d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 3842d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 3843d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "uniformIndices == null"; 3844d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 3845d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 3846d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (uniformIndicesOffset < 0) { 3847d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 3848d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 3849d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "uniformIndicesOffset < 0"; 3850d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 3851d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 3852d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _uniformIndicesRemaining = _env->GetArrayLength(uniformIndices_ref) - uniformIndicesOffset; 3853d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall uniformIndices_base = (GLuint *) 38543b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->GetIntArrayElements(uniformIndices_ref, (jboolean *)0); 3855d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall uniformIndices = uniformIndices_base + uniformIndicesOffset; 3856d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 3857d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (!params_ref) { 3858d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 3859d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 3860d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "params == null"; 3861d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 3862d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 3863d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (paramsOffset < 0) { 3864d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 3865d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 3866d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "paramsOffset < 0"; 3867d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 3868d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 3869d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _paramsRemaining = _env->GetArrayLength(params_ref) - paramsOffset; 3870d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall params_base = (GLint *) 38713b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->GetIntArrayElements(params_ref, (jboolean *)0); 3872d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall params = params_base + paramsOffset; 3873d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 3874d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glGetActiveUniformsiv( 3875d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint)program, 3876d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)uniformCount, 3877d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint *)uniformIndices, 3878d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)pname, 3879d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint *)params 3880d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 3881d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 3882d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallexit: 3883d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (params_base) { 38843b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseIntArrayElements(params_ref, (jint*)params_base, 3885d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception ? JNI_ABORT: 0); 3886d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 3887d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (uniformIndices_base) { 38883b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseIntArrayElements(uniformIndices_ref, (jint*)uniformIndices_base, 3889d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall JNI_ABORT); 3890d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 3891d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_exception) { 3892d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jniThrowException(_env, _exceptionType, _exceptionMessage); 3893d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 3894d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 3895d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 3896d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glGetActiveUniformsiv ( GLuint program, GLsizei uniformCount, const GLuint *uniformIndices, GLenum pname, GLint *params ) */ 3897d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 3898d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glGetActiveUniformsiv__IILjava_nio_IntBuffer_2ILjava_nio_IntBuffer_2 3899d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint program, jint uniformCount, jobject uniformIndices_buf, jint pname, jobject params_buf) { 390084cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy jint _exception = 0; 390184cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy const char * _exceptionType = NULL; 390284cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy const char * _exceptionMessage = NULL; 39033b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi jintArray _uniformIndicesArray = (jintArray) 0; 3904d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _uniformIndicesBufferOffset = (jint) 0; 39053b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi jintArray _paramsArray = (jintArray) 0; 3906d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _paramsBufferOffset = (jint) 0; 3907d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _uniformIndicesRemaining; 3908d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLuint *uniformIndices = (GLuint *) 0; 3909d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _paramsRemaining; 3910d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLint *params = (GLint *) 0; 3911d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 391284cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy if (!uniformIndices_buf) { 391384cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exception = 1; 391484cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exceptionType = "java/lang/IllegalArgumentException"; 391584cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exceptionMessage = "uniformIndices == null"; 391684cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy goto exit; 391784cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy } 39183b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi uniformIndices = (GLuint *)getPointer(_env, uniformIndices_buf, (jarray*)&_uniformIndicesArray, &_uniformIndicesRemaining, &_uniformIndicesBufferOffset); 391984cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy if (!params_buf) { 392084cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exception = 1; 392184cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exceptionType = "java/lang/IllegalArgumentException"; 392284cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exceptionMessage = "params == null"; 392384cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy goto exit; 392484cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy } 39253b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi params = (GLint *)getPointer(_env, params_buf, (jarray*)&_paramsArray, &_paramsRemaining, &_paramsBufferOffset); 3926d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (uniformIndices == NULL) { 39273b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi char * _uniformIndicesBase = (char *)_env->GetIntArrayElements(_uniformIndicesArray, (jboolean *) 0); 3928d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall uniformIndices = (GLuint *) (_uniformIndicesBase + _uniformIndicesBufferOffset); 3929d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 3930d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (params == NULL) { 39313b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi char * _paramsBase = (char *)_env->GetIntArrayElements(_paramsArray, (jboolean *) 0); 3932d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall params = (GLint *) (_paramsBase + _paramsBufferOffset); 3933d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 3934d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glGetActiveUniformsiv( 3935d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint)program, 3936d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)uniformCount, 3937d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint *)uniformIndices, 3938d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)pname, 3939d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint *)params 3940d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 394184cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy 394284cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guyexit: 3943d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_paramsArray) { 394484cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _env->ReleaseIntArrayElements(_paramsArray, (jint*)params, _exception ? JNI_ABORT : 0); 3945d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 3946d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_uniformIndicesArray) { 39473b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseIntArrayElements(_uniformIndicesArray, (jint*)uniformIndices, JNI_ABORT); 3948d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 394984cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy if (_exception) { 395084cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy jniThrowException(_env, _exceptionType, _exceptionMessage); 395184cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy } 3952d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 3953d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 3954d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* GLuint glGetUniformBlockIndex ( GLuint program, const GLchar *uniformBlockName ) */ 3955d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic jint 3956d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glGetUniformBlockIndex__ILjava_lang_String_2 3957d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint program, jstring uniformBlockName) { 3958d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _exception = 0; 3959d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char * _exceptionType = NULL; 3960d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char * _exceptionMessage = NULL; 3961d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLuint _returnValue = 0; 3962d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char* _nativeuniformBlockName = 0; 3963d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 3964d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (!uniformBlockName) { 3965428d3fcbe3596b18549cdada9fc68a29f159a946Elliott Hughes _exception = 1; 3966d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 3967d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "uniformBlockName == null"; 3968d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 3969d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 3970d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _nativeuniformBlockName = _env->GetStringUTFChars(uniformBlockName, 0); 3971d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 3972d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _returnValue = glGetUniformBlockIndex( 3973d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint)program, 3974d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLchar *)_nativeuniformBlockName 3975d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 3976d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 3977d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallexit: 3978d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_nativeuniformBlockName) { 3979d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _env->ReleaseStringUTFChars(uniformBlockName, _nativeuniformBlockName); 3980d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 3981d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 3982d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_exception) { 3983d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jniThrowException(_env, _exceptionType, _exceptionMessage); 3984d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 3985d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall return (jint)_returnValue; 3986d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 3987d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 3988d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glGetActiveUniformBlockiv ( GLuint program, GLuint uniformBlockIndex, GLenum pname, GLint *params ) */ 3989d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 3990d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glGetActiveUniformBlockiv__III_3II 3991d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint program, jint uniformBlockIndex, jint pname, jintArray params_ref, jint offset) { 3992d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _exception = 0; 3993d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char * _exceptionType = NULL; 3994d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char * _exceptionMessage = NULL; 3995d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLint *params_base = (GLint *) 0; 3996d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _remaining; 3997d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLint *params = (GLint *) 0; 3998d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 3999d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (!params_ref) { 4000d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 4001d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 4002d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "params == null"; 4003d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 4004d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 4005d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (offset < 0) { 4006d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 4007d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 4008d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "offset < 0"; 4009d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 4010d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 4011d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _remaining = _env->GetArrayLength(params_ref) - offset; 4012d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall params_base = (GLint *) 40133b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->GetIntArrayElements(params_ref, (jboolean *)0); 4014d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall params = params_base + offset; 4015d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 4016d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glGetActiveUniformBlockiv( 4017d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint)program, 4018d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint)uniformBlockIndex, 4019d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)pname, 4020d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint *)params 4021d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 4022d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 4023d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallexit: 4024d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (params_base) { 40253b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseIntArrayElements(params_ref, (jint*)params_base, 4026d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception ? JNI_ABORT: 0); 4027d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 4028d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_exception) { 4029d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jniThrowException(_env, _exceptionType, _exceptionMessage); 4030d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 4031d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 4032d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 4033d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glGetActiveUniformBlockiv ( GLuint program, GLuint uniformBlockIndex, GLenum pname, GLint *params ) */ 4034d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 4035d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glGetActiveUniformBlockiv__IIILjava_nio_IntBuffer_2 4036d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint program, jint uniformBlockIndex, jint pname, jobject params_buf) { 403784cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy jint _exception = 0; 403884cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy const char * _exceptionType = NULL; 403984cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy const char * _exceptionMessage = NULL; 40403b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi jintArray _array = (jintArray) 0; 4041d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _bufferOffset = (jint) 0; 4042d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _remaining; 4043d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLint *params = (GLint *) 0; 4044d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 404584cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy if (!params_buf) { 404684cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exception = 1; 404784cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exceptionType = "java/lang/IllegalArgumentException"; 404884cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exceptionMessage = "params == null"; 404984cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy goto exit; 405084cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy } 40513b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi params = (GLint *)getPointer(_env, params_buf, (jarray*)&_array, &_remaining, &_bufferOffset); 4052d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (params == NULL) { 40533b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi char * _paramsBase = (char *)_env->GetIntArrayElements(_array, (jboolean *) 0); 4054d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall params = (GLint *) (_paramsBase + _bufferOffset); 4055d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 4056d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glGetActiveUniformBlockiv( 4057d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint)program, 4058d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint)uniformBlockIndex, 4059d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)pname, 4060d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint *)params 4061d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 406284cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy 406384cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guyexit: 4064d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_array) { 406584cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _env->ReleaseIntArrayElements(_array, (jint*)params, _exception ? JNI_ABORT : 0); 406684cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy } 406784cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy if (_exception) { 406884cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy jniThrowException(_env, _exceptionType, _exceptionMessage); 4069d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 4070d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 4071d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 4072d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glGetActiveUniformBlockName ( GLuint program, GLuint uniformBlockIndex, GLsizei bufSize, GLsizei *length, GLchar *uniformBlockName ) */ 4073d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 4074d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glGetActiveUniformBlockName_III_3II_3BI 4075d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv* _env, jobject _this, jint program, jint uniformBlockIndex, int bufSize, jintArray length_ref, jint lengthOffset, jbyteArray name_ref, jint nameOffset) { 4076d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _exception = 0; 4077d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char* _exceptionType; 4078d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char* _exceptionMessage; 4079d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLsizei* _length_base = (GLsizei*)0; 4080d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _lengthRemaining; 4081d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLsizei* _length = (GLsizei*)0; 4082d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLchar* _name_base = (GLchar*)0; 4083d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _nameRemaining; 4084d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLchar* _name = (GLchar*)0; 4085d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 40866aff9068f91fdfef0bc55fda0721c180c0de9284Pablo Ceballos if (length_ref) { 40876aff9068f91fdfef0bc55fda0721c180c0de9284Pablo Ceballos if (lengthOffset < 0) { 40886aff9068f91fdfef0bc55fda0721c180c0de9284Pablo Ceballos _exception = 1; 40896aff9068f91fdfef0bc55fda0721c180c0de9284Pablo Ceballos _exceptionType = "java/lang/IllegalArgumentException"; 40906aff9068f91fdfef0bc55fda0721c180c0de9284Pablo Ceballos _exceptionMessage = "lengthOffset < 0"; 40916aff9068f91fdfef0bc55fda0721c180c0de9284Pablo Ceballos goto exit; 40926aff9068f91fdfef0bc55fda0721c180c0de9284Pablo Ceballos } 40936aff9068f91fdfef0bc55fda0721c180c0de9284Pablo Ceballos _lengthRemaining = _env->GetArrayLength(length_ref) - lengthOffset; 40946aff9068f91fdfef0bc55fda0721c180c0de9284Pablo Ceballos _length_base = (GLsizei*)_env->GetIntArrayElements( 40956aff9068f91fdfef0bc55fda0721c180c0de9284Pablo Ceballos length_ref, (jboolean*)0); 40966aff9068f91fdfef0bc55fda0721c180c0de9284Pablo Ceballos _length = _length_base + lengthOffset; 4097d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 4098d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 4099d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (!name_ref) { 4100d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 4101d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 4102d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "uniformBlockName == null"; 4103d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 4104d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 4105d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (nameOffset < 0) { 4106d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 4107d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 4108d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "uniformBlockNameOffset < 0"; 4109d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 4110d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 4111d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _nameRemaining = _env->GetArrayLength(name_ref) - nameOffset; 41123b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _name_base = (GLchar*)_env->GetByteArrayElements( 4113d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall name_ref, (jboolean*)0); 4114d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _name = _name_base + nameOffset; 4115d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 4116d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glGetActiveUniformBlockName( 4117d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint)program, 4118d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint)uniformBlockIndex, 4119d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)bufSize, 4120d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei*)_length, 4121d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLchar*)_name 4122d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 4123d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 4124d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallexit: 4125d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_name_base) { 41263b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseByteArrayElements(name_ref, (jbyte*)_name_base, 4127d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception ? JNI_ABORT: 0); 4128d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 4129d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_length_base) { 41303b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseIntArrayElements(length_ref, (jint*)_length_base, 4131d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception ? JNI_ABORT: 0); 4132d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 4133d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_exception) { 4134d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jniThrowException(_env, _exceptionType, _exceptionMessage); 4135d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 4136d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 4137d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 4138d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glGetActiveUniformBlockName ( GLuint program, GLuint uniformBlockIndex, GLsizei bufSize, GLsizei *length, GLchar *uniformBlockName ) */ 4139d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 4140d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glGetActiveUniformBlockName_IILjava_nio_Buffer_2Ljava_nio_Buffer_2 4141d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv* _env, jobject _this, jint program, jint uniformBlockIndex, jobject length_buf, jobject uniformBlockName_buf) { 4142d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _exception = 0; 4143d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char* _exceptionType; 4144d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char* _exceptionMessage; 4145d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jarray _lengthArray = (jarray)0; 4146d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _lengthBufferOffset = (jint)0; 4147d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLsizei* _length = (GLsizei*)0; 4148d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _lengthRemaining; 4149d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jarray _nameArray = (jarray)0; 4150d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _nameBufferOffset = (jint)0; 4151d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLchar* _name = (GLchar*)0; 4152d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _nameRemaining; 4153d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 4154d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _length = (GLsizei*)getPointer(_env, length_buf, &_lengthArray, &_lengthRemaining, &_lengthBufferOffset); 4155d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_length == NULL) { 4156d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLsizei* _lengthBase = (GLsizei*)_env->GetPrimitiveArrayCritical(_lengthArray, (jboolean*)0); 4157d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _length = (GLsizei*)(_lengthBase + _lengthBufferOffset); 4158d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 4159d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 4160d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _name = (GLchar*)getPointer(_env, uniformBlockName_buf, &_nameArray, &_nameRemaining, &_nameBufferOffset); 4161d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_name == NULL) { 4162d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLchar* _nameBase = (GLchar*)_env->GetPrimitiveArrayCritical(_nameArray, (jboolean*)0); 4163d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _name = (GLchar*)(_nameBase + _nameBufferOffset); 4164d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 4165d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 4166d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glGetActiveUniformBlockName( 4167d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint)program, 4168d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint)uniformBlockIndex, 4169d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)_nameRemaining, 4170d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _length, _name 4171d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 4172d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_nameArray) { 4173d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall releasePointer(_env, _nameArray, _name, JNI_TRUE); 4174d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 4175d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_lengthArray) { 4176d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall releasePointer(_env, _lengthArray, _length, JNI_TRUE); 4177d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 4178d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 4179d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 4180d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glGetActiveUniformBlockName ( GLuint program, GLuint uniformBlockIndex, GLsizei bufSize, GLsizei *length, GLchar *uniformBlockName ) */ 4181d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic jstring 4182d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glGetActiveUniformBlockName_II 4183d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint program, jint uniformBlockIndex) { 4184d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLint len = 0; 4185d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glGetActiveUniformBlockiv((GLuint)program, (GLuint)uniformBlockIndex, 4186d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GL_UNIFORM_BLOCK_NAME_LENGTH, &len); 4187d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLchar* name = (GLchar*)malloc(len); 4188d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glGetActiveUniformBlockName((GLuint)program, (GLuint)uniformBlockIndex, 4189d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall len, NULL, name); 4190d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jstring result = _env->NewStringUTF(name); 4191d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall free(name); 4192d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall return result; 4193d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 4194d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glUniformBlockBinding ( GLuint program, GLuint uniformBlockIndex, GLuint uniformBlockBinding ) */ 4195d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 4196d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glUniformBlockBinding__III 4197d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint program, jint uniformBlockIndex, jint uniformBlockBinding) { 4198d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glUniformBlockBinding( 4199d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint)program, 4200d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint)uniformBlockIndex, 4201d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint)uniformBlockBinding 4202d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 4203d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 4204d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 4205d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glDrawArraysInstanced ( GLenum mode, GLint first, GLsizei count, GLsizei instanceCount ) */ 4206d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 4207d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glDrawArraysInstanced__IIII 4208d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint mode, jint first, jint count, jint instanceCount) { 4209d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glDrawArraysInstanced( 4210d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)mode, 4211d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint)first, 4212d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)count, 4213d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)instanceCount 4214d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 4215d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 4216d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 4217d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glDrawElementsInstanced ( GLenum mode, GLsizei count, GLenum type, const GLvoid *indices, GLsizei instanceCount ) */ 4218d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 4219d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glDrawElementsInstanced__IIILjava_nio_Buffer_2I 4220d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint mode, jint count, jint type, jobject indices_buf, jint instanceCount) { 4221d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jarray _array = (jarray) 0; 4222d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _bufferOffset = (jint) 0; 4223d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _remaining; 4224d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLvoid *indices = (GLvoid *) 0; 4225d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 4226d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall indices = (GLvoid *)getPointer(_env, indices_buf, &_array, &_remaining, &_bufferOffset); 4227d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (indices == NULL) { 4228d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall char * _indicesBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); 4229d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall indices = (GLvoid *) (_indicesBase + _bufferOffset); 4230d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 4231d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glDrawElementsInstanced( 4232d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)mode, 4233d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)count, 4234d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)type, 4235d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLvoid *)indices, 4236d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)instanceCount 4237d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 4238d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_array) { 4239d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall releasePointer(_env, _array, indices, JNI_FALSE); 4240d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 4241d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 4242d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 4243d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glDrawElementsInstanced ( GLenum mode, GLsizei count, GLenum type, const GLvoid *indices, GLsizei instanceCount ) */ 4244d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 4245d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glDrawElementsInstanced__IIIII 4246d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint mode, jint count, jint type, jint indicesOffset, jint instanceCount) { 4247d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glDrawElementsInstanced( 4248d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)mode, 4249d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)count, 4250d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)type, 425110caf0390d39f0bd46876eee6ab2c9a73d4e1d39Dan Albert (GLvoid *)static_cast<uintptr_t>(indicesOffset), 4252d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)instanceCount 4253d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 4254d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 4255d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* GLsync glFenceSync ( GLenum condition, GLbitfield flags ) */ 4256d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic jlong 4257d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glFenceSync__II 4258d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint condition, jint flags) { 4259d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLsync _returnValue; 4260d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _returnValue = glFenceSync( 4261d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)condition, 4262d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLbitfield)flags 4263d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 4264d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall return (jlong)_returnValue; 4265d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 4266d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 4267d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* GLboolean glIsSync ( GLsync sync ) */ 4268d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic jboolean 4269d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glIsSync__J 4270d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jlong sync) { 4271d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLboolean _returnValue; 4272d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _returnValue = glIsSync( 4273d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsync)sync 4274d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 4275d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall return (jboolean)_returnValue; 4276d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 4277d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 4278d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glDeleteSync ( GLsync sync ) */ 4279d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 4280d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glDeleteSync__J 4281d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jlong sync) { 4282d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glDeleteSync( 4283d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsync)sync 4284d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 4285d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 4286d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 4287d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* GLenum glClientWaitSync ( GLsync sync, GLbitfield flags, GLuint64 timeout ) */ 4288d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic jint 4289d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glClientWaitSync__JIJ 4290d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jlong sync, jint flags, jlong timeout) { 4291d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLenum _returnValue; 4292d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _returnValue = glClientWaitSync( 4293d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsync)sync, 4294d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLbitfield)flags, 4295d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint64)timeout 4296d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 4297d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall return (jint)_returnValue; 4298d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 4299d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 4300d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glWaitSync ( GLsync sync, GLbitfield flags, GLuint64 timeout ) */ 4301d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 4302d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glWaitSync__JIJ 4303d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jlong sync, jint flags, jlong timeout) { 4304d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glWaitSync( 4305d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsync)sync, 4306d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLbitfield)flags, 4307d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint64)timeout 4308d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 4309d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 4310d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 4311d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glGetInteger64v ( GLenum pname, GLint64 *params ) */ 4312d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 4313d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glGetInteger64v__I_3JI 4314d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint pname, jlongArray params_ref, jint offset) { 4315d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _exception = 0; 4316d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char * _exceptionType = NULL; 4317d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char * _exceptionMessage = NULL; 4318d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLint64 *params_base = (GLint64 *) 0; 4319d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _remaining; 4320d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLint64 *params = (GLint64 *) 0; 4321d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 4322d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (!params_ref) { 4323d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 4324d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 4325d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "params == null"; 4326d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 4327d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 4328d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (offset < 0) { 4329d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 4330d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 4331d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "offset < 0"; 4332d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 4333d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 4334d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _remaining = _env->GetArrayLength(params_ref) - offset; 4335d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall params_base = (GLint64 *) 43363b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->GetLongArrayElements(params_ref, (jboolean *)0); 4337d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall params = params_base + offset; 4338d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 4339d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glGetInteger64v( 4340d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)pname, 4341d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint64 *)params 4342d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 4343d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 4344d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallexit: 4345d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (params_base) { 43463b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseLongArrayElements(params_ref, (jlong*)params_base, 4347d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception ? JNI_ABORT: 0); 4348d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 4349d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_exception) { 4350d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jniThrowException(_env, _exceptionType, _exceptionMessage); 4351d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 4352d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 4353d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 4354d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glGetInteger64v ( GLenum pname, GLint64 *params ) */ 4355d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 4356d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glGetInteger64v__ILjava_nio_LongBuffer_2 4357d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint pname, jobject params_buf) { 435884cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy jint _exception = 0; 435984cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy const char * _exceptionType = NULL; 436084cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy const char * _exceptionMessage = NULL; 43613b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi jlongArray _array = (jlongArray) 0; 4362d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _bufferOffset = (jint) 0; 4363d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _remaining; 4364d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLint64 *params = (GLint64 *) 0; 4365d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 436684cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy if (!params_buf) { 436784cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exception = 1; 436884cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exceptionType = "java/lang/IllegalArgumentException"; 436984cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exceptionMessage = "params == null"; 437084cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy goto exit; 437184cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy } 43723b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi params = (GLint64 *)getPointer(_env, params_buf, (jarray*)&_array, &_remaining, &_bufferOffset); 4373d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (params == NULL) { 43743b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi char * _paramsBase = (char *)_env->GetLongArrayElements(_array, (jboolean *) 0); 4375d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall params = (GLint64 *) (_paramsBase + _bufferOffset); 4376d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 4377d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glGetInteger64v( 4378d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)pname, 4379d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint64 *)params 4380d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 438184cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy 438284cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guyexit: 4383d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_array) { 438484cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _env->ReleaseLongArrayElements(_array, (jlong*)params, _exception ? JNI_ABORT : 0); 438584cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy } 438684cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy if (_exception) { 438784cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy jniThrowException(_env, _exceptionType, _exceptionMessage); 4388d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 4389d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 4390d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 4391d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glGetSynciv ( GLsync sync, GLenum pname, GLsizei bufSize, GLsizei *length, GLint *values ) */ 4392d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 4393d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glGetSynciv__JII_3II_3II 4394d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jlong sync, jint pname, jint bufSize, jintArray length_ref, jint lengthOffset, jintArray values_ref, jint valuesOffset) { 4395d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _exception = 0; 4396d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char * _exceptionType = NULL; 4397d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char * _exceptionMessage = NULL; 4398d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLsizei *length_base = (GLsizei *) 0; 4399d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _lengthRemaining; 4400d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLsizei *length = (GLsizei *) 0; 4401d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLint *values_base = (GLint *) 0; 4402d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _valuesRemaining; 4403d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLint *values = (GLint *) 0; 4404d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 44056aff9068f91fdfef0bc55fda0721c180c0de9284Pablo Ceballos if (length_ref) { 44066aff9068f91fdfef0bc55fda0721c180c0de9284Pablo Ceballos if (lengthOffset < 0) { 44076aff9068f91fdfef0bc55fda0721c180c0de9284Pablo Ceballos _exception = 1; 44086aff9068f91fdfef0bc55fda0721c180c0de9284Pablo Ceballos _exceptionType = "java/lang/IllegalArgumentException"; 44096aff9068f91fdfef0bc55fda0721c180c0de9284Pablo Ceballos _exceptionMessage = "lengthOffset < 0"; 44106aff9068f91fdfef0bc55fda0721c180c0de9284Pablo Ceballos goto exit; 44116aff9068f91fdfef0bc55fda0721c180c0de9284Pablo Ceballos } 44126aff9068f91fdfef0bc55fda0721c180c0de9284Pablo Ceballos _lengthRemaining = _env->GetArrayLength(length_ref) - lengthOffset; 44136aff9068f91fdfef0bc55fda0721c180c0de9284Pablo Ceballos length_base = (GLsizei *) 44146aff9068f91fdfef0bc55fda0721c180c0de9284Pablo Ceballos _env->GetIntArrayElements(length_ref, (jboolean *)0); 44156aff9068f91fdfef0bc55fda0721c180c0de9284Pablo Ceballos length = length_base + lengthOffset; 4416d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 4417d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 4418d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (!values_ref) { 4419d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 4420d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 4421d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "values == null"; 4422d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 4423d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 4424d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (valuesOffset < 0) { 4425d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 4426d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 4427d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "valuesOffset < 0"; 4428d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 4429d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 4430d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _valuesRemaining = _env->GetArrayLength(values_ref) - valuesOffset; 4431d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall values_base = (GLint *) 44323b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->GetIntArrayElements(values_ref, (jboolean *)0); 4433d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall values = values_base + valuesOffset; 4434d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 4435d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glGetSynciv( 4436d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsync)sync, 4437d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)pname, 4438d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)bufSize, 4439d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei *)length, 4440d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint *)values 4441d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 4442d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 4443d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallexit: 4444d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (values_base) { 44453b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseIntArrayElements(values_ref, (jint*)values_base, 4446d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception ? JNI_ABORT: 0); 4447d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 4448d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (length_base) { 44493b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseIntArrayElements(length_ref, (jint*)length_base, 4450d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception ? JNI_ABORT: 0); 4451d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 4452d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_exception) { 4453d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jniThrowException(_env, _exceptionType, _exceptionMessage); 4454d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 4455d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 4456d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 4457d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glGetSynciv ( GLsync sync, GLenum pname, GLsizei bufSize, GLsizei *length, GLint *values ) */ 4458d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 4459d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glGetSynciv__JIILjava_nio_IntBuffer_2Ljava_nio_IntBuffer_2 4460d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jlong sync, jint pname, jint bufSize, jobject length_buf, jobject values_buf) { 446184cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy jint _exception = 0; 446284cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy const char * _exceptionType = NULL; 446384cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy const char * _exceptionMessage = NULL; 44643b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi jintArray _lengthArray = (jintArray) 0; 4465d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _lengthBufferOffset = (jint) 0; 44663b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi jintArray _valuesArray = (jintArray) 0; 4467d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _valuesBufferOffset = (jint) 0; 4468d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _lengthRemaining; 4469d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLsizei *length = (GLsizei *) 0; 4470d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _valuesRemaining; 4471d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLint *values = (GLint *) 0; 4472d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 44736aff9068f91fdfef0bc55fda0721c180c0de9284Pablo Ceballos if (length_buf) { 44746aff9068f91fdfef0bc55fda0721c180c0de9284Pablo Ceballos length = (GLsizei *)getPointer(_env, length_buf, (jarray*)&_lengthArray, &_lengthRemaining, &_lengthBufferOffset); 44756aff9068f91fdfef0bc55fda0721c180c0de9284Pablo Ceballos } 447684cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy if (!values_buf) { 447784cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exception = 1; 447884cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exceptionType = "java/lang/IllegalArgumentException"; 447984cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exceptionMessage = "values == null"; 448084cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy goto exit; 448184cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy } 44823b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi values = (GLint *)getPointer(_env, values_buf, (jarray*)&_valuesArray, &_valuesRemaining, &_valuesBufferOffset); 44836aff9068f91fdfef0bc55fda0721c180c0de9284Pablo Ceballos if (length_buf && length == NULL) { 44843b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi char * _lengthBase = (char *)_env->GetIntArrayElements(_lengthArray, (jboolean *) 0); 4485d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall length = (GLsizei *) (_lengthBase + _lengthBufferOffset); 4486d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 4487d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (values == NULL) { 44883b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi char * _valuesBase = (char *)_env->GetIntArrayElements(_valuesArray, (jboolean *) 0); 4489d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall values = (GLint *) (_valuesBase + _valuesBufferOffset); 4490d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 4491d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glGetSynciv( 4492d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsync)sync, 4493d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)pname, 4494d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)bufSize, 4495d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei *)length, 4496d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint *)values 4497d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 449884cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy 449984cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guyexit: 4500d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_valuesArray) { 450184cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _env->ReleaseIntArrayElements(_valuesArray, (jint*)values, _exception ? JNI_ABORT : 0); 4502d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 4503d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_lengthArray) { 450484cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _env->ReleaseIntArrayElements(_lengthArray, (jint*)length, _exception ? JNI_ABORT : 0); 450584cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy } 450684cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy if (_exception) { 450784cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy jniThrowException(_env, _exceptionType, _exceptionMessage); 4508d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 4509d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 4510d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 4511d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glGetInteger64i_v ( GLenum target, GLuint index, GLint64 *data ) */ 4512d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 4513d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glGetInteger64i_v__II_3JI 4514d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint target, jint index, jlongArray data_ref, jint offset) { 4515d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _exception = 0; 4516d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char * _exceptionType = NULL; 4517d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char * _exceptionMessage = NULL; 4518d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLint64 *data_base = (GLint64 *) 0; 4519d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _remaining; 4520d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLint64 *data = (GLint64 *) 0; 4521d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 4522d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (!data_ref) { 4523d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 4524d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 4525d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "data == null"; 4526d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 4527d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 4528d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (offset < 0) { 4529d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 4530d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 4531d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "offset < 0"; 4532d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 4533d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 4534d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _remaining = _env->GetArrayLength(data_ref) - offset; 4535d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall data_base = (GLint64 *) 45363b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->GetLongArrayElements(data_ref, (jboolean *)0); 4537d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall data = data_base + offset; 4538d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 4539d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glGetInteger64i_v( 4540d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)target, 4541d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint)index, 4542d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint64 *)data 4543d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 4544d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 4545d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallexit: 4546d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (data_base) { 45473b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseLongArrayElements(data_ref, (jlong*)data_base, 4548d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception ? JNI_ABORT: 0); 4549d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 4550d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_exception) { 4551d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jniThrowException(_env, _exceptionType, _exceptionMessage); 4552d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 4553d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 4554d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 4555d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glGetInteger64i_v ( GLenum target, GLuint index, GLint64 *data ) */ 4556d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 4557d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glGetInteger64i_v__IILjava_nio_LongBuffer_2 4558d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint target, jint index, jobject data_buf) { 455984cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy jint _exception = 0; 456084cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy const char * _exceptionType = NULL; 456184cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy const char * _exceptionMessage = NULL; 45623b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi jlongArray _array = (jlongArray) 0; 4563d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _bufferOffset = (jint) 0; 4564d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _remaining; 4565d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLint64 *data = (GLint64 *) 0; 4566d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 456784cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy if (!data_buf) { 456884cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exception = 1; 456984cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exceptionType = "java/lang/IllegalArgumentException"; 457084cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exceptionMessage = "data == null"; 457184cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy goto exit; 457284cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy } 45733b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi data = (GLint64 *)getPointer(_env, data_buf, (jarray*)&_array, &_remaining, &_bufferOffset); 4574d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (data == NULL) { 45753b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi char * _dataBase = (char *)_env->GetLongArrayElements(_array, (jboolean *) 0); 4576d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall data = (GLint64 *) (_dataBase + _bufferOffset); 4577d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 4578d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glGetInteger64i_v( 4579d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)target, 4580d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint)index, 4581d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint64 *)data 4582d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 458384cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy 458484cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guyexit: 4585d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_array) { 458684cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _env->ReleaseLongArrayElements(_array, (jlong*)data, _exception ? JNI_ABORT : 0); 458784cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy } 458884cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy if (_exception) { 458984cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy jniThrowException(_env, _exceptionType, _exceptionMessage); 4590d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 4591d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 4592d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 4593d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glGetBufferParameteri64v ( GLenum target, GLenum pname, GLint64 *params ) */ 4594d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 4595d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glGetBufferParameteri64v__II_3JI 4596d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint target, jint pname, jlongArray params_ref, jint offset) { 4597d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _exception = 0; 4598d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char * _exceptionType = NULL; 4599d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char * _exceptionMessage = NULL; 4600d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLint64 *params_base = (GLint64 *) 0; 4601d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _remaining; 4602d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLint64 *params = (GLint64 *) 0; 4603d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 4604d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (!params_ref) { 4605d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 4606d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 4607d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "params == null"; 4608d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 4609d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 4610d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (offset < 0) { 4611d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 4612d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 4613d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "offset < 0"; 4614d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 4615d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 4616d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _remaining = _env->GetArrayLength(params_ref) - offset; 4617d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall params_base = (GLint64 *) 46183b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->GetLongArrayElements(params_ref, (jboolean *)0); 4619d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall params = params_base + offset; 4620d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 4621d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glGetBufferParameteri64v( 4622d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)target, 4623d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)pname, 4624d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint64 *)params 4625d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 4626d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 4627d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallexit: 4628d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (params_base) { 46293b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseLongArrayElements(params_ref, (jlong*)params_base, 4630d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception ? JNI_ABORT: 0); 4631d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 4632d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_exception) { 4633d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jniThrowException(_env, _exceptionType, _exceptionMessage); 4634d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 4635d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 4636d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 4637d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glGetBufferParameteri64v ( GLenum target, GLenum pname, GLint64 *params ) */ 4638d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 4639d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glGetBufferParameteri64v__IILjava_nio_LongBuffer_2 4640d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint target, jint pname, jobject params_buf) { 464184cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy jint _exception = 0; 464284cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy const char * _exceptionType = NULL; 464384cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy const char * _exceptionMessage = NULL; 46443b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi jlongArray _array = (jlongArray) 0; 4645d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _bufferOffset = (jint) 0; 4646d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _remaining; 4647d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLint64 *params = (GLint64 *) 0; 4648d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 464984cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy if (!params_buf) { 465084cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exception = 1; 465184cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exceptionType = "java/lang/IllegalArgumentException"; 465284cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exceptionMessage = "params == null"; 465384cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy goto exit; 465484cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy } 46553b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi params = (GLint64 *)getPointer(_env, params_buf, (jarray*)&_array, &_remaining, &_bufferOffset); 4656d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (params == NULL) { 46573b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi char * _paramsBase = (char *)_env->GetLongArrayElements(_array, (jboolean *) 0); 4658d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall params = (GLint64 *) (_paramsBase + _bufferOffset); 4659d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 4660d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glGetBufferParameteri64v( 4661d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)target, 4662d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)pname, 4663d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint64 *)params 4664d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 466584cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy 466684cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guyexit: 4667d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_array) { 466884cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _env->ReleaseLongArrayElements(_array, (jlong*)params, _exception ? JNI_ABORT : 0); 466984cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy } 467084cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy if (_exception) { 467184cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy jniThrowException(_env, _exceptionType, _exceptionMessage); 4672d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 4673d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 4674d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 4675d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glGenSamplers ( GLsizei count, GLuint *samplers ) */ 4676d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 4677d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glGenSamplers__I_3II 4678d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint count, jintArray samplers_ref, jint offset) { 4679d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _exception = 0; 4680d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char * _exceptionType = NULL; 4681d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char * _exceptionMessage = NULL; 4682d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLuint *samplers_base = (GLuint *) 0; 4683d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _remaining; 4684d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLuint *samplers = (GLuint *) 0; 4685d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 4686d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (!samplers_ref) { 4687d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 4688d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 4689d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "samplers == null"; 4690d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 4691d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 4692d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (offset < 0) { 4693d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 4694d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 4695d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "offset < 0"; 4696d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 4697d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 4698d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _remaining = _env->GetArrayLength(samplers_ref) - offset; 4699d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall samplers_base = (GLuint *) 47003b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->GetIntArrayElements(samplers_ref, (jboolean *)0); 4701d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall samplers = samplers_base + offset; 4702d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 4703d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glGenSamplers( 4704d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)count, 4705d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint *)samplers 4706d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 4707d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 4708d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallexit: 4709d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (samplers_base) { 47103b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseIntArrayElements(samplers_ref, (jint*)samplers_base, 4711d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception ? JNI_ABORT: 0); 4712d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 4713d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_exception) { 4714d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jniThrowException(_env, _exceptionType, _exceptionMessage); 4715d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 4716d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 4717d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 4718d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glGenSamplers ( GLsizei count, GLuint *samplers ) */ 4719d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 4720d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glGenSamplers__ILjava_nio_IntBuffer_2 4721d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint count, jobject samplers_buf) { 472284cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy jint _exception = 0; 472384cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy const char * _exceptionType = NULL; 472484cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy const char * _exceptionMessage = NULL; 47253b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi jintArray _array = (jintArray) 0; 4726d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _bufferOffset = (jint) 0; 4727d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _remaining; 4728d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLuint *samplers = (GLuint *) 0; 4729d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 473084cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy if (!samplers_buf) { 473184cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exception = 1; 473284cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exceptionType = "java/lang/IllegalArgumentException"; 473384cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exceptionMessage = "samplers == null"; 473484cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy goto exit; 473584cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy } 47363b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi samplers = (GLuint *)getPointer(_env, samplers_buf, (jarray*)&_array, &_remaining, &_bufferOffset); 4737d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (samplers == NULL) { 47383b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi char * _samplersBase = (char *)_env->GetIntArrayElements(_array, (jboolean *) 0); 4739d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall samplers = (GLuint *) (_samplersBase + _bufferOffset); 4740d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 4741d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glGenSamplers( 4742d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)count, 4743d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint *)samplers 4744d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 474584cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy 474684cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guyexit: 4747d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_array) { 474884cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _env->ReleaseIntArrayElements(_array, (jint*)samplers, _exception ? JNI_ABORT : 0); 474984cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy } 475084cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy if (_exception) { 475184cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy jniThrowException(_env, _exceptionType, _exceptionMessage); 4752d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 4753d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 4754d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 4755d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glDeleteSamplers ( GLsizei count, const GLuint *samplers ) */ 4756d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 4757d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glDeleteSamplers__I_3II 4758d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint count, jintArray samplers_ref, jint offset) { 4759d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _exception = 0; 4760d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char * _exceptionType = NULL; 4761d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char * _exceptionMessage = NULL; 4762d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLuint *samplers_base = (GLuint *) 0; 4763d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _remaining; 4764d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLuint *samplers = (GLuint *) 0; 4765d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 4766d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (!samplers_ref) { 4767d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 4768d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 4769d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "samplers == null"; 4770d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 4771d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 4772d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (offset < 0) { 4773d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 4774d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 4775d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "offset < 0"; 4776d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 4777d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 4778d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _remaining = _env->GetArrayLength(samplers_ref) - offset; 4779d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall samplers_base = (GLuint *) 47803b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->GetIntArrayElements(samplers_ref, (jboolean *)0); 4781d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall samplers = samplers_base + offset; 4782d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 4783d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glDeleteSamplers( 4784d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)count, 4785d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint *)samplers 4786d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 4787d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 4788d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallexit: 4789d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (samplers_base) { 47903b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseIntArrayElements(samplers_ref, (jint*)samplers_base, 4791d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall JNI_ABORT); 4792d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 4793d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_exception) { 4794d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jniThrowException(_env, _exceptionType, _exceptionMessage); 4795d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 4796d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 4797d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 4798d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glDeleteSamplers ( GLsizei count, const GLuint *samplers ) */ 4799d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 4800d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glDeleteSamplers__ILjava_nio_IntBuffer_2 4801d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint count, jobject samplers_buf) { 480284cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy jint _exception = 0; 480384cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy const char * _exceptionType = NULL; 480484cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy const char * _exceptionMessage = NULL; 48053b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi jintArray _array = (jintArray) 0; 4806d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _bufferOffset = (jint) 0; 4807d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _remaining; 4808d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLuint *samplers = (GLuint *) 0; 4809d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 481084cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy if (!samplers_buf) { 481184cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exception = 1; 481284cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exceptionType = "java/lang/IllegalArgumentException"; 481384cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exceptionMessage = "samplers == null"; 481484cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy goto exit; 481584cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy } 48163b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi samplers = (GLuint *)getPointer(_env, samplers_buf, (jarray*)&_array, &_remaining, &_bufferOffset); 4817d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (samplers == NULL) { 48183b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi char * _samplersBase = (char *)_env->GetIntArrayElements(_array, (jboolean *) 0); 4819d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall samplers = (GLuint *) (_samplersBase + _bufferOffset); 4820d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 4821d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glDeleteSamplers( 4822d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)count, 4823d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint *)samplers 4824d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 482584cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy 482684cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guyexit: 4827d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_array) { 48283b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseIntArrayElements(_array, (jint*)samplers, JNI_ABORT); 4829d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 483084cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy if (_exception) { 483184cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy jniThrowException(_env, _exceptionType, _exceptionMessage); 483284cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy } 4833d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 4834d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 4835d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* GLboolean glIsSampler ( GLuint sampler ) */ 4836d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic jboolean 4837d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glIsSampler__I 4838d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint sampler) { 4839d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLboolean _returnValue; 4840d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _returnValue = glIsSampler( 4841d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint)sampler 4842d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 4843d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall return (jboolean)_returnValue; 4844d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 4845d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 4846d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glBindSampler ( GLuint unit, GLuint sampler ) */ 4847d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 4848d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glBindSampler__II 4849d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint unit, jint sampler) { 4850d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glBindSampler( 4851d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint)unit, 4852d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint)sampler 4853d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 4854d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 4855d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 4856d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glSamplerParameteri ( GLuint sampler, GLenum pname, GLint param ) */ 4857d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 4858d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glSamplerParameteri__III 4859d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint sampler, jint pname, jint param) { 4860d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glSamplerParameteri( 4861d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint)sampler, 4862d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)pname, 4863d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint)param 4864d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 4865d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 4866d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 4867d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glSamplerParameteriv ( GLuint sampler, GLenum pname, const GLint *param ) */ 4868d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 4869d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glSamplerParameteriv__II_3II 4870d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint sampler, jint pname, jintArray param_ref, jint offset) { 4871d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _exception = 0; 4872d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char * _exceptionType = NULL; 4873d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char * _exceptionMessage = NULL; 4874d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLint *param_base = (GLint *) 0; 4875d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _remaining; 4876d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLint *param = (GLint *) 0; 4877d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 4878d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (!param_ref) { 4879d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 4880d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 4881d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "param == null"; 4882d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 4883d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 4884d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (offset < 0) { 4885d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 4886d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 4887d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "offset < 0"; 4888d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 4889d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 4890d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _remaining = _env->GetArrayLength(param_ref) - offset; 4891d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall param_base = (GLint *) 48923b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->GetIntArrayElements(param_ref, (jboolean *)0); 4893d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall param = param_base + offset; 4894d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 4895d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glSamplerParameteriv( 4896d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint)sampler, 4897d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)pname, 4898d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint *)param 4899d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 4900d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 4901d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallexit: 4902d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (param_base) { 49033b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseIntArrayElements(param_ref, (jint*)param_base, 4904d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall JNI_ABORT); 4905d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 4906d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_exception) { 4907d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jniThrowException(_env, _exceptionType, _exceptionMessage); 4908d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 4909d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 4910d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 4911d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glSamplerParameteriv ( GLuint sampler, GLenum pname, const GLint *param ) */ 4912d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 4913d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glSamplerParameteriv__IILjava_nio_IntBuffer_2 4914d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint sampler, jint pname, jobject param_buf) { 491584cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy jint _exception = 0; 491684cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy const char * _exceptionType = NULL; 491784cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy const char * _exceptionMessage = NULL; 49183b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi jintArray _array = (jintArray) 0; 4919d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _bufferOffset = (jint) 0; 4920d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _remaining; 4921d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLint *param = (GLint *) 0; 4922d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 492384cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy if (!param_buf) { 492484cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exception = 1; 492584cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exceptionType = "java/lang/IllegalArgumentException"; 492684cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exceptionMessage = "param == null"; 492784cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy goto exit; 492884cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy } 49293b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi param = (GLint *)getPointer(_env, param_buf, (jarray*)&_array, &_remaining, &_bufferOffset); 4930d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (param == NULL) { 49313b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi char * _paramBase = (char *)_env->GetIntArrayElements(_array, (jboolean *) 0); 4932d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall param = (GLint *) (_paramBase + _bufferOffset); 4933d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 4934d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glSamplerParameteriv( 4935d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint)sampler, 4936d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)pname, 4937d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint *)param 4938d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 493984cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy 494084cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guyexit: 4941d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_array) { 49423b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseIntArrayElements(_array, (jint*)param, JNI_ABORT); 4943d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 494484cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy if (_exception) { 494584cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy jniThrowException(_env, _exceptionType, _exceptionMessage); 494684cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy } 4947d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 4948d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 4949d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glSamplerParameterf ( GLuint sampler, GLenum pname, GLfloat param ) */ 4950d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 4951d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glSamplerParameterf__IIF 4952d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint sampler, jint pname, jfloat param) { 4953d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glSamplerParameterf( 4954d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint)sampler, 4955d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)pname, 4956d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLfloat)param 4957d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 4958d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 4959d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 4960d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glSamplerParameterfv ( GLuint sampler, GLenum pname, const GLfloat *param ) */ 4961d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 4962d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glSamplerParameterfv__II_3FI 4963d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint sampler, jint pname, jfloatArray param_ref, jint offset) { 4964d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _exception = 0; 4965d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char * _exceptionType = NULL; 4966d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char * _exceptionMessage = NULL; 4967d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLfloat *param_base = (GLfloat *) 0; 4968d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _remaining; 4969d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLfloat *param = (GLfloat *) 0; 4970d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 4971d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (!param_ref) { 4972d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 4973d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 4974d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "param == null"; 4975d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 4976d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 4977d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (offset < 0) { 4978d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 4979d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 4980d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "offset < 0"; 4981d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 4982d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 4983d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _remaining = _env->GetArrayLength(param_ref) - offset; 4984d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall param_base = (GLfloat *) 49853b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->GetFloatArrayElements(param_ref, (jboolean *)0); 4986d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall param = param_base + offset; 4987d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 4988d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glSamplerParameterfv( 4989d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint)sampler, 4990d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)pname, 4991d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLfloat *)param 4992d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 4993d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 4994d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallexit: 4995d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (param_base) { 49963b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseFloatArrayElements(param_ref, (jfloat*)param_base, 4997d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall JNI_ABORT); 4998d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 4999d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_exception) { 5000d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jniThrowException(_env, _exceptionType, _exceptionMessage); 5001d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 5002d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 5003d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 5004d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glSamplerParameterfv ( GLuint sampler, GLenum pname, const GLfloat *param ) */ 5005d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 5006d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glSamplerParameterfv__IILjava_nio_FloatBuffer_2 5007d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint sampler, jint pname, jobject param_buf) { 500884cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy jint _exception = 0; 500984cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy const char * _exceptionType = NULL; 501084cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy const char * _exceptionMessage = NULL; 50113b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi jfloatArray _array = (jfloatArray) 0; 5012d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _bufferOffset = (jint) 0; 5013d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _remaining; 5014d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLfloat *param = (GLfloat *) 0; 5015d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 501684cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy if (!param_buf) { 501784cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exception = 1; 501884cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exceptionType = "java/lang/IllegalArgumentException"; 501984cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exceptionMessage = "param == null"; 502084cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy goto exit; 502184cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy } 50223b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi param = (GLfloat *)getPointer(_env, param_buf, (jarray*)&_array, &_remaining, &_bufferOffset); 5023d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (param == NULL) { 50243b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi char * _paramBase = (char *)_env->GetFloatArrayElements(_array, (jboolean *) 0); 5025d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall param = (GLfloat *) (_paramBase + _bufferOffset); 5026d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 5027d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glSamplerParameterfv( 5028d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint)sampler, 5029d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)pname, 5030d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLfloat *)param 5031d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 503284cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy 503384cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guyexit: 5034d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_array) { 50353b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseFloatArrayElements(_array, (jfloat*)param, JNI_ABORT); 5036d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 503784cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy if (_exception) { 503884cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy jniThrowException(_env, _exceptionType, _exceptionMessage); 503984cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy } 5040d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 5041d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 5042d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glGetSamplerParameteriv ( GLuint sampler, GLenum pname, GLint *params ) */ 5043d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 5044d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glGetSamplerParameteriv__II_3II 5045d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint sampler, jint pname, jintArray params_ref, jint offset) { 5046d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _exception = 0; 5047d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char * _exceptionType = NULL; 5048d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char * _exceptionMessage = NULL; 5049d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLint *params_base = (GLint *) 0; 5050d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _remaining; 5051d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLint *params = (GLint *) 0; 5052d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 5053d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (!params_ref) { 5054d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 5055d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 5056d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "params == null"; 5057d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 5058d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 5059d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (offset < 0) { 5060d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 5061d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 5062d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "offset < 0"; 5063d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 5064d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 5065d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _remaining = _env->GetArrayLength(params_ref) - offset; 5066d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall params_base = (GLint *) 50673b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->GetIntArrayElements(params_ref, (jboolean *)0); 5068d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall params = params_base + offset; 5069d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 5070d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glGetSamplerParameteriv( 5071d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint)sampler, 5072d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)pname, 5073d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint *)params 5074d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 5075d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 5076d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallexit: 5077d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (params_base) { 50783b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseIntArrayElements(params_ref, (jint*)params_base, 5079d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception ? JNI_ABORT: 0); 5080d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 5081d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_exception) { 5082d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jniThrowException(_env, _exceptionType, _exceptionMessage); 5083d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 5084d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 5085d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 5086d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glGetSamplerParameteriv ( GLuint sampler, GLenum pname, GLint *params ) */ 5087d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 5088d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glGetSamplerParameteriv__IILjava_nio_IntBuffer_2 5089d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint sampler, jint pname, jobject params_buf) { 509084cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy jint _exception = 0; 509184cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy const char * _exceptionType = NULL; 509284cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy const char * _exceptionMessage = NULL; 50933b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi jintArray _array = (jintArray) 0; 5094d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _bufferOffset = (jint) 0; 5095d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _remaining; 5096d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLint *params = (GLint *) 0; 5097d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 509884cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy if (!params_buf) { 509984cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exception = 1; 510084cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exceptionType = "java/lang/IllegalArgumentException"; 510184cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exceptionMessage = "params == null"; 510284cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy goto exit; 510384cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy } 51043b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi params = (GLint *)getPointer(_env, params_buf, (jarray*)&_array, &_remaining, &_bufferOffset); 5105d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (params == NULL) { 51063b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi char * _paramsBase = (char *)_env->GetIntArrayElements(_array, (jboolean *) 0); 5107d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall params = (GLint *) (_paramsBase + _bufferOffset); 5108d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 5109d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glGetSamplerParameteriv( 5110d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint)sampler, 5111d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)pname, 5112d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint *)params 5113d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 511484cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy 511584cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guyexit: 5116d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_array) { 511784cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _env->ReleaseIntArrayElements(_array, (jint*)params, _exception ? JNI_ABORT : 0); 511884cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy } 511984cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy if (_exception) { 512084cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy jniThrowException(_env, _exceptionType, _exceptionMessage); 5121d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 5122d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 5123d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 5124d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glGetSamplerParameterfv ( GLuint sampler, GLenum pname, GLfloat *params ) */ 5125d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 5126d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glGetSamplerParameterfv__II_3FI 5127d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint sampler, jint pname, jfloatArray params_ref, jint offset) { 5128d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _exception = 0; 5129d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char * _exceptionType = NULL; 5130d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char * _exceptionMessage = NULL; 5131d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLfloat *params_base = (GLfloat *) 0; 5132d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _remaining; 5133d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLfloat *params = (GLfloat *) 0; 5134d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 5135d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (!params_ref) { 5136d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 5137d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 5138d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "params == null"; 5139d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 5140d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 5141d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (offset < 0) { 5142d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 5143d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 5144d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "offset < 0"; 5145d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 5146d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 5147d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _remaining = _env->GetArrayLength(params_ref) - offset; 5148d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall params_base = (GLfloat *) 51493b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->GetFloatArrayElements(params_ref, (jboolean *)0); 5150d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall params = params_base + offset; 5151d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 5152d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glGetSamplerParameterfv( 5153d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint)sampler, 5154d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)pname, 5155d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLfloat *)params 5156d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 5157d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 5158d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallexit: 5159d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (params_base) { 51603b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseFloatArrayElements(params_ref, (jfloat*)params_base, 5161d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception ? JNI_ABORT: 0); 5162d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 5163d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_exception) { 5164d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jniThrowException(_env, _exceptionType, _exceptionMessage); 5165d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 5166d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 5167d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 5168d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glGetSamplerParameterfv ( GLuint sampler, GLenum pname, GLfloat *params ) */ 5169d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 5170d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glGetSamplerParameterfv__IILjava_nio_FloatBuffer_2 5171d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint sampler, jint pname, jobject params_buf) { 517284cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy jint _exception = 0; 517384cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy const char * _exceptionType = NULL; 517484cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy const char * _exceptionMessage = NULL; 51753b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi jfloatArray _array = (jfloatArray) 0; 5176d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _bufferOffset = (jint) 0; 5177d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _remaining; 5178d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLfloat *params = (GLfloat *) 0; 5179d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 518084cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy if (!params_buf) { 518184cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exception = 1; 518284cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exceptionType = "java/lang/IllegalArgumentException"; 518384cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exceptionMessage = "params == null"; 518484cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy goto exit; 518584cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy } 51863b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi params = (GLfloat *)getPointer(_env, params_buf, (jarray*)&_array, &_remaining, &_bufferOffset); 5187d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (params == NULL) { 51883b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi char * _paramsBase = (char *)_env->GetFloatArrayElements(_array, (jboolean *) 0); 5189d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall params = (GLfloat *) (_paramsBase + _bufferOffset); 5190d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 5191d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glGetSamplerParameterfv( 5192d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint)sampler, 5193d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)pname, 5194d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLfloat *)params 5195d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 519684cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy 519784cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guyexit: 5198d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_array) { 519984cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _env->ReleaseFloatArrayElements(_array, (jfloat*)params, _exception ? JNI_ABORT : 0); 520084cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy } 520184cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy if (_exception) { 520284cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy jniThrowException(_env, _exceptionType, _exceptionMessage); 5203d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 5204d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 5205d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 5206d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glVertexAttribDivisor ( GLuint index, GLuint divisor ) */ 5207d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 5208d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glVertexAttribDivisor__II 5209d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint index, jint divisor) { 5210d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glVertexAttribDivisor( 5211d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint)index, 5212d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint)divisor 5213d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 5214d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 5215d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 5216d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glBindTransformFeedback ( GLenum target, GLuint id ) */ 5217d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 5218d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glBindTransformFeedback__II 5219d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint target, jint id) { 5220d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glBindTransformFeedback( 5221d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)target, 5222d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint)id 5223d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 5224d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 5225d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 5226d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glDeleteTransformFeedbacks ( GLsizei n, const GLuint *ids ) */ 5227d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 5228d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glDeleteTransformFeedbacks__I_3II 5229d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint n, jintArray ids_ref, jint offset) { 5230d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _exception = 0; 5231d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char * _exceptionType = NULL; 5232d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char * _exceptionMessage = NULL; 5233d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLuint *ids_base = (GLuint *) 0; 5234d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _remaining; 5235d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLuint *ids = (GLuint *) 0; 5236d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 5237d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (!ids_ref) { 5238d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 5239d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 5240d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "ids == null"; 5241d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 5242d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 5243d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (offset < 0) { 5244d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 5245d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 5246d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "offset < 0"; 5247d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 5248d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 5249d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _remaining = _env->GetArrayLength(ids_ref) - offset; 5250d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ids_base = (GLuint *) 52513b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->GetIntArrayElements(ids_ref, (jboolean *)0); 5252d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ids = ids_base + offset; 5253d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 5254d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glDeleteTransformFeedbacks( 5255d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)n, 5256d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint *)ids 5257d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 5258d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 5259d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallexit: 5260d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (ids_base) { 52613b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseIntArrayElements(ids_ref, (jint*)ids_base, 5262d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall JNI_ABORT); 5263d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 5264d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_exception) { 5265d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jniThrowException(_env, _exceptionType, _exceptionMessage); 5266d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 5267d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 5268d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 5269d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glDeleteTransformFeedbacks ( GLsizei n, const GLuint *ids ) */ 5270d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 5271d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glDeleteTransformFeedbacks__ILjava_nio_IntBuffer_2 5272d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint n, jobject ids_buf) { 527384cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy jint _exception = 0; 527484cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy const char * _exceptionType = NULL; 527584cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy const char * _exceptionMessage = NULL; 52763b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi jintArray _array = (jintArray) 0; 5277d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _bufferOffset = (jint) 0; 5278d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _remaining; 5279d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLuint *ids = (GLuint *) 0; 5280d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 528184cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy if (!ids_buf) { 528284cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exception = 1; 528384cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exceptionType = "java/lang/IllegalArgumentException"; 528484cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exceptionMessage = "ids == null"; 528584cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy goto exit; 528684cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy } 52873b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi ids = (GLuint *)getPointer(_env, ids_buf, (jarray*)&_array, &_remaining, &_bufferOffset); 5288d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (ids == NULL) { 52893b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi char * _idsBase = (char *)_env->GetIntArrayElements(_array, (jboolean *) 0); 5290d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ids = (GLuint *) (_idsBase + _bufferOffset); 5291d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 5292d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glDeleteTransformFeedbacks( 5293d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)n, 5294d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint *)ids 5295d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 529684cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy 529784cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guyexit: 5298d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_array) { 52993b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseIntArrayElements(_array, (jint*)ids, JNI_ABORT); 5300d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 530184cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy if (_exception) { 530284cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy jniThrowException(_env, _exceptionType, _exceptionMessage); 530384cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy } 5304d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 5305d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 5306d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glGenTransformFeedbacks ( GLsizei n, GLuint *ids ) */ 5307d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 5308d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glGenTransformFeedbacks__I_3II 5309d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint n, jintArray ids_ref, jint offset) { 5310d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _exception = 0; 5311d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char * _exceptionType = NULL; 5312d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char * _exceptionMessage = NULL; 5313d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLuint *ids_base = (GLuint *) 0; 5314d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _remaining; 5315d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLuint *ids = (GLuint *) 0; 5316d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 5317d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (!ids_ref) { 5318d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 5319d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 5320d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "ids == null"; 5321d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 5322d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 5323d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (offset < 0) { 5324d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 5325d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 5326d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "offset < 0"; 5327d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 5328d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 5329d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _remaining = _env->GetArrayLength(ids_ref) - offset; 5330d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ids_base = (GLuint *) 53313b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->GetIntArrayElements(ids_ref, (jboolean *)0); 5332d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ids = ids_base + offset; 5333d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 5334d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glGenTransformFeedbacks( 5335d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)n, 5336d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint *)ids 5337d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 5338d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 5339d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallexit: 5340d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (ids_base) { 53413b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseIntArrayElements(ids_ref, (jint*)ids_base, 5342d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception ? JNI_ABORT: 0); 5343d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 5344d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_exception) { 5345d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jniThrowException(_env, _exceptionType, _exceptionMessage); 5346d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 5347d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 5348d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 5349d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glGenTransformFeedbacks ( GLsizei n, GLuint *ids ) */ 5350d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 5351d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glGenTransformFeedbacks__ILjava_nio_IntBuffer_2 5352d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint n, jobject ids_buf) { 535384cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy jint _exception = 0; 535484cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy const char * _exceptionType = NULL; 535584cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy const char * _exceptionMessage = NULL; 53563b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi jintArray _array = (jintArray) 0; 5357d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _bufferOffset = (jint) 0; 5358d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _remaining; 5359d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLuint *ids = (GLuint *) 0; 5360d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 536184cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy if (!ids_buf) { 536284cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exception = 1; 536384cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exceptionType = "java/lang/IllegalArgumentException"; 536484cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exceptionMessage = "ids == null"; 536584cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy goto exit; 536684cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy } 53673b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi ids = (GLuint *)getPointer(_env, ids_buf, (jarray*)&_array, &_remaining, &_bufferOffset); 5368d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (ids == NULL) { 53693b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi char * _idsBase = (char *)_env->GetIntArrayElements(_array, (jboolean *) 0); 5370d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ids = (GLuint *) (_idsBase + _bufferOffset); 5371d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 5372d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glGenTransformFeedbacks( 5373d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)n, 5374d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint *)ids 5375d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 537684cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy 537784cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guyexit: 5378d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_array) { 537984cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _env->ReleaseIntArrayElements(_array, (jint*)ids, _exception ? JNI_ABORT : 0); 538084cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy } 538184cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy if (_exception) { 538284cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy jniThrowException(_env, _exceptionType, _exceptionMessage); 5383d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 5384d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 5385d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 5386d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* GLboolean glIsTransformFeedback ( GLuint id ) */ 5387d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic jboolean 5388d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glIsTransformFeedback__I 5389d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint id) { 5390d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLboolean _returnValue; 5391d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _returnValue = glIsTransformFeedback( 5392d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint)id 5393d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 5394d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall return (jboolean)_returnValue; 5395d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 5396d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 5397d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glPauseTransformFeedback ( void ) */ 5398d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 5399d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glPauseTransformFeedback__ 5400d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this) { 5401d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glPauseTransformFeedback(); 5402d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 5403d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 5404d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glResumeTransformFeedback ( void ) */ 5405d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 5406d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glResumeTransformFeedback__ 5407d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this) { 5408d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glResumeTransformFeedback(); 5409d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 5410d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 5411d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glGetProgramBinary ( GLuint program, GLsizei bufSize, GLsizei *length, GLenum *binaryFormat, GLvoid *binary ) */ 5412d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 5413d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glGetProgramBinary__II_3II_3IILjava_nio_Buffer_2 5414d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint program, jint bufSize, jintArray length_ref, jint lengthOffset, jintArray binaryFormat_ref, jint binaryFormatOffset, jobject binary_buf) { 5415d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _exception = 0; 5416d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char * _exceptionType = NULL; 5417d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char * _exceptionMessage = NULL; 5418d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jarray _array = (jarray) 0; 5419d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _bufferOffset = (jint) 0; 5420d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLsizei *length_base = (GLsizei *) 0; 5421d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _lengthRemaining; 5422d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLsizei *length = (GLsizei *) 0; 5423d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLenum *binaryFormat_base = (GLenum *) 0; 5424d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _binaryFormatRemaining; 5425d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLenum *binaryFormat = (GLenum *) 0; 5426d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _binaryRemaining; 5427d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLvoid *binary = (GLvoid *) 0; 5428d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 54296aff9068f91fdfef0bc55fda0721c180c0de9284Pablo Ceballos if (length_ref) { 54306aff9068f91fdfef0bc55fda0721c180c0de9284Pablo Ceballos if (lengthOffset < 0) { 54316aff9068f91fdfef0bc55fda0721c180c0de9284Pablo Ceballos _exception = 1; 54326aff9068f91fdfef0bc55fda0721c180c0de9284Pablo Ceballos _exceptionType = "java/lang/IllegalArgumentException"; 54336aff9068f91fdfef0bc55fda0721c180c0de9284Pablo Ceballos _exceptionMessage = "lengthOffset < 0"; 54346aff9068f91fdfef0bc55fda0721c180c0de9284Pablo Ceballos goto exit; 54356aff9068f91fdfef0bc55fda0721c180c0de9284Pablo Ceballos } 54366aff9068f91fdfef0bc55fda0721c180c0de9284Pablo Ceballos _lengthRemaining = _env->GetArrayLength(length_ref) - lengthOffset; 54376aff9068f91fdfef0bc55fda0721c180c0de9284Pablo Ceballos length_base = (GLsizei *) 54386aff9068f91fdfef0bc55fda0721c180c0de9284Pablo Ceballos _env->GetIntArrayElements(length_ref, (jboolean *)0); 54396aff9068f91fdfef0bc55fda0721c180c0de9284Pablo Ceballos length = length_base + lengthOffset; 5440d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 5441d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 5442d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (!binaryFormat_ref) { 5443d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 5444d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 5445d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "binaryFormat == null"; 5446d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 5447d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 5448d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (binaryFormatOffset < 0) { 5449d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 5450d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 5451d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "binaryFormatOffset < 0"; 5452d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 5453d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 5454d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _binaryFormatRemaining = _env->GetArrayLength(binaryFormat_ref) - binaryFormatOffset; 5455d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall binaryFormat_base = (GLenum *) 54563b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->GetIntArrayElements(binaryFormat_ref, (jboolean *)0); 5457d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall binaryFormat = binaryFormat_base + binaryFormatOffset; 5458d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 545984cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy if (!binary_buf) { 546084cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exception = 1; 546184cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exceptionType = "java/lang/IllegalArgumentException"; 546284cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exceptionMessage = "binary == null"; 546384cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy goto exit; 546484cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy } 54653b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi binary = (GLvoid *)getPointer(_env, binary_buf, (jarray*)&_array, &_binaryRemaining, &_bufferOffset); 5466d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (binary == NULL) { 5467d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall char * _binaryBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); 5468d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall binary = (GLvoid *) (_binaryBase + _bufferOffset); 5469d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 5470d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glGetProgramBinary( 5471d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint)program, 5472d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)bufSize, 5473d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei *)length, 5474d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum *)binaryFormat, 5475d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLvoid *)binary 5476d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 5477d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 5478d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallexit: 5479d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_array) { 5480d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall releasePointer(_env, _array, binary, _exception ? JNI_FALSE : JNI_TRUE); 5481d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 5482d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (binaryFormat_base) { 54833b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseIntArrayElements(binaryFormat_ref, (jint*)binaryFormat_base, 5484d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception ? JNI_ABORT: 0); 5485d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 5486d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (length_base) { 54873b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseIntArrayElements(length_ref, (jint*)length_base, 5488d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception ? JNI_ABORT: 0); 5489d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 5490d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_exception) { 5491d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jniThrowException(_env, _exceptionType, _exceptionMessage); 5492d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 5493d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 5494d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 5495d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glGetProgramBinary ( GLuint program, GLsizei bufSize, GLsizei *length, GLenum *binaryFormat, GLvoid *binary ) */ 5496d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 5497d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glGetProgramBinary__IILjava_nio_IntBuffer_2Ljava_nio_IntBuffer_2Ljava_nio_Buffer_2 5498d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint program, jint bufSize, jobject length_buf, jobject binaryFormat_buf, jobject binary_buf) { 549984cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy jint _exception = 0; 550084cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy const char * _exceptionType = NULL; 550184cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy const char * _exceptionMessage = NULL; 55023b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi jintArray _lengthArray = (jintArray) 0; 5503d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _lengthBufferOffset = (jint) 0; 55043b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi jintArray _binaryFormatArray = (jintArray) 0; 5505d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _binaryFormatBufferOffset = (jint) 0; 55063b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi jintArray _binaryArray = (jintArray) 0; 5507d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _binaryBufferOffset = (jint) 0; 5508d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _lengthRemaining; 5509d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLsizei *length = (GLsizei *) 0; 5510d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _binaryFormatRemaining; 5511d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLenum *binaryFormat = (GLenum *) 0; 5512d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _binaryRemaining; 5513d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLvoid *binary = (GLvoid *) 0; 5514d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 55156aff9068f91fdfef0bc55fda0721c180c0de9284Pablo Ceballos if (length_buf) { 55166aff9068f91fdfef0bc55fda0721c180c0de9284Pablo Ceballos length = (GLsizei *)getPointer(_env, length_buf, (jarray*)&_lengthArray, &_lengthRemaining, &_lengthBufferOffset); 55176aff9068f91fdfef0bc55fda0721c180c0de9284Pablo Ceballos } 551884cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy if (!binaryFormat_buf) { 551984cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exception = 1; 552084cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exceptionType = "java/lang/IllegalArgumentException"; 552184cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exceptionMessage = "binaryFormat == null"; 552284cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy goto exit; 552384cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy } 55243b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi binaryFormat = (GLenum *)getPointer(_env, binaryFormat_buf, (jarray*)&_binaryFormatArray, &_binaryFormatRemaining, &_binaryFormatBufferOffset); 552584cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy if (!binary_buf) { 552684cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exception = 1; 552784cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exceptionType = "java/lang/IllegalArgumentException"; 552884cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exceptionMessage = "binary == null"; 552984cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy goto exit; 553084cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy } 55313b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi binary = (GLvoid *)getPointer(_env, binary_buf, (jarray*)&_binaryArray, &_binaryRemaining, &_binaryBufferOffset); 55326aff9068f91fdfef0bc55fda0721c180c0de9284Pablo Ceballos if (length_buf && length == NULL) { 55333b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi char * _lengthBase = (char *)_env->GetIntArrayElements(_lengthArray, (jboolean *) 0); 5534d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall length = (GLsizei *) (_lengthBase + _lengthBufferOffset); 5535d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 5536d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (binaryFormat == NULL) { 55373b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi char * _binaryFormatBase = (char *)_env->GetIntArrayElements(_binaryFormatArray, (jboolean *) 0); 5538d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall binaryFormat = (GLenum *) (_binaryFormatBase + _binaryFormatBufferOffset); 5539d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 5540d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (binary == NULL) { 5541d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall char * _binaryBase = (char *)_env->GetPrimitiveArrayCritical(_binaryArray, (jboolean *) 0); 5542d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall binary = (GLvoid *) (_binaryBase + _binaryBufferOffset); 5543d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 5544d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glGetProgramBinary( 5545d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint)program, 5546d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)bufSize, 5547d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei *)length, 5548d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum *)binaryFormat, 5549d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLvoid *)binary 5550d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 555184cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy 555284cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guyexit: 5553d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_binaryArray) { 555484cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy releasePointer(_env, _binaryArray, binary, _exception ? JNI_FALSE : JNI_TRUE); 5555d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 5556d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_binaryFormatArray) { 555784cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _env->ReleaseIntArrayElements(_binaryFormatArray, (jint*)binaryFormat, _exception ? JNI_ABORT : 0); 5558d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 5559d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_lengthArray) { 556084cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _env->ReleaseIntArrayElements(_lengthArray, (jint*)length, _exception ? JNI_ABORT : 0); 556184cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy } 556284cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy if (_exception) { 556384cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy jniThrowException(_env, _exceptionType, _exceptionMessage); 5564d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 5565d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 5566d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 5567d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glProgramBinary ( GLuint program, GLenum binaryFormat, const GLvoid *binary, GLsizei length ) */ 5568d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 5569d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glProgramBinary__IILjava_nio_Buffer_2I 5570d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint program, jint binaryFormat, jobject binary_buf, jint length) { 557184cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy jint _exception = 0; 557284cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy const char * _exceptionType = NULL; 557384cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy const char * _exceptionMessage = NULL; 5574d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jarray _array = (jarray) 0; 5575d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _bufferOffset = (jint) 0; 5576d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _remaining; 5577d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLvoid *binary = (GLvoid *) 0; 5578d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 557984cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy if (!binary_buf) { 558084cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exception = 1; 558184cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exceptionType = "java/lang/IllegalArgumentException"; 558284cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exceptionMessage = "binary == null"; 558384cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy goto exit; 558484cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy } 55853b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi binary = (GLvoid *)getPointer(_env, binary_buf, (jarray*)&_array, &_remaining, &_bufferOffset); 5586d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (binary == NULL) { 5587d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall char * _binaryBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); 5588d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall binary = (GLvoid *) (_binaryBase + _bufferOffset); 5589d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 5590d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glProgramBinary( 5591d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint)program, 5592d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)binaryFormat, 5593d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLvoid *)binary, 5594d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)length 5595d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 559684cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy 559784cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guyexit: 5598d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_array) { 5599d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall releasePointer(_env, _array, binary, JNI_FALSE); 5600d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 560184cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy if (_exception) { 560284cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy jniThrowException(_env, _exceptionType, _exceptionMessage); 560384cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy } 5604d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 5605d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 5606d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glProgramParameteri ( GLuint program, GLenum pname, GLint value ) */ 5607d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 5608d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glProgramParameteri__III 5609d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint program, jint pname, jint value) { 5610d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glProgramParameteri( 5611d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint)program, 5612d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)pname, 5613d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint)value 5614d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 5615d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 5616d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 5617d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glInvalidateFramebuffer ( GLenum target, GLsizei numAttachments, const GLenum *attachments ) */ 5618d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 5619d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glInvalidateFramebuffer__II_3II 5620d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint target, jint numAttachments, jintArray attachments_ref, jint offset) { 5621d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _exception = 0; 5622d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char * _exceptionType = NULL; 5623d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char * _exceptionMessage = NULL; 5624d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLenum *attachments_base = (GLenum *) 0; 5625d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _remaining; 5626d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLenum *attachments = (GLenum *) 0; 5627d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 5628d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (!attachments_ref) { 5629d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 5630d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 5631d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "attachments == null"; 5632d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 5633d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 5634d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (offset < 0) { 5635d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 5636d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 5637d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "offset < 0"; 5638d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 5639d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 5640d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _remaining = _env->GetArrayLength(attachments_ref) - offset; 5641d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall attachments_base = (GLenum *) 56423b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->GetIntArrayElements(attachments_ref, (jboolean *)0); 5643d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall attachments = attachments_base + offset; 5644d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 5645d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glInvalidateFramebuffer( 5646d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)target, 5647d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)numAttachments, 5648d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum *)attachments 5649d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 5650d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 5651d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallexit: 5652d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (attachments_base) { 56533b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseIntArrayElements(attachments_ref, (jint*)attachments_base, 5654d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall JNI_ABORT); 5655d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 5656d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_exception) { 5657d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jniThrowException(_env, _exceptionType, _exceptionMessage); 5658d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 5659d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 5660d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 5661d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glInvalidateFramebuffer ( GLenum target, GLsizei numAttachments, const GLenum *attachments ) */ 5662d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 5663d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glInvalidateFramebuffer__IILjava_nio_IntBuffer_2 5664d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint target, jint numAttachments, jobject attachments_buf) { 566584cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy jint _exception = 0; 566684cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy const char * _exceptionType = NULL; 566784cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy const char * _exceptionMessage = NULL; 56683b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi jintArray _array = (jintArray) 0; 5669d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _bufferOffset = (jint) 0; 5670d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _remaining; 5671d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLenum *attachments = (GLenum *) 0; 5672d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 567384cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy if (!attachments_buf) { 567484cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exception = 1; 567584cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exceptionType = "java/lang/IllegalArgumentException"; 567684cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exceptionMessage = "attachments == null"; 567784cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy goto exit; 567884cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy } 56793b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi attachments = (GLenum *)getPointer(_env, attachments_buf, (jarray*)&_array, &_remaining, &_bufferOffset); 5680d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (attachments == NULL) { 56813b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi char * _attachmentsBase = (char *)_env->GetIntArrayElements(_array, (jboolean *) 0); 5682d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall attachments = (GLenum *) (_attachmentsBase + _bufferOffset); 5683d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 5684d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glInvalidateFramebuffer( 5685d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)target, 5686d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)numAttachments, 5687d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum *)attachments 5688d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 568984cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy 569084cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guyexit: 5691d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_array) { 56923b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseIntArrayElements(_array, (jint*)attachments, JNI_ABORT); 5693d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 569484cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy if (_exception) { 569584cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy jniThrowException(_env, _exceptionType, _exceptionMessage); 569684cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy } 5697d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 5698d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 5699d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glInvalidateSubFramebuffer ( GLenum target, GLsizei numAttachments, const GLenum *attachments, GLint x, GLint y, GLsizei width, GLsizei height ) */ 5700d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 5701d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glInvalidateSubFramebuffer__II_3IIIIII 5702d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint target, jint numAttachments, jintArray attachments_ref, jint offset, jint x, jint y, jint width, jint height) { 5703d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _exception = 0; 5704d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char * _exceptionType = NULL; 5705d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char * _exceptionMessage = NULL; 5706d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLenum *attachments_base = (GLenum *) 0; 5707d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _remaining; 5708d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLenum *attachments = (GLenum *) 0; 5709d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 5710d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (!attachments_ref) { 5711d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 5712d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 5713d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "attachments == null"; 5714d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 5715d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 5716d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (offset < 0) { 5717d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 5718d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 5719d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "offset < 0"; 5720d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 5721d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 5722d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _remaining = _env->GetArrayLength(attachments_ref) - offset; 5723d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall attachments_base = (GLenum *) 57243b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->GetIntArrayElements(attachments_ref, (jboolean *)0); 5725d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall attachments = attachments_base + offset; 5726d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 5727d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glInvalidateSubFramebuffer( 5728d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)target, 5729d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)numAttachments, 5730d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum *)attachments, 5731d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint)x, 5732d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint)y, 5733d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)width, 5734d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)height 5735d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 5736d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 5737d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallexit: 5738d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (attachments_base) { 57393b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseIntArrayElements(attachments_ref, (jint*)attachments_base, 5740d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall JNI_ABORT); 5741d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 5742d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_exception) { 5743d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jniThrowException(_env, _exceptionType, _exceptionMessage); 5744d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 5745d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 5746d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 5747d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glInvalidateSubFramebuffer ( GLenum target, GLsizei numAttachments, const GLenum *attachments, GLint x, GLint y, GLsizei width, GLsizei height ) */ 5748d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 5749d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glInvalidateSubFramebuffer__IILjava_nio_IntBuffer_2IIII 5750d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint target, jint numAttachments, jobject attachments_buf, jint x, jint y, jint width, jint height) { 575184cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy jint _exception = 0; 575284cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy const char * _exceptionType = NULL; 575384cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy const char * _exceptionMessage = NULL; 57543b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi jintArray _array = (jintArray) 0; 5755d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _bufferOffset = (jint) 0; 5756d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _remaining; 5757d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLenum *attachments = (GLenum *) 0; 5758d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 575984cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy if (!attachments_buf) { 576084cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exception = 1; 576184cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exceptionType = "java/lang/IllegalArgumentException"; 576284cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exceptionMessage = "attachments == null"; 576384cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy goto exit; 576484cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy } 57653b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi attachments = (GLenum *)getPointer(_env, attachments_buf, (jarray*)&_array, &_remaining, &_bufferOffset); 5766d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (attachments == NULL) { 57673b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi char * _attachmentsBase = (char *)_env->GetIntArrayElements(_array, (jboolean *) 0); 5768d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall attachments = (GLenum *) (_attachmentsBase + _bufferOffset); 5769d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 5770d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glInvalidateSubFramebuffer( 5771d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)target, 5772d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)numAttachments, 5773d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum *)attachments, 5774d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint)x, 5775d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint)y, 5776d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)width, 5777d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)height 5778d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 577984cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy 578084cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guyexit: 5781d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_array) { 57823b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseIntArrayElements(_array, (jint*)attachments, JNI_ABORT); 5783d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 578484cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy if (_exception) { 578584cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy jniThrowException(_env, _exceptionType, _exceptionMessage); 578684cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy } 5787d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 5788d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 5789d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glTexStorage2D ( GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height ) */ 5790d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 5791d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glTexStorage2D__IIIII 5792d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint target, jint levels, jint internalformat, jint width, jint height) { 5793d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glTexStorage2D( 5794d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)target, 5795d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)levels, 5796d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)internalformat, 5797d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)width, 5798d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)height 5799d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 5800d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 5801d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 5802d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glTexStorage3D ( GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth ) */ 5803d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 5804d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glTexStorage3D__IIIIII 5805d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint target, jint levels, jint internalformat, jint width, jint height, jint depth) { 5806d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glTexStorage3D( 5807d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)target, 5808d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)levels, 5809d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)internalformat, 5810d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)width, 5811d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)height, 5812d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)depth 5813d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 5814d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 5815d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 5816d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glGetInternalformativ ( GLenum target, GLenum internalformat, GLenum pname, GLsizei bufSize, GLint *params ) */ 5817d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 5818d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glGetInternalformativ__IIII_3II 5819d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint target, jint internalformat, jint pname, jint bufSize, jintArray params_ref, jint offset) { 5820d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _exception = 0; 5821d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char * _exceptionType = NULL; 5822d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char * _exceptionMessage = NULL; 5823d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLint *params_base = (GLint *) 0; 5824d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _remaining; 5825d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLint *params = (GLint *) 0; 5826d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 5827d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (!params_ref) { 5828d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 5829d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 5830d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "params == null"; 5831d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 5832d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 5833d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (offset < 0) { 5834d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 5835d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 5836d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "offset < 0"; 5837d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 5838d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 5839d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _remaining = _env->GetArrayLength(params_ref) - offset; 5840d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall params_base = (GLint *) 58413b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->GetIntArrayElements(params_ref, (jboolean *)0); 5842d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall params = params_base + offset; 5843d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 5844d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glGetInternalformativ( 5845d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)target, 5846d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)internalformat, 5847d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)pname, 5848d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)bufSize, 5849d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint *)params 5850d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 5851d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 5852d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallexit: 5853d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (params_base) { 58543b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseIntArrayElements(params_ref, (jint*)params_base, 5855d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception ? JNI_ABORT: 0); 5856d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 5857d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_exception) { 5858d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jniThrowException(_env, _exceptionType, _exceptionMessage); 5859d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 5860d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 5861d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 5862d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glGetInternalformativ ( GLenum target, GLenum internalformat, GLenum pname, GLsizei bufSize, GLint *params ) */ 5863d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 5864d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glGetInternalformativ__IIIILjava_nio_IntBuffer_2 5865d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint target, jint internalformat, jint pname, jint bufSize, jobject params_buf) { 586684cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy jint _exception = 0; 586784cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy const char * _exceptionType = NULL; 586884cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy const char * _exceptionMessage = NULL; 58693b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi jintArray _array = (jintArray) 0; 5870d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _bufferOffset = (jint) 0; 5871d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _remaining; 5872d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLint *params = (GLint *) 0; 5873d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 587484cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy if (!params_buf) { 587584cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exception = 1; 587684cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exceptionType = "java/lang/IllegalArgumentException"; 587784cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _exceptionMessage = "params == null"; 587884cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy goto exit; 587984cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy } 58803b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi params = (GLint *)getPointer(_env, params_buf, (jarray*)&_array, &_remaining, &_bufferOffset); 5881d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (params == NULL) { 58823b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi char * _paramsBase = (char *)_env->GetIntArrayElements(_array, (jboolean *) 0); 5883d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall params = (GLint *) (_paramsBase + _bufferOffset); 5884d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 5885d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glGetInternalformativ( 5886d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)target, 5887d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)internalformat, 5888d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)pname, 5889d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)bufSize, 5890d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint *)params 5891d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 589284cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy 589384cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guyexit: 5894d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_array) { 589584cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy _env->ReleaseIntArrayElements(_array, (jint*)params, _exception ? JNI_ABORT : 0); 589684cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy } 589784cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy if (_exception) { 589884cac20dfdff35932901e978e6b6d3da843a2fa7Romain Guy jniThrowException(_env, _exceptionType, _exceptionMessage); 5899d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 5900d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 5901d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 590268981ff03b2c166800ddc82973a2aa95269a343bPablo Ceballos/* void glReadPixels ( GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLint offset ) */ 590368981ff03b2c166800ddc82973a2aa95269a343bPablo Ceballosstatic void 590468981ff03b2c166800ddc82973a2aa95269a343bPablo Ceballosandroid_glReadPixels__IIIIIII 590568981ff03b2c166800ddc82973a2aa95269a343bPablo Ceballos (JNIEnv *_env, jobject _this, jint x, jint y, jint width, jint height, jint format, jint type, jint offset) { 590668981ff03b2c166800ddc82973a2aa95269a343bPablo Ceballos glReadPixels( 590768981ff03b2c166800ddc82973a2aa95269a343bPablo Ceballos (GLint)x, 590868981ff03b2c166800ddc82973a2aa95269a343bPablo Ceballos (GLint)y, 590968981ff03b2c166800ddc82973a2aa95269a343bPablo Ceballos (GLsizei)width, 591068981ff03b2c166800ddc82973a2aa95269a343bPablo Ceballos (GLsizei)height, 591168981ff03b2c166800ddc82973a2aa95269a343bPablo Ceballos (GLenum)format, 591268981ff03b2c166800ddc82973a2aa95269a343bPablo Ceballos (GLenum)type, 591368981ff03b2c166800ddc82973a2aa95269a343bPablo Ceballos reinterpret_cast<GLvoid *>(offset) 591468981ff03b2c166800ddc82973a2aa95269a343bPablo Ceballos ); 591568981ff03b2c166800ddc82973a2aa95269a343bPablo Ceballos} 591668981ff03b2c166800ddc82973a2aa95269a343bPablo Ceballos 5917d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic const char *classPathName = "android/opengl/GLES30"; 5918d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 591976f6a86de25e1bf74717e047e55fd44b089673f3Daniel Micaystatic const JNINativeMethod methods[] = { 5920d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"_nativeClassInit", "()V", (void*)nativeClassInit }, 5921d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glReadBuffer", "(I)V", (void *) android_glReadBuffer__I }, 5922d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glDrawRangeElements", "(IIIIILjava/nio/Buffer;)V", (void *) android_glDrawRangeElements__IIIIILjava_nio_Buffer_2 }, 5923d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glDrawRangeElements", "(IIIIII)V", (void *) android_glDrawRangeElements__IIIIII }, 5924d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glTexImage3D", "(IIIIIIIIILjava/nio/Buffer;)V", (void *) android_glTexImage3D__IIIIIIIIILjava_nio_Buffer_2 }, 5925d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glTexImage3D", "(IIIIIIIIII)V", (void *) android_glTexImage3D__IIIIIIIIII }, 5926d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glTexSubImage3D", "(IIIIIIIIIILjava/nio/Buffer;)V", (void *) android_glTexSubImage3D__IIIIIIIIIILjava_nio_Buffer_2 }, 5927d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glTexSubImage3D", "(IIIIIIIIIII)V", (void *) android_glTexSubImage3D__IIIIIIIIIII }, 5928d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glCopyTexSubImage3D", "(IIIIIIIII)V", (void *) android_glCopyTexSubImage3D__IIIIIIIII }, 5929d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glCompressedTexImage3D", "(IIIIIIIILjava/nio/Buffer;)V", (void *) android_glCompressedTexImage3D__IIIIIIIILjava_nio_Buffer_2 }, 5930d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glCompressedTexImage3D", "(IIIIIIIII)V", (void *) android_glCompressedTexImage3D__IIIIIIIII }, 5931d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glCompressedTexSubImage3D", "(IIIIIIIIIILjava/nio/Buffer;)V", (void *) android_glCompressedTexSubImage3D__IIIIIIIIIILjava_nio_Buffer_2 }, 5932d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glCompressedTexSubImage3D", "(IIIIIIIIIII)V", (void *) android_glCompressedTexSubImage3D__IIIIIIIIIII }, 5933d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glGenQueries", "(I[II)V", (void *) android_glGenQueries__I_3II }, 5934d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glGenQueries", "(ILjava/nio/IntBuffer;)V", (void *) android_glGenQueries__ILjava_nio_IntBuffer_2 }, 5935d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glDeleteQueries", "(I[II)V", (void *) android_glDeleteQueries__I_3II }, 5936d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glDeleteQueries", "(ILjava/nio/IntBuffer;)V", (void *) android_glDeleteQueries__ILjava_nio_IntBuffer_2 }, 5937d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glIsQuery", "(I)Z", (void *) android_glIsQuery__I }, 5938d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glBeginQuery", "(II)V", (void *) android_glBeginQuery__II }, 5939d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glEndQuery", "(I)V", (void *) android_glEndQuery__I }, 5940d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glGetQueryiv", "(II[II)V", (void *) android_glGetQueryiv__II_3II }, 5941d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glGetQueryiv", "(IILjava/nio/IntBuffer;)V", (void *) android_glGetQueryiv__IILjava_nio_IntBuffer_2 }, 5942d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glGetQueryObjectuiv", "(II[II)V", (void *) android_glGetQueryObjectuiv__II_3II }, 5943d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glGetQueryObjectuiv", "(IILjava/nio/IntBuffer;)V", (void *) android_glGetQueryObjectuiv__IILjava_nio_IntBuffer_2 }, 5944d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glUnmapBuffer", "(I)Z", (void *) android_glUnmapBuffer__I }, 5945d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glGetBufferPointerv", "(II)Ljava/nio/Buffer;", (void *) android_glGetBufferPointerv__II }, 5946d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glDrawBuffers", "(I[II)V", (void *) android_glDrawBuffers__I_3II }, 5947d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glDrawBuffers", "(ILjava/nio/IntBuffer;)V", (void *) android_glDrawBuffers__ILjava_nio_IntBuffer_2 }, 5948d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glUniformMatrix2x3fv", "(IIZ[FI)V", (void *) android_glUniformMatrix2x3fv__IIZ_3FI }, 5949d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glUniformMatrix2x3fv", "(IIZLjava/nio/FloatBuffer;)V", (void *) android_glUniformMatrix2x3fv__IIZLjava_nio_FloatBuffer_2 }, 5950d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glUniformMatrix3x2fv", "(IIZ[FI)V", (void *) android_glUniformMatrix3x2fv__IIZ_3FI }, 5951d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glUniformMatrix3x2fv", "(IIZLjava/nio/FloatBuffer;)V", (void *) android_glUniformMatrix3x2fv__IIZLjava_nio_FloatBuffer_2 }, 5952d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glUniformMatrix2x4fv", "(IIZ[FI)V", (void *) android_glUniformMatrix2x4fv__IIZ_3FI }, 5953d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glUniformMatrix2x4fv", "(IIZLjava/nio/FloatBuffer;)V", (void *) android_glUniformMatrix2x4fv__IIZLjava_nio_FloatBuffer_2 }, 5954d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glUniformMatrix4x2fv", "(IIZ[FI)V", (void *) android_glUniformMatrix4x2fv__IIZ_3FI }, 5955d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glUniformMatrix4x2fv", "(IIZLjava/nio/FloatBuffer;)V", (void *) android_glUniformMatrix4x2fv__IIZLjava_nio_FloatBuffer_2 }, 5956d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glUniformMatrix3x4fv", "(IIZ[FI)V", (void *) android_glUniformMatrix3x4fv__IIZ_3FI }, 5957d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glUniformMatrix3x4fv", "(IIZLjava/nio/FloatBuffer;)V", (void *) android_glUniformMatrix3x4fv__IIZLjava_nio_FloatBuffer_2 }, 5958d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glUniformMatrix4x3fv", "(IIZ[FI)V", (void *) android_glUniformMatrix4x3fv__IIZ_3FI }, 5959d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glUniformMatrix4x3fv", "(IIZLjava/nio/FloatBuffer;)V", (void *) android_glUniformMatrix4x3fv__IIZLjava_nio_FloatBuffer_2 }, 5960d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glBlitFramebuffer", "(IIIIIIIIII)V", (void *) android_glBlitFramebuffer__IIIIIIIIII }, 5961d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glRenderbufferStorageMultisample", "(IIIII)V", (void *) android_glRenderbufferStorageMultisample__IIIII }, 5962d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glFramebufferTextureLayer", "(IIIII)V", (void *) android_glFramebufferTextureLayer__IIIII }, 5963d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glMapBufferRange", "(IIII)Ljava/nio/Buffer;", (void *) android_glMapBufferRange__IIII }, 5964d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glFlushMappedBufferRange", "(III)V", (void *) android_glFlushMappedBufferRange__III }, 5965d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glBindVertexArray", "(I)V", (void *) android_glBindVertexArray__I }, 5966d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glDeleteVertexArrays", "(I[II)V", (void *) android_glDeleteVertexArrays__I_3II }, 5967d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glDeleteVertexArrays", "(ILjava/nio/IntBuffer;)V", (void *) android_glDeleteVertexArrays__ILjava_nio_IntBuffer_2 }, 5968d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glGenVertexArrays", "(I[II)V", (void *) android_glGenVertexArrays__I_3II }, 5969d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glGenVertexArrays", "(ILjava/nio/IntBuffer;)V", (void *) android_glGenVertexArrays__ILjava_nio_IntBuffer_2 }, 5970d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glIsVertexArray", "(I)Z", (void *) android_glIsVertexArray__I }, 5971d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glGetIntegeri_v", "(II[II)V", (void *) android_glGetIntegeri_v__II_3II }, 5972d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glGetIntegeri_v", "(IILjava/nio/IntBuffer;)V", (void *) android_glGetIntegeri_v__IILjava_nio_IntBuffer_2 }, 5973d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glBeginTransformFeedback", "(I)V", (void *) android_glBeginTransformFeedback__I }, 5974d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glEndTransformFeedback", "()V", (void *) android_glEndTransformFeedback__ }, 5975d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glBindBufferRange", "(IIIII)V", (void *) android_glBindBufferRange__IIIII }, 5976d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glBindBufferBase", "(III)V", (void *) android_glBindBufferBase__III }, 5977d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glTransformFeedbackVaryings", "(I[Ljava/lang/String;I)V", (void *) android_glTransformFeedbackVaryings }, 5978d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glGetTransformFeedbackVarying", "(III[II[II[II[BI)V", (void *) android_glGetTransformFeedbackVarying__III_3II_3II_3II_3BI }, 5979d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glGetTransformFeedbackVarying", "(IIILjava/nio/IntBuffer;Ljava/nio/IntBuffer;Ljava/nio/IntBuffer;B)V", (void *) android_glGetTransformFeedbackVarying__IIILjava_nio_IntBuffer_2Ljava_nio_IntBuffer_2Ljava_nio_IntBuffer_2B }, 598059fb43e7bdc607f49b301644e4300485f352b103Pablo Ceballos{"glGetTransformFeedbackVarying", "(IIILjava/nio/IntBuffer;Ljava/nio/IntBuffer;Ljava/nio/IntBuffer;Ljava/nio/ByteBuffer;)V", (void *) android_glGetTransformFeedbackVarying__IIILjava_nio_IntBuffer_2Ljava_nio_IntBuffer_2Ljava_nio_IntBuffer_2Ljava_nio_ByteBuffer_2 }, 5981d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glGetTransformFeedbackVarying", "(II[II[II)Ljava/lang/String;", (void *) android_glGetTransformFeedbackVarying1 }, 5982d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glGetTransformFeedbackVarying", "(IILjava/nio/IntBuffer;Ljava/nio/IntBuffer;)Ljava/lang/String;", (void *) android_glGetTransformFeedbackVarying2 }, 5983d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glVertexAttribIPointerBounds", "(IIIILjava/nio/Buffer;I)V", (void *) android_glVertexAttribIPointerBounds__IIIILjava_nio_Buffer_2I }, 5984d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glVertexAttribIPointer", "(IIIII)V", (void *) android_glVertexAttribIPointer__IIIII }, 5985d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glGetVertexAttribIiv", "(II[II)V", (void *) android_glGetVertexAttribIiv__II_3II }, 5986d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glGetVertexAttribIiv", "(IILjava/nio/IntBuffer;)V", (void *) android_glGetVertexAttribIiv__IILjava_nio_IntBuffer_2 }, 5987d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glGetVertexAttribIuiv", "(II[II)V", (void *) android_glGetVertexAttribIuiv__II_3II }, 5988d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glGetVertexAttribIuiv", "(IILjava/nio/IntBuffer;)V", (void *) android_glGetVertexAttribIuiv__IILjava_nio_IntBuffer_2 }, 5989d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glVertexAttribI4i", "(IIIII)V", (void *) android_glVertexAttribI4i__IIIII }, 5990d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glVertexAttribI4ui", "(IIIII)V", (void *) android_glVertexAttribI4ui__IIIII }, 5991d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glVertexAttribI4iv", "(I[II)V", (void *) android_glVertexAttribI4iv__I_3II }, 5992d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glVertexAttribI4iv", "(ILjava/nio/IntBuffer;)V", (void *) android_glVertexAttribI4iv__ILjava_nio_IntBuffer_2 }, 5993d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glVertexAttribI4uiv", "(I[II)V", (void *) android_glVertexAttribI4uiv__I_3II }, 5994d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glVertexAttribI4uiv", "(ILjava/nio/IntBuffer;)V", (void *) android_glVertexAttribI4uiv__ILjava_nio_IntBuffer_2 }, 5995d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glGetUniformuiv", "(II[II)V", (void *) android_glGetUniformuiv__II_3II }, 5996d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glGetUniformuiv", "(IILjava/nio/IntBuffer;)V", (void *) android_glGetUniformuiv__IILjava_nio_IntBuffer_2 }, 5997d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glGetFragDataLocation", "(ILjava/lang/String;)I", (void *) android_glGetFragDataLocation__ILjava_lang_String_2 }, 5998d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glUniform1ui", "(II)V", (void *) android_glUniform1ui__II }, 5999d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glUniform2ui", "(III)V", (void *) android_glUniform2ui__III }, 6000d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glUniform3ui", "(IIII)V", (void *) android_glUniform3ui__IIII }, 6001d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glUniform4ui", "(IIIII)V", (void *) android_glUniform4ui__IIIII }, 6002d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glUniform1uiv", "(II[II)V", (void *) android_glUniform1uiv__II_3II }, 6003d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glUniform1uiv", "(IILjava/nio/IntBuffer;)V", (void *) android_glUniform1uiv__IILjava_nio_IntBuffer_2 }, 6004d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glUniform2uiv", "(II[II)V", (void *) android_glUniform2uiv__II_3II }, 6005d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glUniform2uiv", "(IILjava/nio/IntBuffer;)V", (void *) android_glUniform2uiv__IILjava_nio_IntBuffer_2 }, 6006d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glUniform3uiv", "(II[II)V", (void *) android_glUniform3uiv__II_3II }, 6007d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glUniform3uiv", "(IILjava/nio/IntBuffer;)V", (void *) android_glUniform3uiv__IILjava_nio_IntBuffer_2 }, 6008d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glUniform4uiv", "(II[II)V", (void *) android_glUniform4uiv__II_3II }, 6009d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glUniform4uiv", "(IILjava/nio/IntBuffer;)V", (void *) android_glUniform4uiv__IILjava_nio_IntBuffer_2 }, 6010d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glClearBufferiv", "(II[II)V", (void *) android_glClearBufferiv__II_3II }, 6011d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glClearBufferiv", "(IILjava/nio/IntBuffer;)V", (void *) android_glClearBufferiv__IILjava_nio_IntBuffer_2 }, 6012d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glClearBufferuiv", "(II[II)V", (void *) android_glClearBufferuiv__II_3II }, 6013d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glClearBufferuiv", "(IILjava/nio/IntBuffer;)V", (void *) android_glClearBufferuiv__IILjava_nio_IntBuffer_2 }, 6014d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glClearBufferfv", "(II[FI)V", (void *) android_glClearBufferfv__II_3FI }, 6015d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glClearBufferfv", "(IILjava/nio/FloatBuffer;)V", (void *) android_glClearBufferfv__IILjava_nio_FloatBuffer_2 }, 6016d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glClearBufferfi", "(IIFI)V", (void *) android_glClearBufferfi__IIFI }, 6017d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glGetStringi", "(II)Ljava/lang/String;", (void *) android_glGetStringi__II }, 6018d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glCopyBufferSubData", "(IIIII)V", (void *) android_glCopyBufferSubData__IIIII }, 6019d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glGetUniformIndices", "(I[Ljava/lang/String;[II)V", (void *) android_glGetUniformIndices_array }, 6020d877efe3b12afdd84f06c180369f9d7399858f6eJesse Hall{"glGetUniformIndices", "(I[Ljava/lang/String;Ljava/nio/IntBuffer;)V", (void *) android_glGetUniformIndices_buffer }, 6021d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glGetActiveUniformsiv", "(II[III[II)V", (void *) android_glGetActiveUniformsiv__II_3III_3II }, 6022d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glGetActiveUniformsiv", "(IILjava/nio/IntBuffer;ILjava/nio/IntBuffer;)V", (void *) android_glGetActiveUniformsiv__IILjava_nio_IntBuffer_2ILjava_nio_IntBuffer_2 }, 6023d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glGetUniformBlockIndex", "(ILjava/lang/String;)I", (void *) android_glGetUniformBlockIndex__ILjava_lang_String_2 }, 6024d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glGetActiveUniformBlockiv", "(III[II)V", (void *) android_glGetActiveUniformBlockiv__III_3II }, 6025d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glGetActiveUniformBlockiv", "(IIILjava/nio/IntBuffer;)V", (void *) android_glGetActiveUniformBlockiv__IIILjava_nio_IntBuffer_2 }, 6026d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glGetActiveUniformBlockName", "(III[II[BI)V", (void *) android_glGetActiveUniformBlockName_III_3II_3BI }, 6027d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glGetActiveUniformBlockName", "(IILjava/nio/Buffer;Ljava/nio/Buffer;)V", (void *) android_glGetActiveUniformBlockName_IILjava_nio_Buffer_2Ljava_nio_Buffer_2 }, 6028d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glGetActiveUniformBlockName", "(II)Ljava/lang/String;", (void *) android_glGetActiveUniformBlockName_II }, 6029d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glUniformBlockBinding", "(III)V", (void *) android_glUniformBlockBinding__III }, 6030d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glDrawArraysInstanced", "(IIII)V", (void *) android_glDrawArraysInstanced__IIII }, 6031d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glDrawElementsInstanced", "(IIILjava/nio/Buffer;I)V", (void *) android_glDrawElementsInstanced__IIILjava_nio_Buffer_2I }, 6032d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glDrawElementsInstanced", "(IIIII)V", (void *) android_glDrawElementsInstanced__IIIII }, 6033d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glFenceSync", "(II)J", (void *) android_glFenceSync__II }, 6034d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glIsSync", "(J)Z", (void *) android_glIsSync__J }, 6035d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glDeleteSync", "(J)V", (void *) android_glDeleteSync__J }, 6036d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glClientWaitSync", "(JIJ)I", (void *) android_glClientWaitSync__JIJ }, 6037d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glWaitSync", "(JIJ)V", (void *) android_glWaitSync__JIJ }, 6038d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glGetInteger64v", "(I[JI)V", (void *) android_glGetInteger64v__I_3JI }, 6039d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glGetInteger64v", "(ILjava/nio/LongBuffer;)V", (void *) android_glGetInteger64v__ILjava_nio_LongBuffer_2 }, 6040d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glGetSynciv", "(JII[II[II)V", (void *) android_glGetSynciv__JII_3II_3II }, 6041d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glGetSynciv", "(JIILjava/nio/IntBuffer;Ljava/nio/IntBuffer;)V", (void *) android_glGetSynciv__JIILjava_nio_IntBuffer_2Ljava_nio_IntBuffer_2 }, 6042d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glGetInteger64i_v", "(II[JI)V", (void *) android_glGetInteger64i_v__II_3JI }, 6043d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glGetInteger64i_v", "(IILjava/nio/LongBuffer;)V", (void *) android_glGetInteger64i_v__IILjava_nio_LongBuffer_2 }, 6044d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glGetBufferParameteri64v", "(II[JI)V", (void *) android_glGetBufferParameteri64v__II_3JI }, 6045d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glGetBufferParameteri64v", "(IILjava/nio/LongBuffer;)V", (void *) android_glGetBufferParameteri64v__IILjava_nio_LongBuffer_2 }, 6046d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glGenSamplers", "(I[II)V", (void *) android_glGenSamplers__I_3II }, 6047d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glGenSamplers", "(ILjava/nio/IntBuffer;)V", (void *) android_glGenSamplers__ILjava_nio_IntBuffer_2 }, 6048d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glDeleteSamplers", "(I[II)V", (void *) android_glDeleteSamplers__I_3II }, 6049d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glDeleteSamplers", "(ILjava/nio/IntBuffer;)V", (void *) android_glDeleteSamplers__ILjava_nio_IntBuffer_2 }, 6050d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glIsSampler", "(I)Z", (void *) android_glIsSampler__I }, 6051d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glBindSampler", "(II)V", (void *) android_glBindSampler__II }, 6052d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glSamplerParameteri", "(III)V", (void *) android_glSamplerParameteri__III }, 6053d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glSamplerParameteriv", "(II[II)V", (void *) android_glSamplerParameteriv__II_3II }, 6054d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glSamplerParameteriv", "(IILjava/nio/IntBuffer;)V", (void *) android_glSamplerParameteriv__IILjava_nio_IntBuffer_2 }, 6055d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glSamplerParameterf", "(IIF)V", (void *) android_glSamplerParameterf__IIF }, 6056d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glSamplerParameterfv", "(II[FI)V", (void *) android_glSamplerParameterfv__II_3FI }, 6057d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glSamplerParameterfv", "(IILjava/nio/FloatBuffer;)V", (void *) android_glSamplerParameterfv__IILjava_nio_FloatBuffer_2 }, 6058d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glGetSamplerParameteriv", "(II[II)V", (void *) android_glGetSamplerParameteriv__II_3II }, 6059d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glGetSamplerParameteriv", "(IILjava/nio/IntBuffer;)V", (void *) android_glGetSamplerParameteriv__IILjava_nio_IntBuffer_2 }, 6060d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glGetSamplerParameterfv", "(II[FI)V", (void *) android_glGetSamplerParameterfv__II_3FI }, 6061d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glGetSamplerParameterfv", "(IILjava/nio/FloatBuffer;)V", (void *) android_glGetSamplerParameterfv__IILjava_nio_FloatBuffer_2 }, 6062d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glVertexAttribDivisor", "(II)V", (void *) android_glVertexAttribDivisor__II }, 6063d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glBindTransformFeedback", "(II)V", (void *) android_glBindTransformFeedback__II }, 6064d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glDeleteTransformFeedbacks", "(I[II)V", (void *) android_glDeleteTransformFeedbacks__I_3II }, 6065d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glDeleteTransformFeedbacks", "(ILjava/nio/IntBuffer;)V", (void *) android_glDeleteTransformFeedbacks__ILjava_nio_IntBuffer_2 }, 6066d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glGenTransformFeedbacks", "(I[II)V", (void *) android_glGenTransformFeedbacks__I_3II }, 6067d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glGenTransformFeedbacks", "(ILjava/nio/IntBuffer;)V", (void *) android_glGenTransformFeedbacks__ILjava_nio_IntBuffer_2 }, 6068d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glIsTransformFeedback", "(I)Z", (void *) android_glIsTransformFeedback__I }, 6069d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glPauseTransformFeedback", "()V", (void *) android_glPauseTransformFeedback__ }, 6070d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glResumeTransformFeedback", "()V", (void *) android_glResumeTransformFeedback__ }, 6071d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glGetProgramBinary", "(II[II[IILjava/nio/Buffer;)V", (void *) android_glGetProgramBinary__II_3II_3IILjava_nio_Buffer_2 }, 6072d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glGetProgramBinary", "(IILjava/nio/IntBuffer;Ljava/nio/IntBuffer;Ljava/nio/Buffer;)V", (void *) android_glGetProgramBinary__IILjava_nio_IntBuffer_2Ljava_nio_IntBuffer_2Ljava_nio_Buffer_2 }, 6073d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glProgramBinary", "(IILjava/nio/Buffer;I)V", (void *) android_glProgramBinary__IILjava_nio_Buffer_2I }, 6074d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glProgramParameteri", "(III)V", (void *) android_glProgramParameteri__III }, 6075d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glInvalidateFramebuffer", "(II[II)V", (void *) android_glInvalidateFramebuffer__II_3II }, 6076d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glInvalidateFramebuffer", "(IILjava/nio/IntBuffer;)V", (void *) android_glInvalidateFramebuffer__IILjava_nio_IntBuffer_2 }, 6077d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glInvalidateSubFramebuffer", "(II[IIIIII)V", (void *) android_glInvalidateSubFramebuffer__II_3IIIIII }, 6078d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glInvalidateSubFramebuffer", "(IILjava/nio/IntBuffer;IIII)V", (void *) android_glInvalidateSubFramebuffer__IILjava_nio_IntBuffer_2IIII }, 6079d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glTexStorage2D", "(IIIII)V", (void *) android_glTexStorage2D__IIIII }, 6080d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glTexStorage3D", "(IIIIII)V", (void *) android_glTexStorage3D__IIIIII }, 6081d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glGetInternalformativ", "(IIII[II)V", (void *) android_glGetInternalformativ__IIII_3II }, 6082d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glGetInternalformativ", "(IIIILjava/nio/IntBuffer;)V", (void *) android_glGetInternalformativ__IIIILjava_nio_IntBuffer_2 }, 608368981ff03b2c166800ddc82973a2aa95269a343bPablo Ceballos{"glReadPixels", "(IIIIIII)V", (void *) android_glReadPixels__IIIIIII }, 6084d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall}; 6085d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 6086d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallint register_android_opengl_jni_GLES30(JNIEnv *_env) 6087d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{ 6088d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall int err; 6089d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall err = android::AndroidRuntime::registerNativeMethods(_env, classPathName, methods, NELEM(methods)); 6090d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall return err; 6091d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 6092