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-but-set-variable" 22bfe6333c3cf529600f41f14e3b8c5846e632c9a2Andreas Gampe#pragma GCC diagnostic ignored "-Wunused-function" 23bfe6333c3cf529600f41f14e3b8c5846e632c9a2Andreas Gampe 24d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall#include <GLES3/gl3.h> 25d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall#include <GLES3/gl3ext.h> 26d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 279626f8203a8c222b8960a49cdc66d540fdb688b0Jesse Hall#include <jni.h> 289626f8203a8c222b8960a49cdc66d540fdb688b0Jesse Hall#include <JNIHelp.h> 29d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall#include <android_runtime/AndroidRuntime.h> 30d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall#include <utils/misc.h> 31d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall#include <assert.h> 32d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 33d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic int initialized = 0; 34d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 35d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic jclass nioAccessClass; 36d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic jclass bufferClass; 37d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic jmethodID getBasePointerID; 38d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic jmethodID getBaseArrayID; 39d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic jmethodID getBaseArrayOffsetID; 40d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic jfieldID positionID; 41d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic jfieldID limitID; 42d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic jfieldID elementSizeShiftID; 43d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 44d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 45d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* special calls implemented in Android's GLES wrapper used to more 46d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall * efficiently bound-check passed arrays */ 47d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallextern "C" { 48d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall#ifdef GL_VERSION_ES_CM_1_1 49d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse HallGL_API void GL_APIENTRY glColorPointerBounds(GLint size, GLenum type, GLsizei stride, 50d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const GLvoid *ptr, GLsizei count); 51d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse HallGL_API void GL_APIENTRY glNormalPointerBounds(GLenum type, GLsizei stride, 52d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const GLvoid *pointer, GLsizei count); 53d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse HallGL_API void GL_APIENTRY glTexCoordPointerBounds(GLint size, GLenum type, 54d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLsizei stride, const GLvoid *pointer, GLsizei count); 55d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse HallGL_API void GL_APIENTRY glVertexPointerBounds(GLint size, GLenum type, 56d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLsizei stride, const GLvoid *pointer, GLsizei count); 57d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse HallGL_API void GL_APIENTRY glPointSizePointerOESBounds(GLenum type, 58d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLsizei stride, const GLvoid *pointer, GLsizei count); 59d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse HallGL_API void GL_APIENTRY glMatrixIndexPointerOESBounds(GLint size, GLenum type, 60d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLsizei stride, const GLvoid *pointer, GLsizei count); 61d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse HallGL_API void GL_APIENTRY glWeightPointerOESBounds(GLint size, GLenum type, 62d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLsizei stride, const GLvoid *pointer, GLsizei count); 63d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall#endif 64d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall#ifdef GL_ES_VERSION_2_0 65d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void glVertexAttribPointerBounds(GLuint indx, GLint size, GLenum type, 66d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLboolean normalized, GLsizei stride, const GLvoid *pointer, GLsizei count) { 67d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glVertexAttribPointer(indx, size, type, normalized, stride, pointer); 68d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 69d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall#endif 70d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall#ifdef GL_ES_VERSION_3_0 71d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void glVertexAttribIPointerBounds(GLuint indx, GLint size, GLenum type, 72d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLsizei stride, const GLvoid *pointer, GLsizei count) { 73d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glVertexAttribIPointer(indx, size, type, stride, pointer); 74d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 75d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall#endif 76d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 77d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 78d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* Cache method IDs each time the class is loaded. */ 79d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 80d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 81d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse HallnativeClassInit(JNIEnv *_env, jclass glImplClass) 82d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{ 83d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jclass nioAccessClassLocal = _env->FindClass("java/nio/NIOAccess"); 84d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall nioAccessClass = (jclass) _env->NewGlobalRef(nioAccessClassLocal); 85d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 86d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jclass bufferClassLocal = _env->FindClass("java/nio/Buffer"); 87d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall bufferClass = (jclass) _env->NewGlobalRef(bufferClassLocal); 88d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 89d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall getBasePointerID = _env->GetStaticMethodID(nioAccessClass, 90d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall "getBasePointer", "(Ljava/nio/Buffer;)J"); 91d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall getBaseArrayID = _env->GetStaticMethodID(nioAccessClass, 92d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall "getBaseArray", "(Ljava/nio/Buffer;)Ljava/lang/Object;"); 93d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall getBaseArrayOffsetID = _env->GetStaticMethodID(nioAccessClass, 94d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall "getBaseArrayOffset", "(Ljava/nio/Buffer;)I"); 95d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 96d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall positionID = _env->GetFieldID(bufferClass, "position", "I"); 97d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall limitID = _env->GetFieldID(bufferClass, "limit", "I"); 98d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall elementSizeShiftID = 99d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _env->GetFieldID(bufferClass, "_elementSizeShift", "I"); 100d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 101d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 102d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void * 103d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse HallgetPointer(JNIEnv *_env, jobject buffer, jarray *array, jint *remaining, jint *offset) 104d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{ 105d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint position; 106d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint limit; 107d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint elementSizeShift; 108d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jlong pointer; 109d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 110d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall position = _env->GetIntField(buffer, positionID); 111d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall limit = _env->GetIntField(buffer, limitID); 112d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall elementSizeShift = _env->GetIntField(buffer, elementSizeShiftID); 113d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall *remaining = (limit - position) << elementSizeShift; 114d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall pointer = _env->CallStaticLongMethod(nioAccessClass, 115d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall getBasePointerID, buffer); 116d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (pointer != 0L) { 117d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall *array = NULL; 11801c26ea89d4bbea3cf550e9328742302dd9a2b25Ashok Bhat return reinterpret_cast<void*>(pointer); 119d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 120d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 121d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall *array = (jarray) _env->CallStaticObjectMethod(nioAccessClass, 122d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall getBaseArrayID, buffer); 123d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall *offset = _env->CallStaticIntMethod(nioAccessClass, 124d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall getBaseArrayOffsetID, buffer); 125d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 126d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall return NULL; 127d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 128d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 1293b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchiclass ByteArrayGetter { 1303b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchipublic: 1313b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi static void* Get(JNIEnv* _env, jbyteArray array, jboolean* is_copy) { 1323b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi return _env->GetByteArrayElements(array, is_copy); 1333b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi } 1343b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi}; 1353b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchiclass BooleanArrayGetter { 1363b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchipublic: 1373b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi static void* Get(JNIEnv* _env, jbooleanArray array, jboolean* is_copy) { 1383b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi return _env->GetBooleanArrayElements(array, is_copy); 1393b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi } 1403b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi}; 1413b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchiclass CharArrayGetter { 1423b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchipublic: 1433b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi static void* Get(JNIEnv* _env, jcharArray array, jboolean* is_copy) { 1443b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi return _env->GetCharArrayElements(array, is_copy); 1453b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi } 1463b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi}; 1473b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchiclass ShortArrayGetter { 1483b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchipublic: 1493b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi static void* Get(JNIEnv* _env, jshortArray array, jboolean* is_copy) { 1503b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi return _env->GetShortArrayElements(array, is_copy); 1513b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi } 1523b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi}; 1533b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchiclass IntArrayGetter { 1543b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchipublic: 1553b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi static void* Get(JNIEnv* _env, jintArray array, jboolean* is_copy) { 1563b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi return _env->GetIntArrayElements(array, is_copy); 1573b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi } 1583b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi}; 1593b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchiclass LongArrayGetter { 1603b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchipublic: 1613b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi static void* Get(JNIEnv* _env, jlongArray array, jboolean* is_copy) { 1623b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi return _env->GetLongArrayElements(array, is_copy); 1633b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi } 1643b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi}; 1653b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchiclass FloatArrayGetter { 1663b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchipublic: 1673b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi static void* Get(JNIEnv* _env, jfloatArray array, jboolean* is_copy) { 1683b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi return _env->GetFloatArrayElements(array, is_copy); 1693b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi } 1703b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi}; 1713b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchiclass DoubleArrayGetter { 1723b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchipublic: 1733b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi static void* Get(JNIEnv* _env, jdoubleArray array, jboolean* is_copy) { 1743b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi return _env->GetDoubleArrayElements(array, is_copy); 1753b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi } 1763b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi}; 1773b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi 1783b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchitemplate<typename JTYPEARRAY, typename ARRAYGETTER> 1793b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchistatic void* 1803b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi YamauchigetArrayPointer(JNIEnv *_env, JTYPEARRAY array, jboolean* is_copy) { 1813b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi return ARRAYGETTER::Get(_env, array, is_copy); 1823b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi} 1833b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi 1843b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchiclass ByteArrayReleaser { 1853b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchipublic: 1863b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi static void Release(JNIEnv* _env, jbyteArray array, jbyte* data, jboolean commit) { 1873b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseByteArrayElements(array, data, commit ? 0 : JNI_ABORT); 1883b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi } 1893b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi}; 1903b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchiclass BooleanArrayReleaser { 1913b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchipublic: 1923b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi static void Release(JNIEnv* _env, jbooleanArray array, jboolean* data, jboolean commit) { 1933b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseBooleanArrayElements(array, data, commit ? 0 : JNI_ABORT); 1943b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi } 1953b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi}; 1963b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchiclass CharArrayReleaser { 1973b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchipublic: 1983b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi static void Release(JNIEnv* _env, jcharArray array, jchar* data, jboolean commit) { 1993b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseCharArrayElements(array, data, commit ? 0 : JNI_ABORT); 2003b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi } 2013b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi}; 2023b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchiclass ShortArrayReleaser { 2033b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchipublic: 2043b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi static void Release(JNIEnv* _env, jshortArray array, jshort* data, jboolean commit) { 2053b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseShortArrayElements(array, data, commit ? 0 : JNI_ABORT); 2063b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi } 2073b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi}; 2083b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchiclass IntArrayReleaser { 2093b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchipublic: 2103b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi static void Release(JNIEnv* _env, jintArray array, jint* data, jboolean commit) { 2113b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseIntArrayElements(array, data, commit ? 0 : JNI_ABORT); 2123b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi } 2133b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi}; 2143b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchiclass LongArrayReleaser { 2153b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchipublic: 2163b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi static void Release(JNIEnv* _env, jlongArray array, jlong* data, jboolean commit) { 2173b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseLongArrayElements(array, data, commit ? 0 : JNI_ABORT); 2183b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi } 2193b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi}; 2203b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchiclass FloatArrayReleaser { 2213b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchipublic: 2223b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi static void Release(JNIEnv* _env, jfloatArray array, jfloat* data, jboolean commit) { 2233b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseFloatArrayElements(array, data, commit ? 0 : JNI_ABORT); 2243b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi } 2253b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi}; 2263b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchiclass DoubleArrayReleaser { 2273b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchipublic: 2283b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi static void Release(JNIEnv* _env, jdoubleArray array, jdouble* data, jboolean commit) { 2293b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseDoubleArrayElements(array, data, commit ? 0 : JNI_ABORT); 2303b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi } 2313b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi}; 2323b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi 2333b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchitemplate<typename JTYPEARRAY, typename NTYPEARRAY, typename ARRAYRELEASER> 2343b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchistatic void 2353b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi YamauchireleaseArrayPointer(JNIEnv *_env, JTYPEARRAY array, NTYPEARRAY data, jboolean commit) { 2363b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi ARRAYRELEASER::Release(_env, array, data, commit); 2373b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi} 2383b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi 239d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 240d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse HallreleasePointer(JNIEnv *_env, jarray array, void *data, jboolean commit) 241d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{ 242d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _env->ReleasePrimitiveArrayCritical(array, data, 243d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall commit ? 0 : JNI_ABORT); 244d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 245d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 246d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void * 247d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse HallgetDirectBufferPointer(JNIEnv *_env, jobject buffer) { 248d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall char* buf = (char*) _env->GetDirectBufferAddress(buffer); 249d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (buf) { 250d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint position = _env->GetIntField(buffer, positionID); 251d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint elementSizeShift = _env->GetIntField(buffer, elementSizeShiftID); 252d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall buf += position << elementSizeShift; 253d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } else { 254d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jniThrowException(_env, "java/lang/IllegalArgumentException", 255d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall "Must use a native order direct Buffer"); 256d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 257d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall return (void*) buf; 258d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 259d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 260d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall// -------------------------------------------------------------------------- 261d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 262d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* 263d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall * returns the number of values glGet returns for a given pname. 264d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall * 265d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall * The code below is written such that pnames requiring only one values 266d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall * are the default (and are not explicitely tested for). This makes the 267d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall * checking code much shorter/readable/efficient. 268d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall * 269d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall * This means that unknown pnames (e.g.: extensions) will default to 1. If 270d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall * that unknown pname needs more than 1 value, then the validation check 271d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall * is incomplete and the app may crash if it passed the wrong number params. 272d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall */ 273d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic int getNeededCount(GLint pname) { 274d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall int needed = 1; 275d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall#ifdef GL_ES_VERSION_2_0 276d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall // GLES 2.x pnames 277d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall switch (pname) { 278d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall case GL_ALIASED_LINE_WIDTH_RANGE: 279d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall case GL_ALIASED_POINT_SIZE_RANGE: 280d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall needed = 2; 281d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall break; 282d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 283d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall case GL_BLEND_COLOR: 284d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall case GL_COLOR_CLEAR_VALUE: 285d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall case GL_COLOR_WRITEMASK: 286d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall case GL_SCISSOR_BOX: 287d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall case GL_VIEWPORT: 288d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall needed = 4; 289d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall break; 290d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 291d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall case GL_COMPRESSED_TEXTURE_FORMATS: 292d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glGetIntegerv(GL_NUM_COMPRESSED_TEXTURE_FORMATS, &needed); 293d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall break; 294d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 295d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall case GL_SHADER_BINARY_FORMATS: 296d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glGetIntegerv(GL_NUM_SHADER_BINARY_FORMATS, &needed); 297d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall break; 298d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 299d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall#endif 300d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 301d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall#ifdef GL_VERSION_ES_CM_1_1 302d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall // GLES 1.x pnames 303d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall switch (pname) { 304d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall case GL_ALIASED_LINE_WIDTH_RANGE: 305d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall case GL_ALIASED_POINT_SIZE_RANGE: 306d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall case GL_DEPTH_RANGE: 307d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall case GL_SMOOTH_LINE_WIDTH_RANGE: 308d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall case GL_SMOOTH_POINT_SIZE_RANGE: 309d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall needed = 2; 310d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall break; 311d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 312d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall case GL_CURRENT_NORMAL: 313d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall case GL_POINT_DISTANCE_ATTENUATION: 314d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall needed = 3; 315d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall break; 316d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 317d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall case GL_COLOR_CLEAR_VALUE: 318d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall case GL_COLOR_WRITEMASK: 319d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall case GL_CURRENT_COLOR: 320d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall case GL_CURRENT_TEXTURE_COORDS: 321d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall case GL_FOG_COLOR: 322d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall case GL_LIGHT_MODEL_AMBIENT: 323d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall case GL_SCISSOR_BOX: 324d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall case GL_VIEWPORT: 325d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall needed = 4; 326d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall break; 327d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 328d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall case GL_MODELVIEW_MATRIX: 329d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall case GL_PROJECTION_MATRIX: 330d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall case GL_TEXTURE_MATRIX: 331d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall needed = 16; 332d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall break; 333d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 334d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall case GL_COMPRESSED_TEXTURE_FORMATS: 335d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glGetIntegerv(GL_NUM_COMPRESSED_TEXTURE_FORMATS, &needed); 336d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall break; 337d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 338d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall#endif 339d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall return needed; 340d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 341d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 3423b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchitemplate <typename JTYPEARRAY, typename ARRAYGETTER, typename NTYPEARRAY, 3433b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi typename ARRAYRELEASER, typename CTYPE, void GET(GLenum, CTYPE*)> 344d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 345d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallget 346d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint pname, JTYPEARRAY params_ref, jint offset) { 347d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _exception = 0; 348d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char * _exceptionType; 349d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char * _exceptionMessage; 350d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall CTYPE *params_base = (CTYPE *) 0; 351d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _remaining; 352d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall CTYPE *params = (CTYPE *) 0; 353d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall int _needed = 0; 354d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 355d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (!params_ref) { 356d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 357d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 358d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "params == null"; 359d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 360d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 361d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (offset < 0) { 362d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 363d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 364d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "offset < 0"; 365d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 366d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 367d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _remaining = _env->GetArrayLength(params_ref) - offset; 368d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _needed = getNeededCount(pname); 369d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall // if we didn't find this pname, we just assume the user passed 370d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall // an array of the right size -- this might happen with extensions 371d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall // or if we forget an enum here. 372d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_remaining < _needed) { 373d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 374d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 375d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "length - offset < needed"; 376d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 377d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 3783b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi params_base = (CTYPE *) getArrayPointer<JTYPEARRAY, ARRAYGETTER>( 3793b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env, params_ref, (jboolean *)0); 380d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall params = params_base + offset; 381d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 382d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GET( 383d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)pname, 384d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (CTYPE *)params 385d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 386d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 387d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallexit: 388d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (params_base) { 3893b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi releaseArrayPointer<JTYPEARRAY, NTYPEARRAY, ARRAYRELEASER>( 3903b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env, params_ref, params_base, !_exception); 391d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 392d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_exception) { 393d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jniThrowException(_env, _exceptionType, _exceptionMessage); 394d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 395d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 396d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 397d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 3983b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchitemplate <typename CTYPE, typename JTYPEARRAY, typename ARRAYGETTER, typename NTYPEARRAY, 3993b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi typename ARRAYRELEASER, void GET(GLenum, CTYPE*)> 400d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 401d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallgetarray 402d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint pname, jobject params_buf) { 403d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _exception = 0; 404d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char * _exceptionType; 405d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char * _exceptionMessage; 4063b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi JTYPEARRAY _array = (JTYPEARRAY) 0; 407d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _bufferOffset = (jint) 0; 408d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _remaining; 409d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall CTYPE *params = (CTYPE *) 0; 410d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall int _needed = 0; 411d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 4123b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi params = (CTYPE *)getPointer(_env, params_buf, (jarray*)&_array, &_remaining, &_bufferOffset); 413cee5198e7199fcbb131ff0d30165fb1d5c0107cfAndy McFadden _remaining /= sizeof(CTYPE); // convert from bytes to item count 414d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _needed = getNeededCount(pname); 415d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall // if we didn't find this pname, we just assume the user passed 416d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall // an array of the right size -- this might happen with extensions 417d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall // or if we forget an enum here. 418d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_needed>0 && _remaining < _needed) { 419d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 420d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 421d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "remaining() < needed"; 422d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 423d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 424d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (params == NULL) { 4253b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi char * _paramsBase = (char *) getArrayPointer<JTYPEARRAY, ARRAYGETTER>( 4263b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env, _array, (jboolean *) 0); 427d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall params = (CTYPE *) (_paramsBase + _bufferOffset); 428d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 429d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GET( 430d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)pname, 431d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (CTYPE *)params 432d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 433d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 434d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallexit: 435d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_array) { 4363b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi releaseArrayPointer<JTYPEARRAY, NTYPEARRAY, ARRAYRELEASER>( 4373b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env, _array, (NTYPEARRAY)params, _exception ? JNI_FALSE : JNI_TRUE); 438d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 439d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_exception) { 440d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jniThrowException(_env, _exceptionType, _exceptionMessage); 441d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 442d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 443d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 444d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall// -------------------------------------------------------------------------- 445d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glReadBuffer ( GLenum mode ) */ 446d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 447d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glReadBuffer__I 448d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint mode) { 449d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glReadBuffer( 450d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)mode 451d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 452d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 453d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 454d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glDrawRangeElements ( GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const GLvoid *indices ) */ 455d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 456d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glDrawRangeElements__IIIIILjava_nio_Buffer_2 457d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint mode, jint start, jint end, jint count, jint type, jobject indices_buf) { 458d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jarray _array = (jarray) 0; 459d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _bufferOffset = (jint) 0; 460d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _remaining; 461d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLvoid *indices = (GLvoid *) 0; 462d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 4633b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi indices = (GLvoid *)getPointer(_env, indices_buf, (jarray*)&_array, &_remaining, &_bufferOffset); 464d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (indices == NULL) { 465d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall char * _indicesBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); 466d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall indices = (GLvoid *) (_indicesBase + _bufferOffset); 467d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 468d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glDrawRangeElements( 469d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)mode, 470d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint)start, 471d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint)end, 472d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)count, 473d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)type, 474d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLvoid *)indices 475d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 476d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_array) { 477d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall releasePointer(_env, _array, indices, JNI_FALSE); 478d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 479d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 480d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 481d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glDrawRangeElements ( GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, GLsizei offset ) */ 482d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 483d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glDrawRangeElements__IIIIII 484d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint mode, jint start, jint end, jint count, jint type, jint offset) { 485d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glDrawRangeElements( 486d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)mode, 487d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint)start, 488d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint)end, 489d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)count, 490d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)type, 49101c26ea89d4bbea3cf550e9328742302dd9a2b25Ashok Bhat reinterpret_cast<GLvoid *>(offset) 492d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 493d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 494d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 495d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glTexImage3D ( GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const GLvoid *pixels ) */ 496d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 497d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glTexImage3D__IIIIIIIIILjava_nio_Buffer_2 498d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse 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) { 499d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jarray _array = (jarray) 0; 500d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _bufferOffset = (jint) 0; 501d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _remaining; 502d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLvoid *pixels = (GLvoid *) 0; 503d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 5046aff9068f91fdfef0bc55fda0721c180c0de9284Pablo Ceballos if (pixels_buf) { 5056aff9068f91fdfef0bc55fda0721c180c0de9284Pablo Ceballos pixels = (GLvoid *)getPointer(_env, pixels_buf, (jarray*)&_array, &_remaining, &_bufferOffset); 5066aff9068f91fdfef0bc55fda0721c180c0de9284Pablo Ceballos } 5076aff9068f91fdfef0bc55fda0721c180c0de9284Pablo Ceballos if (pixels_buf && pixels == NULL) { 508d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall char * _pixelsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); 509d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall pixels = (GLvoid *) (_pixelsBase + _bufferOffset); 510d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 511d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glTexImage3D( 512d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)target, 513d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint)level, 514d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint)internalformat, 515d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)width, 516d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)height, 517d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)depth, 518d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint)border, 519d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)format, 520d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)type, 521d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLvoid *)pixels 522d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 523d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_array) { 524d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall releasePointer(_env, _array, pixels, JNI_FALSE); 525d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 526d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 527d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 528d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glTexImage3D ( GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, GLsizei offset ) */ 529d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 530d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glTexImage3D__IIIIIIIIII 531d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse 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) { 532d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glTexImage3D( 533d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)target, 534d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint)level, 535d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint)internalformat, 536d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)width, 537d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)height, 538d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)depth, 539d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint)border, 540d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)format, 541d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)type, 54201c26ea89d4bbea3cf550e9328742302dd9a2b25Ashok Bhat reinterpret_cast<GLvoid *>(offset) 543d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 544d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 545d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 546d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse 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 ) */ 547d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 548d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glTexSubImage3D__IIIIIIIIIILjava_nio_Buffer_2 549d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse 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) { 550d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jarray _array = (jarray) 0; 551d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _bufferOffset = (jint) 0; 552d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _remaining; 553d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLvoid *pixels = (GLvoid *) 0; 554d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 5553b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi pixels = (GLvoid *)getPointer(_env, pixels_buf, (jarray*)&_array, &_remaining, &_bufferOffset); 556d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (pixels == NULL) { 557d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall char * _pixelsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); 558d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall pixels = (GLvoid *) (_pixelsBase + _bufferOffset); 559d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 560d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glTexSubImage3D( 561d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)target, 562d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint)level, 563d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint)xoffset, 564d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint)yoffset, 565d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint)zoffset, 566d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)width, 567d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)height, 568d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)depth, 569d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)format, 570d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)type, 571d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLvoid *)pixels 572d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 573d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_array) { 574d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall releasePointer(_env, _array, pixels, JNI_FALSE); 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, GLsizei offset ) */ 579d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 580d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glTexSubImage3D__IIIIIIIIIII 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, jint offset) { 582d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glTexSubImage3D( 583d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)target, 584d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint)level, 585d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint)xoffset, 586d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint)yoffset, 587d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint)zoffset, 588d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)width, 589d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)height, 590d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)depth, 591d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)format, 592d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)type, 59301c26ea89d4bbea3cf550e9328742302dd9a2b25Ashok Bhat reinterpret_cast<GLvoid *>(offset) 594d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 595d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 596d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 597d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glCopyTexSubImage3D ( GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height ) */ 598d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 599d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glCopyTexSubImage3D__IIIIIIIII 600d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint target, jint level, jint xoffset, jint yoffset, jint zoffset, jint x, jint y, jint width, jint height) { 601d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glCopyTexSubImage3D( 602d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)target, 603d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint)level, 604d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint)xoffset, 605d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint)yoffset, 606d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint)zoffset, 607d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint)x, 608d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint)y, 609d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)width, 610d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)height 611d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 612d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 613d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 614d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glCompressedTexImage3D ( GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const GLvoid *data ) */ 615d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 616d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glCompressedTexImage3D__IIIIIIIILjava_nio_Buffer_2 617d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint target, jint level, jint internalformat, jint width, jint height, jint depth, jint border, jint imageSize, jobject data_buf) { 618d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jarray _array = (jarray) 0; 619d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _bufferOffset = (jint) 0; 620d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _remaining; 621d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLvoid *data = (GLvoid *) 0; 622d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 6233b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi data = (GLvoid *)getPointer(_env, data_buf, (jarray*)&_array, &_remaining, &_bufferOffset); 624d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (data == NULL) { 625d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall char * _dataBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); 626d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall data = (GLvoid *) (_dataBase + _bufferOffset); 627d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 628d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glCompressedTexImage3D( 629d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)target, 630d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint)level, 631d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)internalformat, 632d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)width, 633d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)height, 634d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)depth, 635d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint)border, 636d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)imageSize, 637d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLvoid *)data 638d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 639d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_array) { 640d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall releasePointer(_env, _array, data, JNI_FALSE); 641d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 642d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 643d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 644d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glCompressedTexImage3D ( GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, GLsizei offset ) */ 645d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 646d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glCompressedTexImage3D__IIIIIIIII 647d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint target, jint level, jint internalformat, jint width, jint height, jint depth, jint border, jint imageSize, jint offset) { 648d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glCompressedTexImage3D( 649d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)target, 650d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint)level, 651d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)internalformat, 652d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)width, 653d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)height, 654d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)depth, 655d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint)border, 656d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)imageSize, 65701c26ea89d4bbea3cf550e9328742302dd9a2b25Ashok Bhat reinterpret_cast<GLvoid *>(offset) 658d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 659d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 660d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 661d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse 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 ) */ 662d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 663d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glCompressedTexSubImage3D__IIIIIIIIIILjava_nio_Buffer_2 664d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse 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) { 665d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jarray _array = (jarray) 0; 666d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _bufferOffset = (jint) 0; 667d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _remaining; 668d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLvoid *data = (GLvoid *) 0; 669d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 6703b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi data = (GLvoid *)getPointer(_env, data_buf, (jarray*)&_array, &_remaining, &_bufferOffset); 671d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (data == NULL) { 672d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall char * _dataBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); 673d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall data = (GLvoid *) (_dataBase + _bufferOffset); 674d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 675d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glCompressedTexSubImage3D( 676d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)target, 677d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint)level, 678d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint)xoffset, 679d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint)yoffset, 680d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint)zoffset, 681d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)width, 682d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)height, 683d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)depth, 684d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)format, 685d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)imageSize, 686d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLvoid *)data 687d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 688d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_array) { 689d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall releasePointer(_env, _array, data, JNI_FALSE); 690d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 691d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 692d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 693d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse 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 ) */ 694d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 695d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glCompressedTexSubImage3D__IIIIIIIIIII 696d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse 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) { 697d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glCompressedTexSubImage3D( 698d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)target, 699d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint)level, 700d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint)xoffset, 701d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint)yoffset, 702d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint)zoffset, 703d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)width, 704d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)height, 705d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)depth, 706d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)format, 707d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)imageSize, 70801c26ea89d4bbea3cf550e9328742302dd9a2b25Ashok Bhat reinterpret_cast<GLvoid *>(offset) 709d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 710d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 711d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 712d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glGenQueries ( GLsizei n, GLuint *ids ) */ 713d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 714d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glGenQueries__I_3II 715d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint n, jintArray ids_ref, jint offset) { 716d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _exception = 0; 717d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char * _exceptionType = NULL; 718d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char * _exceptionMessage = NULL; 719d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLuint *ids_base = (GLuint *) 0; 720d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _remaining; 721d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLuint *ids = (GLuint *) 0; 722d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 723d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (!ids_ref) { 724d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 725d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 726d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "ids == null"; 727d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 728d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 729d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (offset < 0) { 730d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 731d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 732d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "offset < 0"; 733d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 734d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 735d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _remaining = _env->GetArrayLength(ids_ref) - offset; 736d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ids_base = (GLuint *) 7373b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->GetIntArrayElements(ids_ref, (jboolean *)0); 738d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ids = ids_base + offset; 739d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 740d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glGenQueries( 741d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)n, 742d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint *)ids 743d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 744d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 745d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallexit: 746d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (ids_base) { 7473b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseIntArrayElements(ids_ref, (jint*)ids_base, 748d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception ? JNI_ABORT: 0); 749d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 750d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_exception) { 751d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jniThrowException(_env, _exceptionType, _exceptionMessage); 752d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 753d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 754d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 755d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glGenQueries ( GLsizei n, GLuint *ids ) */ 756d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 757d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glGenQueries__ILjava_nio_IntBuffer_2 758d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint n, jobject ids_buf) { 7593b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi jintArray _array = (jintArray) 0; 760d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _bufferOffset = (jint) 0; 761d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _remaining; 762d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLuint *ids = (GLuint *) 0; 763d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 7643b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi ids = (GLuint *)getPointer(_env, ids_buf, (jarray*)&_array, &_remaining, &_bufferOffset); 765d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (ids == NULL) { 7663b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi char * _idsBase = (char *)_env->GetIntArrayElements(_array, (jboolean *) 0); 767d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ids = (GLuint *) (_idsBase + _bufferOffset); 768d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 769d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glGenQueries( 770d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)n, 771d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint *)ids 772d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 773d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_array) { 7743b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseIntArrayElements(_array, (jint*)ids, 0); 775d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 776d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 777d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 778d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glDeleteQueries ( GLsizei n, const GLuint *ids ) */ 779d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 780d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glDeleteQueries__I_3II 781d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint n, jintArray ids_ref, jint offset) { 782d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _exception = 0; 783d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char * _exceptionType = NULL; 784d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char * _exceptionMessage = NULL; 785d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLuint *ids_base = (GLuint *) 0; 786d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _remaining; 787d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLuint *ids = (GLuint *) 0; 788d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 789d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (!ids_ref) { 790d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 791d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 792d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "ids == null"; 793d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 794d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 795d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (offset < 0) { 796d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 797d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 798d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "offset < 0"; 799d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 800d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 801d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _remaining = _env->GetArrayLength(ids_ref) - offset; 802d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ids_base = (GLuint *) 8033b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->GetIntArrayElements(ids_ref, (jboolean *)0); 804d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ids = ids_base + offset; 805d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 806d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glDeleteQueries( 807d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)n, 808d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint *)ids 809d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 810d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 811d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallexit: 812d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (ids_base) { 8133b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseIntArrayElements(ids_ref, (jint*)ids_base, 814d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall JNI_ABORT); 815d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 816d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_exception) { 817d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jniThrowException(_env, _exceptionType, _exceptionMessage); 818d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 819d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 820d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 821d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glDeleteQueries ( GLsizei n, const GLuint *ids ) */ 822d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 823d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glDeleteQueries__ILjava_nio_IntBuffer_2 824d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint n, jobject ids_buf) { 8253b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi jintArray _array = (jintArray) 0; 826d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _bufferOffset = (jint) 0; 827d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _remaining; 828d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLuint *ids = (GLuint *) 0; 829d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 8303b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi ids = (GLuint *)getPointer(_env, ids_buf, (jarray*)&_array, &_remaining, &_bufferOffset); 831d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (ids == NULL) { 8323b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi char * _idsBase = (char *)_env->GetIntArrayElements(_array, (jboolean *) 0); 833d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ids = (GLuint *) (_idsBase + _bufferOffset); 834d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 835d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glDeleteQueries( 836d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)n, 837d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint *)ids 838d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 839d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_array) { 8403b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseIntArrayElements(_array, (jint*)ids, JNI_ABORT); 841d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 842d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 843d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 844d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* GLboolean glIsQuery ( GLuint id ) */ 845d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic jboolean 846d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glIsQuery__I 847d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint id) { 848d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLboolean _returnValue; 849d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _returnValue = glIsQuery( 850d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint)id 851d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 852d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall return (jboolean)_returnValue; 853d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 854d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 855d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glBeginQuery ( GLenum target, GLuint id ) */ 856d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 857d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glBeginQuery__II 858d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint target, jint id) { 859d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glBeginQuery( 860d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)target, 861d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint)id 862d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 863d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 864d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 865d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glEndQuery ( GLenum target ) */ 866d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 867d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glEndQuery__I 868d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint target) { 869d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glEndQuery( 870d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)target 871d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 872d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 873d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 874d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glGetQueryiv ( GLenum target, GLenum pname, GLint *params ) */ 875d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 876d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glGetQueryiv__II_3II 877d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint target, jint pname, jintArray params_ref, jint offset) { 878d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _exception = 0; 879d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char * _exceptionType = NULL; 880d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char * _exceptionMessage = NULL; 881d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLint *params_base = (GLint *) 0; 882d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _remaining; 883d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLint *params = (GLint *) 0; 884d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 885d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (!params_ref) { 886d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 887d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 888d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "params == null"; 889d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 890d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 891d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (offset < 0) { 892d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 893d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 894d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "offset < 0"; 895d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 896d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 897d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _remaining = _env->GetArrayLength(params_ref) - offset; 898d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall params_base = (GLint *) 8993b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->GetIntArrayElements(params_ref, (jboolean *)0); 900d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall params = params_base + offset; 901d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 902d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glGetQueryiv( 903d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)target, 904d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)pname, 905d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint *)params 906d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 907d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 908d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallexit: 909d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (params_base) { 9103b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseIntArrayElements(params_ref, (jint*)params_base, 911d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception ? JNI_ABORT: 0); 912d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 913d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_exception) { 914d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jniThrowException(_env, _exceptionType, _exceptionMessage); 915d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 916d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 917d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 918d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glGetQueryiv ( GLenum target, GLenum pname, GLint *params ) */ 919d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 920d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glGetQueryiv__IILjava_nio_IntBuffer_2 921d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint target, jint pname, jobject params_buf) { 9223b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi jintArray _array = (jintArray) 0; 923d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _bufferOffset = (jint) 0; 924d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _remaining; 925d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLint *params = (GLint *) 0; 926d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 9273b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi params = (GLint *)getPointer(_env, params_buf, (jarray*)&_array, &_remaining, &_bufferOffset); 928d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (params == NULL) { 9293b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi char * _paramsBase = (char *)_env->GetIntArrayElements(_array, (jboolean *) 0); 930d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall params = (GLint *) (_paramsBase + _bufferOffset); 931d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 932d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glGetQueryiv( 933d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)target, 934d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)pname, 935d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint *)params 936d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 937d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_array) { 9383b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseIntArrayElements(_array, (jint*)params, 0); 939d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 940d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 941d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 942d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glGetQueryObjectuiv ( GLuint id, GLenum pname, GLuint *params ) */ 943d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 944d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glGetQueryObjectuiv__II_3II 945d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint id, jint pname, jintArray params_ref, jint offset) { 946d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _exception = 0; 947d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char * _exceptionType = NULL; 948d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char * _exceptionMessage = NULL; 949d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLuint *params_base = (GLuint *) 0; 950d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _remaining; 951d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLuint *params = (GLuint *) 0; 952d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 953d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (!params_ref) { 954d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 955d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 956d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "params == null"; 957d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 958d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 959d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (offset < 0) { 960d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 961d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 962d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "offset < 0"; 963d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 964d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 965d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _remaining = _env->GetArrayLength(params_ref) - offset; 966d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall params_base = (GLuint *) 9673b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->GetIntArrayElements(params_ref, (jboolean *)0); 968d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall params = params_base + offset; 969d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 970d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glGetQueryObjectuiv( 971d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint)id, 972d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)pname, 973d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint *)params 974d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 975d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 976d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallexit: 977d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (params_base) { 9783b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseIntArrayElements(params_ref, (jint*)params_base, 979d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception ? JNI_ABORT: 0); 980d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 981d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_exception) { 982d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jniThrowException(_env, _exceptionType, _exceptionMessage); 983d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 984d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 985d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 986d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glGetQueryObjectuiv ( GLuint id, GLenum pname, GLuint *params ) */ 987d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 988d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glGetQueryObjectuiv__IILjava_nio_IntBuffer_2 989d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint id, jint pname, jobject params_buf) { 9903b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi jintArray _array = (jintArray) 0; 991d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _bufferOffset = (jint) 0; 992d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _remaining; 993d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLuint *params = (GLuint *) 0; 994d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 9953b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi params = (GLuint *)getPointer(_env, params_buf, (jarray*)&_array, &_remaining, &_bufferOffset); 996d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (params == NULL) { 9973b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi char * _paramsBase = (char *)_env->GetIntArrayElements(_array, (jboolean *) 0); 998d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall params = (GLuint *) (_paramsBase + _bufferOffset); 999d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 1000d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glGetQueryObjectuiv( 1001d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint)id, 1002d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)pname, 1003d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint *)params 1004d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 1005d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_array) { 10063b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseIntArrayElements(_array, (jint*)params, 0); 1007d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 1008d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 1009d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 1010d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* GLboolean glUnmapBuffer ( GLenum target ) */ 1011d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic jboolean 1012d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glUnmapBuffer__I 1013d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint target) { 1014d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLboolean _returnValue; 1015d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _returnValue = glUnmapBuffer( 1016d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)target 1017d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 1018d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall return (jboolean)_returnValue; 1019d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 1020d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 1021d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glGetBufferPointerv ( GLenum target, GLenum pname, GLvoid** params ) */ 1022d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic jobject 1023d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glGetBufferPointerv__II 1024d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint target, jint pname) { 1025d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLint64 _mapLength; 1026d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLvoid* _p; 1027d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glGetBufferParameteri64v((GLenum)target, GL_BUFFER_MAP_LENGTH, &_mapLength); 1028d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glGetBufferPointerv((GLenum)target, (GLenum)pname, &_p); 1029d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall return _env->NewDirectByteBuffer(_p, _mapLength); 1030d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 1031d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 1032d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glDrawBuffers ( GLsizei n, const GLenum *bufs ) */ 1033d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 1034d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glDrawBuffers__I_3II 1035d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint n, jintArray bufs_ref, jint offset) { 1036d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _exception = 0; 1037d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char * _exceptionType = NULL; 1038d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char * _exceptionMessage = NULL; 1039d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLenum *bufs_base = (GLenum *) 0; 1040d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _remaining; 1041d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLenum *bufs = (GLenum *) 0; 1042d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 1043d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (!bufs_ref) { 1044d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 1045d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 1046d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "bufs == null"; 1047d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 1048d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 1049d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (offset < 0) { 1050d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 1051d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 1052d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "offset < 0"; 1053d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 1054d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 1055d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _remaining = _env->GetArrayLength(bufs_ref) - offset; 1056d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall bufs_base = (GLenum *) 10573b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->GetIntArrayElements(bufs_ref, (jboolean *)0); 1058d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall bufs = bufs_base + offset; 1059d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 1060d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glDrawBuffers( 1061d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)n, 1062d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum *)bufs 1063d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 1064d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 1065d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallexit: 1066d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (bufs_base) { 10673b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseIntArrayElements(bufs_ref, (jint*)bufs_base, 1068d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall JNI_ABORT); 1069d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 1070d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_exception) { 1071d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jniThrowException(_env, _exceptionType, _exceptionMessage); 1072d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 1073d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 1074d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 1075d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glDrawBuffers ( GLsizei n, const GLenum *bufs ) */ 1076d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 1077d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glDrawBuffers__ILjava_nio_IntBuffer_2 1078d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint n, jobject bufs_buf) { 10793b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi jintArray _array = (jintArray) 0; 1080d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _bufferOffset = (jint) 0; 1081d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _remaining; 1082d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLenum *bufs = (GLenum *) 0; 1083d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 10843b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi bufs = (GLenum *)getPointer(_env, bufs_buf, (jarray*)&_array, &_remaining, &_bufferOffset); 1085d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (bufs == NULL) { 10863b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi char * _bufsBase = (char *)_env->GetIntArrayElements(_array, (jboolean *) 0); 1087d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall bufs = (GLenum *) (_bufsBase + _bufferOffset); 1088d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 1089d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glDrawBuffers( 1090d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)n, 1091d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum *)bufs 1092d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 1093d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_array) { 10943b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseIntArrayElements(_array, (jint*)bufs, JNI_ABORT); 1095d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 1096d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 1097d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 1098d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glUniformMatrix2x3fv ( GLint location, GLsizei count, GLboolean transpose, const GLfloat *value ) */ 1099d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 1100d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glUniformMatrix2x3fv__IIZ_3FI 1101d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint location, jint count, jboolean transpose, jfloatArray value_ref, jint offset) { 1102d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _exception = 0; 1103d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char * _exceptionType = NULL; 1104d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char * _exceptionMessage = NULL; 1105d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLfloat *value_base = (GLfloat *) 0; 1106d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _remaining; 1107d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLfloat *value = (GLfloat *) 0; 1108d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 1109d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (!value_ref) { 1110d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 1111d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 1112d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "value == null"; 1113d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 1114d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 1115d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (offset < 0) { 1116d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 1117d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 1118d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "offset < 0"; 1119d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 1120d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 1121d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _remaining = _env->GetArrayLength(value_ref) - offset; 1122d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall value_base = (GLfloat *) 11233b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->GetFloatArrayElements(value_ref, (jboolean *)0); 1124d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall value = value_base + offset; 1125d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 1126d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glUniformMatrix2x3fv( 1127d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint)location, 1128d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)count, 1129d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLboolean)transpose, 1130d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLfloat *)value 1131d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 1132d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 1133d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallexit: 1134d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (value_base) { 11353b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseFloatArrayElements(value_ref, (jfloat*)value_base, 1136d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall JNI_ABORT); 1137d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 1138d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_exception) { 1139d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jniThrowException(_env, _exceptionType, _exceptionMessage); 1140d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 1141d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 1142d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 1143d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glUniformMatrix2x3fv ( GLint location, GLsizei count, GLboolean transpose, const GLfloat *value ) */ 1144d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 1145d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glUniformMatrix2x3fv__IIZLjava_nio_FloatBuffer_2 1146d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint location, jint count, jboolean transpose, jobject value_buf) { 11473b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi jfloatArray _array = (jfloatArray) 0; 1148d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _bufferOffset = (jint) 0; 1149d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _remaining; 1150d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLfloat *value = (GLfloat *) 0; 1151d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 11523b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi value = (GLfloat *)getPointer(_env, value_buf, (jarray*)&_array, &_remaining, &_bufferOffset); 1153d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (value == NULL) { 11543b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi char * _valueBase = (char *)_env->GetFloatArrayElements(_array, (jboolean *) 0); 1155d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall value = (GLfloat *) (_valueBase + _bufferOffset); 1156d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 1157d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glUniformMatrix2x3fv( 1158d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint)location, 1159d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)count, 1160d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLboolean)transpose, 1161d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLfloat *)value 1162d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 1163d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_array) { 11643b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseFloatArrayElements(_array, (jfloat*)value, JNI_ABORT); 1165d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 1166d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 1167d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 1168d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glUniformMatrix3x2fv ( GLint location, GLsizei count, GLboolean transpose, const GLfloat *value ) */ 1169d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 1170d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glUniformMatrix3x2fv__IIZ_3FI 1171d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint location, jint count, jboolean transpose, jfloatArray value_ref, jint offset) { 1172d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _exception = 0; 1173d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char * _exceptionType = NULL; 1174d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char * _exceptionMessage = NULL; 1175d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLfloat *value_base = (GLfloat *) 0; 1176d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _remaining; 1177d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLfloat *value = (GLfloat *) 0; 1178d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 1179d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (!value_ref) { 1180d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 1181d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 1182d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "value == null"; 1183d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 1184d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 1185d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (offset < 0) { 1186d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 1187d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 1188d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "offset < 0"; 1189d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 1190d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 1191d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _remaining = _env->GetArrayLength(value_ref) - offset; 1192d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall value_base = (GLfloat *) 11933b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->GetFloatArrayElements(value_ref, (jboolean *)0); 1194d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall value = value_base + offset; 1195d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 1196d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glUniformMatrix3x2fv( 1197d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint)location, 1198d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)count, 1199d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLboolean)transpose, 1200d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLfloat *)value 1201d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 1202d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 1203d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallexit: 1204d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (value_base) { 12053b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseFloatArrayElements(value_ref, (jfloat*)value_base, 1206d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall JNI_ABORT); 1207d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 1208d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_exception) { 1209d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jniThrowException(_env, _exceptionType, _exceptionMessage); 1210d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 1211d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 1212d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 1213d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glUniformMatrix3x2fv ( GLint location, GLsizei count, GLboolean transpose, const GLfloat *value ) */ 1214d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 1215d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glUniformMatrix3x2fv__IIZLjava_nio_FloatBuffer_2 1216d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint location, jint count, jboolean transpose, jobject value_buf) { 12173b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi jfloatArray _array = (jfloatArray) 0; 1218d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _bufferOffset = (jint) 0; 1219d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _remaining; 1220d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLfloat *value = (GLfloat *) 0; 1221d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 12223b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi value = (GLfloat *)getPointer(_env, value_buf, (jarray*)&_array, &_remaining, &_bufferOffset); 1223d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (value == NULL) { 12243b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi char * _valueBase = (char *)_env->GetFloatArrayElements(_array, (jboolean *) 0); 1225d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall value = (GLfloat *) (_valueBase + _bufferOffset); 1226d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 1227d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glUniformMatrix3x2fv( 1228d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint)location, 1229d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)count, 1230d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLboolean)transpose, 1231d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLfloat *)value 1232d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 1233d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_array) { 12343b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseFloatArrayElements(_array, (jfloat*)value, JNI_ABORT); 1235d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 1236d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 1237d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 1238d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glUniformMatrix2x4fv ( GLint location, GLsizei count, GLboolean transpose, const GLfloat *value ) */ 1239d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 1240d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glUniformMatrix2x4fv__IIZ_3FI 1241d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint location, jint count, jboolean transpose, jfloatArray value_ref, jint offset) { 1242d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _exception = 0; 1243d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char * _exceptionType = NULL; 1244d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char * _exceptionMessage = NULL; 1245d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLfloat *value_base = (GLfloat *) 0; 1246d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _remaining; 1247d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLfloat *value = (GLfloat *) 0; 1248d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 1249d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (!value_ref) { 1250d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 1251d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 1252d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "value == null"; 1253d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 1254d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 1255d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (offset < 0) { 1256d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 1257d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 1258d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "offset < 0"; 1259d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 1260d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 1261d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _remaining = _env->GetArrayLength(value_ref) - offset; 1262d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall value_base = (GLfloat *) 12633b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->GetFloatArrayElements(value_ref, (jboolean *)0); 1264d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall value = value_base + offset; 1265d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 1266d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glUniformMatrix2x4fv( 1267d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint)location, 1268d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)count, 1269d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLboolean)transpose, 1270d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLfloat *)value 1271d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 1272d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 1273d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallexit: 1274d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (value_base) { 12753b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseFloatArrayElements(value_ref, (jfloat*)value_base, 1276d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall JNI_ABORT); 1277d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 1278d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_exception) { 1279d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jniThrowException(_env, _exceptionType, _exceptionMessage); 1280d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 1281d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 1282d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 1283d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glUniformMatrix2x4fv ( GLint location, GLsizei count, GLboolean transpose, const GLfloat *value ) */ 1284d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 1285d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glUniformMatrix2x4fv__IIZLjava_nio_FloatBuffer_2 1286d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint location, jint count, jboolean transpose, jobject value_buf) { 12873b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi jfloatArray _array = (jfloatArray) 0; 1288d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _bufferOffset = (jint) 0; 1289d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _remaining; 1290d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLfloat *value = (GLfloat *) 0; 1291d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 12923b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi value = (GLfloat *)getPointer(_env, value_buf, (jarray*)&_array, &_remaining, &_bufferOffset); 1293d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (value == NULL) { 12943b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi char * _valueBase = (char *)_env->GetFloatArrayElements(_array, (jboolean *) 0); 1295d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall value = (GLfloat *) (_valueBase + _bufferOffset); 1296d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 1297d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glUniformMatrix2x4fv( 1298d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint)location, 1299d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)count, 1300d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLboolean)transpose, 1301d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLfloat *)value 1302d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 1303d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_array) { 13043b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseFloatArrayElements(_array, (jfloat*)value, JNI_ABORT); 1305d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 1306d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 1307d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 1308d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glUniformMatrix4x2fv ( GLint location, GLsizei count, GLboolean transpose, const GLfloat *value ) */ 1309d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 1310d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glUniformMatrix4x2fv__IIZ_3FI 1311d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint location, jint count, jboolean transpose, jfloatArray value_ref, jint offset) { 1312d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _exception = 0; 1313d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char * _exceptionType = NULL; 1314d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char * _exceptionMessage = NULL; 1315d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLfloat *value_base = (GLfloat *) 0; 1316d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _remaining; 1317d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLfloat *value = (GLfloat *) 0; 1318d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 1319d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (!value_ref) { 1320d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 1321d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 1322d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "value == null"; 1323d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 1324d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 1325d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (offset < 0) { 1326d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 1327d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 1328d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "offset < 0"; 1329d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 1330d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 1331d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _remaining = _env->GetArrayLength(value_ref) - offset; 1332d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall value_base = (GLfloat *) 13333b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->GetFloatArrayElements(value_ref, (jboolean *)0); 1334d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall value = value_base + offset; 1335d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 1336d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glUniformMatrix4x2fv( 1337d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint)location, 1338d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)count, 1339d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLboolean)transpose, 1340d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLfloat *)value 1341d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 1342d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 1343d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallexit: 1344d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (value_base) { 13453b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseFloatArrayElements(value_ref, (jfloat*)value_base, 1346d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall JNI_ABORT); 1347d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 1348d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_exception) { 1349d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jniThrowException(_env, _exceptionType, _exceptionMessage); 1350d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 1351d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 1352d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 1353d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glUniformMatrix4x2fv ( GLint location, GLsizei count, GLboolean transpose, const GLfloat *value ) */ 1354d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 1355d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glUniformMatrix4x2fv__IIZLjava_nio_FloatBuffer_2 1356d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint location, jint count, jboolean transpose, jobject value_buf) { 13573b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi jfloatArray _array = (jfloatArray) 0; 1358d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _bufferOffset = (jint) 0; 1359d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _remaining; 1360d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLfloat *value = (GLfloat *) 0; 1361d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 13623b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi value = (GLfloat *)getPointer(_env, value_buf, (jarray*)&_array, &_remaining, &_bufferOffset); 1363d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (value == NULL) { 13643b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi char * _valueBase = (char *)_env->GetFloatArrayElements(_array, (jboolean *) 0); 1365d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall value = (GLfloat *) (_valueBase + _bufferOffset); 1366d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 1367d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glUniformMatrix4x2fv( 1368d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint)location, 1369d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)count, 1370d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLboolean)transpose, 1371d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLfloat *)value 1372d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 1373d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_array) { 13743b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseFloatArrayElements(_array, (jfloat*)value, JNI_ABORT); 1375d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 1376d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 1377d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 1378d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glUniformMatrix3x4fv ( GLint location, GLsizei count, GLboolean transpose, const GLfloat *value ) */ 1379d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 1380d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glUniformMatrix3x4fv__IIZ_3FI 1381d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint location, jint count, jboolean transpose, jfloatArray value_ref, jint offset) { 1382d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _exception = 0; 1383d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char * _exceptionType = NULL; 1384d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char * _exceptionMessage = NULL; 1385d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLfloat *value_base = (GLfloat *) 0; 1386d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _remaining; 1387d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLfloat *value = (GLfloat *) 0; 1388d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 1389d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (!value_ref) { 1390d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 1391d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 1392d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "value == null"; 1393d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 1394d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 1395d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (offset < 0) { 1396d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 1397d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 1398d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "offset < 0"; 1399d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 1400d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 1401d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _remaining = _env->GetArrayLength(value_ref) - offset; 1402d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall value_base = (GLfloat *) 14033b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->GetFloatArrayElements(value_ref, (jboolean *)0); 1404d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall value = value_base + offset; 1405d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 1406d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glUniformMatrix3x4fv( 1407d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint)location, 1408d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)count, 1409d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLboolean)transpose, 1410d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLfloat *)value 1411d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 1412d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 1413d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallexit: 1414d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (value_base) { 14153b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseFloatArrayElements(value_ref, (jfloat*)value_base, 1416d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall JNI_ABORT); 1417d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 1418d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_exception) { 1419d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jniThrowException(_env, _exceptionType, _exceptionMessage); 1420d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 1421d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 1422d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 1423d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glUniformMatrix3x4fv ( GLint location, GLsizei count, GLboolean transpose, const GLfloat *value ) */ 1424d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 1425d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glUniformMatrix3x4fv__IIZLjava_nio_FloatBuffer_2 1426d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint location, jint count, jboolean transpose, jobject value_buf) { 14273b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi jfloatArray _array = (jfloatArray) 0; 1428d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _bufferOffset = (jint) 0; 1429d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _remaining; 1430d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLfloat *value = (GLfloat *) 0; 1431d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 14323b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi value = (GLfloat *)getPointer(_env, value_buf, (jarray*)&_array, &_remaining, &_bufferOffset); 1433d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (value == NULL) { 14343b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi char * _valueBase = (char *)_env->GetFloatArrayElements(_array, (jboolean *) 0); 1435d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall value = (GLfloat *) (_valueBase + _bufferOffset); 1436d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 1437d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glUniformMatrix3x4fv( 1438d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint)location, 1439d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)count, 1440d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLboolean)transpose, 1441d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLfloat *)value 1442d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 1443d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_array) { 14443b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseFloatArrayElements(_array, (jfloat*)value, JNI_ABORT); 1445d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 1446d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 1447d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 1448d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glUniformMatrix4x3fv ( GLint location, GLsizei count, GLboolean transpose, const GLfloat *value ) */ 1449d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 1450d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glUniformMatrix4x3fv__IIZ_3FI 1451d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint location, jint count, jboolean transpose, jfloatArray value_ref, jint offset) { 1452d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _exception = 0; 1453d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char * _exceptionType = NULL; 1454d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char * _exceptionMessage = NULL; 1455d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLfloat *value_base = (GLfloat *) 0; 1456d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _remaining; 1457d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLfloat *value = (GLfloat *) 0; 1458d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 1459d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (!value_ref) { 1460d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 1461d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 1462d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "value == null"; 1463d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 1464d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 1465d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (offset < 0) { 1466d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 1467d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 1468d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "offset < 0"; 1469d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 1470d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 1471d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _remaining = _env->GetArrayLength(value_ref) - offset; 1472d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall value_base = (GLfloat *) 14733b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->GetFloatArrayElements(value_ref, (jboolean *)0); 1474d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall value = value_base + offset; 1475d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 1476d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glUniformMatrix4x3fv( 1477d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint)location, 1478d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)count, 1479d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLboolean)transpose, 1480d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLfloat *)value 1481d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 1482d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 1483d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallexit: 1484d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (value_base) { 14853b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseFloatArrayElements(value_ref, (jfloat*)value_base, 1486d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall JNI_ABORT); 1487d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 1488d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_exception) { 1489d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jniThrowException(_env, _exceptionType, _exceptionMessage); 1490d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 1491d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 1492d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 1493d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glUniformMatrix4x3fv ( GLint location, GLsizei count, GLboolean transpose, const GLfloat *value ) */ 1494d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 1495d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glUniformMatrix4x3fv__IIZLjava_nio_FloatBuffer_2 1496d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint location, jint count, jboolean transpose, jobject value_buf) { 14973b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi jfloatArray _array = (jfloatArray) 0; 1498d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _bufferOffset = (jint) 0; 1499d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _remaining; 1500d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLfloat *value = (GLfloat *) 0; 1501d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 15023b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi value = (GLfloat *)getPointer(_env, value_buf, (jarray*)&_array, &_remaining, &_bufferOffset); 1503d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (value == NULL) { 15043b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi char * _valueBase = (char *)_env->GetFloatArrayElements(_array, (jboolean *) 0); 1505d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall value = (GLfloat *) (_valueBase + _bufferOffset); 1506d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 1507d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glUniformMatrix4x3fv( 1508d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint)location, 1509d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)count, 1510d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLboolean)transpose, 1511d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLfloat *)value 1512d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 1513d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_array) { 15143b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseFloatArrayElements(_array, (jfloat*)value, JNI_ABORT); 1515d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 1516d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 1517d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 1518d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glBlitFramebuffer ( GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter ) */ 1519d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 1520d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glBlitFramebuffer__IIIIIIIIII 1521d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse 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) { 1522d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glBlitFramebuffer( 1523d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint)srcX0, 1524d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint)srcY0, 1525d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint)srcX1, 1526d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint)srcY1, 1527d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint)dstX0, 1528d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint)dstY0, 1529d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint)dstX1, 1530d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint)dstY1, 1531d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLbitfield)mask, 1532d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)filter 1533d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 1534d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 1535d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 1536d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glRenderbufferStorageMultisample ( GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height ) */ 1537d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 1538d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glRenderbufferStorageMultisample__IIIII 1539d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint target, jint samples, jint internalformat, jint width, jint height) { 1540d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glRenderbufferStorageMultisample( 1541d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)target, 1542d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)samples, 1543d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)internalformat, 1544d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)width, 1545d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)height 1546d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 1547d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 1548d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 1549d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glFramebufferTextureLayer ( GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer ) */ 1550d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 1551d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glFramebufferTextureLayer__IIIII 1552d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint target, jint attachment, jint texture, jint level, jint layer) { 1553d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glFramebufferTextureLayer( 1554d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)target, 1555d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)attachment, 1556d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint)texture, 1557d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint)level, 1558d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint)layer 1559d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 1560d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 1561d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 1562d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* GLvoid * glMapBufferRange ( GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access ) */ 1563d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic jobject 1564d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glMapBufferRange__IIII 1565d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint target, jint offset, jint length, jint access) { 1566d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLvoid* _p = glMapBufferRange((GLenum)target, 1567d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLintptr)offset, (GLsizeiptr)length, (GLbitfield)access); 1568d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jobject _buf = (jobject)0; 1569d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_p) { 1570d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _buf = _env->NewDirectByteBuffer(_p, length); 1571d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 1572d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall return _buf; 1573d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 1574d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 1575d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glFlushMappedBufferRange ( GLenum target, GLintptr offset, GLsizeiptr length ) */ 1576d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 1577d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glFlushMappedBufferRange__III 1578d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint target, jint offset, jint length) { 1579d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glFlushMappedBufferRange( 1580d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)target, 1581d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLintptr)offset, 1582d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizeiptr)length 1583d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 1584d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 1585d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 1586d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glBindVertexArray ( GLuint array ) */ 1587d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 1588d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glBindVertexArray__I 1589d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint array) { 1590d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glBindVertexArray( 1591d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint)array 1592d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 1593d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 1594d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 1595d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glDeleteVertexArrays ( GLsizei n, const GLuint *arrays ) */ 1596d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 1597d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glDeleteVertexArrays__I_3II 1598d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint n, jintArray arrays_ref, jint offset) { 1599d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _exception = 0; 1600d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char * _exceptionType = NULL; 1601d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char * _exceptionMessage = NULL; 1602d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLuint *arrays_base = (GLuint *) 0; 1603d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _remaining; 1604d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLuint *arrays = (GLuint *) 0; 1605d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 1606d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (!arrays_ref) { 1607d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 1608d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 1609d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "arrays == null"; 1610d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 1611d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 1612d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (offset < 0) { 1613d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 1614d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 1615d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "offset < 0"; 1616d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 1617d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 1618d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _remaining = _env->GetArrayLength(arrays_ref) - offset; 1619d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall arrays_base = (GLuint *) 16203b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->GetIntArrayElements(arrays_ref, (jboolean *)0); 1621d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall arrays = arrays_base + offset; 1622d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 1623d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glDeleteVertexArrays( 1624d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)n, 1625d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint *)arrays 1626d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 1627d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 1628d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallexit: 1629d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (arrays_base) { 16303b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseIntArrayElements(arrays_ref, (jint*)arrays_base, 1631d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall JNI_ABORT); 1632d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 1633d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_exception) { 1634d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jniThrowException(_env, _exceptionType, _exceptionMessage); 1635d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 1636d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 1637d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 1638d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glDeleteVertexArrays ( GLsizei n, const GLuint *arrays ) */ 1639d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 1640d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glDeleteVertexArrays__ILjava_nio_IntBuffer_2 1641d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint n, jobject arrays_buf) { 16423b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi jintArray _array = (jintArray) 0; 1643d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _bufferOffset = (jint) 0; 1644d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _remaining; 1645d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLuint *arrays = (GLuint *) 0; 1646d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 16473b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi arrays = (GLuint *)getPointer(_env, arrays_buf, (jarray*)&_array, &_remaining, &_bufferOffset); 1648d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (arrays == NULL) { 16493b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi char * _arraysBase = (char *)_env->GetIntArrayElements(_array, (jboolean *) 0); 1650d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall arrays = (GLuint *) (_arraysBase + _bufferOffset); 1651d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 1652d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glDeleteVertexArrays( 1653d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)n, 1654d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint *)arrays 1655d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 1656d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_array) { 16573b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseIntArrayElements(_array, (jint*)arrays, JNI_ABORT); 1658d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 1659d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 1660d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 1661d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glGenVertexArrays ( GLsizei n, GLuint *arrays ) */ 1662d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 1663d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glGenVertexArrays__I_3II 1664d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint n, jintArray arrays_ref, jint offset) { 1665d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _exception = 0; 1666d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char * _exceptionType = NULL; 1667d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char * _exceptionMessage = NULL; 1668d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLuint *arrays_base = (GLuint *) 0; 1669d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _remaining; 1670d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLuint *arrays = (GLuint *) 0; 1671d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 1672d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (!arrays_ref) { 1673d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 1674d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 1675d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "arrays == null"; 1676d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 1677d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 1678d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (offset < 0) { 1679d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 1680d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 1681d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "offset < 0"; 1682d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 1683d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 1684d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _remaining = _env->GetArrayLength(arrays_ref) - offset; 1685d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall arrays_base = (GLuint *) 16863b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->GetIntArrayElements(arrays_ref, (jboolean *)0); 1687d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall arrays = arrays_base + offset; 1688d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 1689d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glGenVertexArrays( 1690d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)n, 1691d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint *)arrays 1692d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 1693d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 1694d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallexit: 1695d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (arrays_base) { 16963b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseIntArrayElements(arrays_ref, (jint*)arrays_base, 1697d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception ? JNI_ABORT: 0); 1698d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 1699d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_exception) { 1700d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jniThrowException(_env, _exceptionType, _exceptionMessage); 1701d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 1702d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 1703d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 1704d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glGenVertexArrays ( GLsizei n, GLuint *arrays ) */ 1705d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 1706d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glGenVertexArrays__ILjava_nio_IntBuffer_2 1707d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint n, jobject arrays_buf) { 17083b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi jintArray _array = (jintArray) 0; 1709d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _bufferOffset = (jint) 0; 1710d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _remaining; 1711d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLuint *arrays = (GLuint *) 0; 1712d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 17133b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi arrays = (GLuint *)getPointer(_env, arrays_buf, (jarray*)&_array, &_remaining, &_bufferOffset); 1714d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (arrays == NULL) { 17153b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi char * _arraysBase = (char *)_env->GetIntArrayElements(_array, (jboolean *) 0); 1716d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall arrays = (GLuint *) (_arraysBase + _bufferOffset); 1717d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 1718d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glGenVertexArrays( 1719d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)n, 1720d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint *)arrays 1721d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 1722d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_array) { 17233b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseIntArrayElements(_array, (jint*)arrays, 0); 1724d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 1725d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 1726d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 1727d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* GLboolean glIsVertexArray ( GLuint array ) */ 1728d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic jboolean 1729d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glIsVertexArray__I 1730d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint array) { 1731d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLboolean _returnValue; 1732d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _returnValue = glIsVertexArray( 1733d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint)array 1734d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 1735d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall return (jboolean)_returnValue; 1736d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 1737d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 1738d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glGetIntegeri_v ( GLenum target, GLuint index, GLint *data ) */ 1739d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 1740d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glGetIntegeri_v__II_3II 1741d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint target, jint index, jintArray data_ref, jint offset) { 1742d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _exception = 0; 1743d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char * _exceptionType = NULL; 1744d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char * _exceptionMessage = NULL; 1745d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLint *data_base = (GLint *) 0; 1746d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _remaining; 1747d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLint *data = (GLint *) 0; 1748d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 1749d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (!data_ref) { 1750d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 1751d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 1752d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "data == null"; 1753d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 1754d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 1755d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (offset < 0) { 1756d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 1757d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 1758d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "offset < 0"; 1759d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 1760d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 1761d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _remaining = _env->GetArrayLength(data_ref) - offset; 1762d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall data_base = (GLint *) 17633b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->GetIntArrayElements(data_ref, (jboolean *)0); 1764d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall data = data_base + offset; 1765d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 1766d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glGetIntegeri_v( 1767d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)target, 1768d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint)index, 1769d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint *)data 1770d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 1771d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 1772d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallexit: 1773d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (data_base) { 17743b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseIntArrayElements(data_ref, (jint*)data_base, 1775d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception ? JNI_ABORT: 0); 1776d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 1777d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_exception) { 1778d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jniThrowException(_env, _exceptionType, _exceptionMessage); 1779d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 1780d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 1781d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 1782d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glGetIntegeri_v ( GLenum target, GLuint index, GLint *data ) */ 1783d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 1784d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glGetIntegeri_v__IILjava_nio_IntBuffer_2 1785d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint target, jint index, jobject data_buf) { 17863b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi jintArray _array = (jintArray) 0; 1787d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _bufferOffset = (jint) 0; 1788d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _remaining; 1789d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLint *data = (GLint *) 0; 1790d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 17913b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi data = (GLint *)getPointer(_env, data_buf, (jarray*)&_array, &_remaining, &_bufferOffset); 1792d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (data == NULL) { 17933b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi char * _dataBase = (char *)_env->GetIntArrayElements(_array, (jboolean *) 0); 1794d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall data = (GLint *) (_dataBase + _bufferOffset); 1795d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 1796d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glGetIntegeri_v( 1797d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)target, 1798d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint)index, 1799d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint *)data 1800d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 1801d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_array) { 18023b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseIntArrayElements(_array, (jint*)data, 0); 1803d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 1804d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 1805d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 1806d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glBeginTransformFeedback ( GLenum primitiveMode ) */ 1807d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 1808d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glBeginTransformFeedback__I 1809d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint primitiveMode) { 1810d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glBeginTransformFeedback( 1811d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)primitiveMode 1812d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 1813d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 1814d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 1815d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glEndTransformFeedback ( void ) */ 1816d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 1817d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glEndTransformFeedback__ 1818d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this) { 1819d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glEndTransformFeedback(); 1820d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 1821d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 1822d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glBindBufferRange ( GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size ) */ 1823d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 1824d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glBindBufferRange__IIIII 1825d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint target, jint index, jint buffer, jint offset, jint size) { 1826d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glBindBufferRange( 1827d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)target, 1828d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint)index, 1829d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint)buffer, 1830d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLintptr)offset, 1831d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizeiptr)size 1832d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 1833d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 1834d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 1835d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glBindBufferBase ( GLenum target, GLuint index, GLuint buffer ) */ 1836d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 1837d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glBindBufferBase__III 1838d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint target, jint index, jint buffer) { 1839d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glBindBufferBase( 1840d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)target, 1841d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint)index, 1842d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint)buffer 1843d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 1844d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 1845d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 1846d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glTransformFeedbackVaryings ( GLuint program, GLsizei count, const GLchar *varyings, GLenum bufferMode ) */ 1847d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic 1848d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallvoid 1849d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glTransformFeedbackVaryings 1850d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint program, jobjectArray varyings_ref, jint bufferMode) { 1851d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _exception = 0; 1852d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char* _exceptionType = NULL; 1853d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char* _exceptionMessage = NULL; 1854d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _count = 0, _i; 1855d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char** _varyings = NULL; 1856d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char* _varying = NULL; 1857d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 1858d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (!varyings_ref) { 1859d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 1860d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 1861d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "varyings == null"; 1862d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 1863d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 1864d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 1865d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _count = _env->GetArrayLength(varyings_ref); 1866d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _varyings = (const char**)calloc(_count, sizeof(const char*)); 1867d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall for (_i = 0; _i < _count; _i++) { 1868d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jstring _varying = (jstring)_env->GetObjectArrayElement(varyings_ref, _i); 1869d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (!_varying) { 1870d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 1871d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 1872d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "null varyings element"; 1873d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 1874d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 1875d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _varyings[_i] = _env->GetStringUTFChars(_varying, 0); 1876d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 1877d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 1878d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glTransformFeedbackVaryings(program, _count, _varyings, bufferMode); 1879d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 1880d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallexit: 1881d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall for (_i = _count - 1; _i >= 0; _i--) { 1882d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_varyings[_i]) { 1883d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jstring _varying = (jstring)_env->GetObjectArrayElement(varyings_ref, _i); 1884d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_varying) { 1885d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _env->ReleaseStringUTFChars(_varying, _varyings[_i]); 1886d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 1887d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 1888d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 1889d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall free(_varyings); 1890d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_exception) { 1891d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jniThrowException(_env, _exceptionType, _exceptionMessage); 1892d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 1893d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 1894d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 1895d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glGetTransformFeedbackVarying ( GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name ) */ 1896d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 1897d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glGetTransformFeedbackVarying__III_3II_3II_3II_3BI 1898d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse 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) { 1899d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _exception = 0; 1900d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char * _exceptionType; 1901d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char * _exceptionMessage; 1902d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLsizei *length_base = (GLsizei *) 0; 1903d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _lengthRemaining; 1904d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLsizei *length = (GLsizei *) 0; 1905d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLint *size_base = (GLint *) 0; 1906d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _sizeRemaining; 1907d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLint *size = (GLint *) 0; 1908d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLenum *type_base = (GLenum *) 0; 1909d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _typeRemaining; 1910d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLenum *type = (GLenum *) 0; 1911d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall char *name_base = (char *) 0; 1912d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _nameRemaining; 1913d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall char *name = (char *) 0; 1914d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 19156aff9068f91fdfef0bc55fda0721c180c0de9284Pablo Ceballos if (length_ref) { 19166aff9068f91fdfef0bc55fda0721c180c0de9284Pablo Ceballos if (lengthOffset < 0) { 19176aff9068f91fdfef0bc55fda0721c180c0de9284Pablo Ceballos _exception = 1; 19186aff9068f91fdfef0bc55fda0721c180c0de9284Pablo Ceballos _exceptionType = "java/lang/IllegalArgumentException"; 19196aff9068f91fdfef0bc55fda0721c180c0de9284Pablo Ceballos _exceptionMessage = "lengthOffset < 0"; 19206aff9068f91fdfef0bc55fda0721c180c0de9284Pablo Ceballos goto exit; 19216aff9068f91fdfef0bc55fda0721c180c0de9284Pablo Ceballos } 19226aff9068f91fdfef0bc55fda0721c180c0de9284Pablo Ceballos _lengthRemaining = _env->GetArrayLength(length_ref) - lengthOffset; 19236aff9068f91fdfef0bc55fda0721c180c0de9284Pablo Ceballos length_base = (GLsizei *) 19246aff9068f91fdfef0bc55fda0721c180c0de9284Pablo Ceballos _env->GetIntArrayElements(length_ref, (jboolean *)0); 19256aff9068f91fdfef0bc55fda0721c180c0de9284Pablo Ceballos length = length_base + lengthOffset; 1926d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 1927d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 1928d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (!size_ref) { 1929d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 1930d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 1931d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "size == null"; 1932d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 1933d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 1934d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (sizeOffset < 0) { 1935d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 1936d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 1937d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "sizeOffset < 0"; 1938d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 1939d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 1940d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _sizeRemaining = _env->GetArrayLength(size_ref) - sizeOffset; 1941d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall size_base = (GLint *) 19423b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->GetIntArrayElements(size_ref, (jboolean *)0); 1943d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall size = size_base + sizeOffset; 1944d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 1945d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (!type_ref) { 1946d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 1947d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 1948d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "type == null"; 1949d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 1950d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 1951d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (typeOffset < 0) { 1952d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 1953d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 1954d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "typeOffset < 0"; 1955d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 1956d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 1957d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _typeRemaining = _env->GetArrayLength(type_ref) - typeOffset; 1958d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall type_base = (GLenum *) 19593b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->GetIntArrayElements(type_ref, (jboolean *)0); 1960d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall type = type_base + typeOffset; 1961d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 1962d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (!name_ref) { 1963d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 1964d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 1965d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "name == null"; 1966d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 1967d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 1968d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (nameOffset < 0) { 1969d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 1970d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 1971d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "nameOffset < 0"; 1972d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 1973d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 1974d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _nameRemaining = _env->GetArrayLength(name_ref) - nameOffset; 1975d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall name_base = (char *) 19763b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->GetByteArrayElements(name_ref, (jboolean *)0); 1977d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall name = name_base + nameOffset; 1978d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 1979d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glGetTransformFeedbackVarying( 1980d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint)program, 1981d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint)index, 1982d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)bufsize, 1983d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei *)length, 1984d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint *)size, 1985d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum *)type, 1986d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (char *)name 1987d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 1988d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 1989d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallexit: 1990d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (name_base) { 19913b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseByteArrayElements(name_ref, (jbyte*)name_base, 1992d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception ? JNI_ABORT: 0); 1993d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 1994d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (type_base) { 19953b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseIntArrayElements(type_ref, (jint*)type_base, 1996d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception ? JNI_ABORT: 0); 1997d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 1998d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (size_base) { 19993b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseIntArrayElements(size_ref, (jint*)size_base, 2000d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception ? JNI_ABORT: 0); 2001d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 2002d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (length_base) { 20033b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseIntArrayElements(length_ref, (jint*)length_base, 2004d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception ? JNI_ABORT: 0); 2005d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 2006d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_exception) { 2007d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jniThrowException(_env, _exceptionType, _exceptionMessage); 2008d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 2009d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 2010d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 2011d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glGetTransformFeedbackVarying ( GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name ) */ 2012d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 2013d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glGetTransformFeedbackVarying__IIILjava_nio_IntBuffer_2Ljava_nio_IntBuffer_2Ljava_nio_IntBuffer_2B 2014d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint program, jint index, jint bufsize, jobject length_buf, jobject size_buf, jobject type_buf, jbyte name) { 201559fb43e7bdc607f49b301644e4300485f352b103Pablo Ceballos jniThrowException(_env, "java/lang/UnsupportedOperationException", "deprecated"); 201659fb43e7bdc607f49b301644e4300485f352b103Pablo Ceballos} 201759fb43e7bdc607f49b301644e4300485f352b103Pablo Ceballos 201859fb43e7bdc607f49b301644e4300485f352b103Pablo Ceballos/* void glGetTransformFeedbackVarying ( GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name ) */ 201959fb43e7bdc607f49b301644e4300485f352b103Pablo Ceballosstatic void 202059fb43e7bdc607f49b301644e4300485f352b103Pablo Ceballosandroid_glGetTransformFeedbackVarying__IIILjava_nio_IntBuffer_2Ljava_nio_IntBuffer_2Ljava_nio_IntBuffer_2Ljava_nio_ByteBuffer_2 202159fb43e7bdc607f49b301644e4300485f352b103Pablo Ceballos (JNIEnv *_env, jobject _this, jint program, jint index, jint bufsize, jobject length_buf, jobject size_buf, jobject type_buf, jobject name_buf) { 20223b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi jintArray _lengthArray = (jintArray) 0; 2023d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _lengthBufferOffset = (jint) 0; 20243b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi jintArray _sizeArray = (jintArray) 0; 2025d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _sizeBufferOffset = (jint) 0; 20263b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi jintArray _typeArray = (jintArray) 0; 2027d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _typeBufferOffset = (jint) 0; 202859fb43e7bdc607f49b301644e4300485f352b103Pablo Ceballos jbyteArray _nameArray = (jbyteArray)0; 202959fb43e7bdc607f49b301644e4300485f352b103Pablo Ceballos jint _nameBufferOffset = (jint)0; 2030d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _lengthRemaining; 2031d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLsizei *length = (GLsizei *) 0; 2032d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _sizeRemaining; 2033d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLint *size = (GLint *) 0; 2034d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _typeRemaining; 2035d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLenum *type = (GLenum *) 0; 203659fb43e7bdc607f49b301644e4300485f352b103Pablo Ceballos jint _nameRemaining; 203759fb43e7bdc607f49b301644e4300485f352b103Pablo Ceballos GLchar* name = (GLchar*)0; 203859fb43e7bdc607f49b301644e4300485f352b103Pablo Ceballos 2039d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 20403b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi length = (GLsizei *)getPointer(_env, length_buf, (jarray*)&_lengthArray, &_lengthRemaining, &_lengthBufferOffset); 20413b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi size = (GLint *)getPointer(_env, size_buf, (jarray*)&_sizeArray, &_sizeRemaining, &_sizeBufferOffset); 20423b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi type = (GLenum *)getPointer(_env, type_buf, (jarray*)&_typeArray, &_typeRemaining, &_typeBufferOffset); 204359fb43e7bdc607f49b301644e4300485f352b103Pablo Ceballos name = (GLchar*)getPointer(_env, name_buf, (jarray*)&_nameArray, &_nameRemaining, &_nameBufferOffset); 2044d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (length == NULL) { 20453b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi char * _lengthBase = (char *)_env->GetIntArrayElements(_lengthArray, (jboolean *) 0); 2046d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall length = (GLsizei *) (_lengthBase + _lengthBufferOffset); 2047d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 2048d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (size == NULL) { 20493b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi char * _sizeBase = (char *)_env->GetIntArrayElements(_sizeArray, (jboolean *) 0); 2050d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall size = (GLint *) (_sizeBase + _sizeBufferOffset); 2051d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 2052d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (type == NULL) { 20533b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi char * _typeBase = (char *)_env->GetIntArrayElements(_typeArray, (jboolean *) 0); 2054d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall type = (GLenum *) (_typeBase + _typeBufferOffset); 2055d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 205659fb43e7bdc607f49b301644e4300485f352b103Pablo Ceballos if (name == NULL) { 205759fb43e7bdc607f49b301644e4300485f352b103Pablo Ceballos char* _nameBase = (char *)_env->GetByteArrayElements(_nameArray, (jboolean*)0); 205859fb43e7bdc607f49b301644e4300485f352b103Pablo Ceballos name = (GLchar *) (_nameBase + _nameBufferOffset); 205959fb43e7bdc607f49b301644e4300485f352b103Pablo Ceballos } 2060d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glGetTransformFeedbackVarying( 2061d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint)program, 2062d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint)index, 2063d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)bufsize, 2064d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei *)length, 2065d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint *)size, 2066d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum *)type, 206759fb43e7bdc607f49b301644e4300485f352b103Pablo Ceballos (GLchar*)name 2068d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 2069d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_typeArray) { 20703b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi releaseArrayPointer<jintArray, jint*, IntArrayReleaser>(_env, _typeArray, (jint*)type, JNI_TRUE); 2071d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 2072d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_sizeArray) { 20733b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi releaseArrayPointer<jintArray, jint*, IntArrayReleaser>(_env, _sizeArray, (jint*)size, JNI_TRUE); 2074d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 2075d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_lengthArray) { 20763b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi releaseArrayPointer<jintArray, jint*, IntArrayReleaser>(_env, _lengthArray, (jint*)length, JNI_TRUE); 2077d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 207859fb43e7bdc607f49b301644e4300485f352b103Pablo Ceballos if (_nameArray) { 207959fb43e7bdc607f49b301644e4300485f352b103Pablo Ceballos releaseArrayPointer<jbyteArray, jbyte*, ByteArrayReleaser>(_env, _nameArray, (jbyte*)name, JNI_TRUE); 208059fb43e7bdc607f49b301644e4300485f352b103Pablo Ceballos } 2081d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 2082d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 2083d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glGetTransformFeedbackVarying ( GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name ) */ 2084d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic jstring 2085d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glGetTransformFeedbackVarying1 2086d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint program, jint index, jintArray size_ref, jint sizeOffset, jintArray type_ref, jint typeOffset) { 2087d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _exception = 0; 2088d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char * _exceptionType; 2089d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char * _exceptionMessage; 2090d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLint *size_base = (GLint *) 0; 2091d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _sizeRemaining; 2092d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLint *size = (GLint *) 0; 2093d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLenum *type_base = (GLenum *) 0; 2094d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _typeRemaining; 2095d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLenum *type = (GLenum *) 0; 2096d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 2097d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jstring result = 0; 2098d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 2099d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLint len = 0; 2100d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glGetProgramiv((GLuint)program, GL_ACTIVE_ATTRIBUTE_MAX_LENGTH, &len); 2101d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (!len) { 2102d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall return _env->NewStringUTF(""); 2103d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 2104d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall char* buf = (char*) malloc(len); 2105d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 2106d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (buf == NULL) { 2107d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jniThrowException(_env, "java/lang/IllegalArgumentException", "out of memory"); 2108d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall return NULL; 2109d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 2110d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (!size_ref) { 2111d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 2112d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 2113d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "size == null"; 2114d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 2115d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 2116d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (sizeOffset < 0) { 2117d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 2118d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 2119d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "sizeOffset < 0"; 2120d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 2121d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 2122d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _sizeRemaining = _env->GetArrayLength(size_ref) - sizeOffset; 2123d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall size_base = (GLint *) 21243b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->GetIntArrayElements(size_ref, (jboolean *)0); 2125d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall size = size_base + sizeOffset; 2126d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 2127d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (!type_ref) { 2128d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 2129d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 2130d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "type == null"; 2131d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 2132d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 2133d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (typeOffset < 0) { 2134d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 2135d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 2136d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "typeOffset < 0"; 2137d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 2138d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 2139d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _typeRemaining = _env->GetArrayLength(type_ref) - typeOffset; 2140d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall type_base = (GLenum *) 21413b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->GetIntArrayElements(type_ref, (jboolean *)0); 2142d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall type = type_base + typeOffset; 2143d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 2144d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glGetTransformFeedbackVarying( 2145d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint)program, 2146d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint)index, 2147d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)len, 2148d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall NULL, 2149d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint *)size, 2150d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum *)type, 2151d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (char *)buf 2152d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 2153d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallexit: 2154d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (type_base) { 21553b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseIntArrayElements(type_ref, (jint*)type_base, 2156d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception ? JNI_ABORT: 0); 2157d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 2158d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (size_base) { 21593b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseIntArrayElements(size_ref, (jint*)size_base, 2160d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception ? JNI_ABORT: 0); 2161d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 2162d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_exception != 1) { 2163d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall result = _env->NewStringUTF(buf); 2164d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 2165d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (buf) { 2166d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall free(buf); 2167d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 2168d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_exception) { 2169d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jniThrowException(_env, _exceptionType, _exceptionMessage); 2170d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 2171d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (result == 0) { 2172d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall result = _env->NewStringUTF(""); 2173d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 2174d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 2175d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall return result; 2176d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 2177d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 2178d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glGetTransformFeedbackVarying ( GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name ) */ 2179d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic jstring 2180d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glGetTransformFeedbackVarying2 2181d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint program, jint index, jobject size_buf, jobject type_buf) { 21823b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi jintArray _sizeArray = (jintArray) 0; 2183d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _sizeBufferOffset = (jint) 0; 21843b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi jintArray _typeArray = (jintArray) 0; 2185d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _typeBufferOffset = (jint) 0; 2186d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _lengthRemaining; 2187d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLsizei *length = (GLsizei *) 0; 2188d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _sizeRemaining; 2189d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLint *size = (GLint *) 0; 2190d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _typeRemaining; 2191d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLenum *type = (GLenum *) 0; 2192d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 2193d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jstring result = 0; 2194d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 2195d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLint len = 0; 2196d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glGetProgramiv((GLuint)program, GL_ACTIVE_ATTRIBUTE_MAX_LENGTH, &len); 2197d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (!len) { 2198d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall return _env->NewStringUTF(""); 2199d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 2200d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall char* buf = (char*) malloc(len); 2201d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 2202d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (buf == NULL) { 2203d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jniThrowException(_env, "java/lang/IllegalArgumentException", "out of memory"); 2204d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall return NULL; 2205d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 2206d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 22073b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi size = (GLint *)getPointer(_env, size_buf, (jarray*)&_sizeArray, &_sizeRemaining, &_sizeBufferOffset); 22083b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi type = (GLenum *)getPointer(_env, type_buf, (jarray*)&_typeArray, &_typeRemaining, &_typeBufferOffset); 2209d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (size == NULL) { 22103b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi char * _sizeBase = (char *)_env->GetIntArrayElements(_sizeArray, (jboolean *) 0); 2211d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall size = (GLint *) (_sizeBase + _sizeBufferOffset); 2212d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 2213d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (type == NULL) { 22143b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi char * _typeBase = (char *)_env->GetIntArrayElements(_typeArray, (jboolean *) 0); 2215d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall type = (GLenum *) (_typeBase + _typeBufferOffset); 2216d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 2217d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glGetTransformFeedbackVarying( 2218d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint)program, 2219d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint)index, 2220d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)len, 2221d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall NULL, 2222d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint *)size, 2223d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum *)type, 2224d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (char *)buf 2225d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 2226d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 2227d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_typeArray) { 22283b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi releaseArrayPointer<jintArray, jint*, IntArrayReleaser>(_env, _typeArray, (jint*)type, JNI_TRUE); 2229d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 2230d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_sizeArray) { 22313b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi releaseArrayPointer<jintArray, jint*, IntArrayReleaser>(_env, _sizeArray, (jint*)size, JNI_TRUE); 2232d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 2233d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall result = _env->NewStringUTF(buf); 2234d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (buf) { 2235d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall free(buf); 2236d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 2237d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall return result; 2238d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 2239d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glVertexAttribIPointer ( GLuint index, GLint size, GLenum type, GLsizei stride, const GLvoid *pointer ) */ 2240d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 2241d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glVertexAttribIPointerBounds__IIIILjava_nio_Buffer_2I 2242d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint index, jint size, jint type, jint stride, jobject pointer_buf, jint remaining) { 2243d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jarray _array = (jarray) 0; 2244d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _bufferOffset = (jint) 0; 2245d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _remaining; 2246d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLvoid *pointer = (GLvoid *) 0; 2247d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 2248d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (pointer_buf) { 2249d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall pointer = (GLvoid *) getDirectBufferPointer(_env, pointer_buf); 2250d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if ( ! pointer ) { 2251d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall return; 2252d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 2253d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 2254d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glVertexAttribIPointerBounds( 2255d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint)index, 2256d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint)size, 2257d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)type, 2258d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)stride, 2259d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLvoid *)pointer, 2260d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)remaining 2261d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 2262d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 2263d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 2264d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glVertexAttribIPointer ( GLuint index, GLint size, GLenum type, GLsizei stride, GLsizei offset ) */ 2265d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 2266d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glVertexAttribIPointer__IIIII 2267d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint index, jint size, jint type, jint stride, jint offset) { 2268d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glVertexAttribIPointer( 2269d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint)index, 2270d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint)size, 2271d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)type, 2272d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)stride, 227301c26ea89d4bbea3cf550e9328742302dd9a2b25Ashok Bhat reinterpret_cast<GLvoid *>(offset) 2274d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 2275d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 2276d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 2277d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glGetVertexAttribIiv ( GLuint index, GLenum pname, GLint *params ) */ 2278d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 2279d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glGetVertexAttribIiv__II_3II 2280d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint index, jint pname, jintArray params_ref, jint offset) { 2281d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _exception = 0; 2282d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char * _exceptionType = NULL; 2283d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char * _exceptionMessage = NULL; 2284d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLint *params_base = (GLint *) 0; 2285d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _remaining; 2286d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLint *params = (GLint *) 0; 2287d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 2288d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (!params_ref) { 2289d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 2290d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 2291d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "params == null"; 2292d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 2293d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 2294d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (offset < 0) { 2295d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 2296d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 2297d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "offset < 0"; 2298d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 2299d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 2300d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _remaining = _env->GetArrayLength(params_ref) - offset; 2301d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall params_base = (GLint *) 23023b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->GetIntArrayElements(params_ref, (jboolean *)0); 2303d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall params = params_base + offset; 2304d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 2305d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glGetVertexAttribIiv( 2306d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint)index, 2307d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)pname, 2308d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint *)params 2309d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 2310d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 2311d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallexit: 2312d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (params_base) { 23133b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseIntArrayElements(params_ref, (jint*)params_base, 2314d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception ? JNI_ABORT: 0); 2315d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 2316d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_exception) { 2317d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jniThrowException(_env, _exceptionType, _exceptionMessage); 2318d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 2319d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 2320d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 2321d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glGetVertexAttribIiv ( GLuint index, GLenum pname, GLint *params ) */ 2322d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 2323d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glGetVertexAttribIiv__IILjava_nio_IntBuffer_2 2324d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint index, jint pname, jobject params_buf) { 23253b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi jintArray _array = (jintArray) 0; 2326d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _bufferOffset = (jint) 0; 2327d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _remaining; 2328d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLint *params = (GLint *) 0; 2329d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 23303b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi params = (GLint *)getPointer(_env, params_buf, (jarray*)&_array, &_remaining, &_bufferOffset); 2331d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (params == NULL) { 23323b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi char * _paramsBase = (char *)_env->GetIntArrayElements(_array, (jboolean *) 0); 2333d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall params = (GLint *) (_paramsBase + _bufferOffset); 2334d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 2335d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glGetVertexAttribIiv( 2336d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint)index, 2337d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)pname, 2338d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint *)params 2339d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 2340d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_array) { 23413b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseIntArrayElements(_array, (jint*)params, 0); 2342d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 2343d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 2344d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 2345d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glGetVertexAttribIuiv ( GLuint index, GLenum pname, GLuint *params ) */ 2346d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 2347d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glGetVertexAttribIuiv__II_3II 2348d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint index, jint pname, jintArray params_ref, jint offset) { 2349d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _exception = 0; 2350d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char * _exceptionType = NULL; 2351d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char * _exceptionMessage = NULL; 2352d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLuint *params_base = (GLuint *) 0; 2353d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _remaining; 2354d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLuint *params = (GLuint *) 0; 2355d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 2356d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (!params_ref) { 2357d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 2358d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 2359d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "params == null"; 2360d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 2361d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 2362d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (offset < 0) { 2363d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 2364d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 2365d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "offset < 0"; 2366d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 2367d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 2368d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _remaining = _env->GetArrayLength(params_ref) - offset; 2369d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall params_base = (GLuint *) 23703b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->GetIntArrayElements(params_ref, (jboolean *)0); 2371d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall params = params_base + offset; 2372d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 2373d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glGetVertexAttribIuiv( 2374d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint)index, 2375d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)pname, 2376d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint *)params 2377d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 2378d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 2379d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallexit: 2380d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (params_base) { 23813b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseIntArrayElements(params_ref, (jint*)params_base, 2382d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception ? JNI_ABORT: 0); 2383d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 2384d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_exception) { 2385d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jniThrowException(_env, _exceptionType, _exceptionMessage); 2386d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 2387d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 2388d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 2389d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glGetVertexAttribIuiv ( GLuint index, GLenum pname, GLuint *params ) */ 2390d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 2391d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glGetVertexAttribIuiv__IILjava_nio_IntBuffer_2 2392d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint index, jint pname, jobject params_buf) { 23933b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi jintArray _array = (jintArray) 0; 2394d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _bufferOffset = (jint) 0; 2395d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _remaining; 2396d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLuint *params = (GLuint *) 0; 2397d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 23983b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi params = (GLuint *)getPointer(_env, params_buf, (jarray*)&_array, &_remaining, &_bufferOffset); 2399d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (params == NULL) { 24003b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi char * _paramsBase = (char *)_env->GetIntArrayElements(_array, (jboolean *) 0); 2401d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall params = (GLuint *) (_paramsBase + _bufferOffset); 2402d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 2403d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glGetVertexAttribIuiv( 2404d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint)index, 2405d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)pname, 2406d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint *)params 2407d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 2408d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_array) { 24093b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseIntArrayElements(_array, (jint*)params, 0); 2410d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 2411d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 2412d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 2413d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glVertexAttribI4i ( GLuint index, GLint x, GLint y, GLint z, GLint w ) */ 2414d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 2415d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glVertexAttribI4i__IIIII 2416d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint index, jint x, jint y, jint z, jint w) { 2417d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glVertexAttribI4i( 2418d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint)index, 2419d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint)x, 2420d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint)y, 2421d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint)z, 2422d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint)w 2423d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 2424d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 2425d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 2426d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glVertexAttribI4ui ( GLuint index, GLuint x, GLuint y, GLuint z, GLuint w ) */ 2427d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 2428d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glVertexAttribI4ui__IIIII 2429d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint index, jint x, jint y, jint z, jint w) { 2430d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glVertexAttribI4ui( 2431d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint)index, 2432d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint)x, 2433d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint)y, 2434d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint)z, 2435d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint)w 2436d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 2437d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 2438d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 2439d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glVertexAttribI4iv ( GLuint index, const GLint *v ) */ 2440d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 2441d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glVertexAttribI4iv__I_3II 2442d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint index, jintArray v_ref, jint offset) { 2443d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _exception = 0; 2444d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char * _exceptionType = NULL; 2445d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char * _exceptionMessage = NULL; 2446d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLint *v_base = (GLint *) 0; 2447d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _remaining; 2448d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLint *v = (GLint *) 0; 2449d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 2450d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (!v_ref) { 2451d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 2452d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 2453d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "v == null"; 2454d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 2455d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 2456d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (offset < 0) { 2457d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 2458d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 2459d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "offset < 0"; 2460d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 2461d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 2462d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _remaining = _env->GetArrayLength(v_ref) - offset; 2463d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall v_base = (GLint *) 24643b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->GetIntArrayElements(v_ref, (jboolean *)0); 2465d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall v = v_base + offset; 2466d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 2467d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glVertexAttribI4iv( 2468d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint)index, 2469d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint *)v 2470d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 2471d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 2472d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallexit: 2473d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (v_base) { 24743b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseIntArrayElements(v_ref, (jint*)v_base, 2475d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall JNI_ABORT); 2476d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 2477d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_exception) { 2478d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jniThrowException(_env, _exceptionType, _exceptionMessage); 2479d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 2480d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 2481d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 2482d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glVertexAttribI4iv ( GLuint index, const GLint *v ) */ 2483d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 2484d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glVertexAttribI4iv__ILjava_nio_IntBuffer_2 2485d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint index, jobject v_buf) { 24863b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi jintArray _array = (jintArray) 0; 2487d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _bufferOffset = (jint) 0; 2488d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _remaining; 2489d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLint *v = (GLint *) 0; 2490d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 24913b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi v = (GLint *)getPointer(_env, v_buf, (jarray*)&_array, &_remaining, &_bufferOffset); 2492d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (v == NULL) { 24933b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi char * _vBase = (char *)_env->GetIntArrayElements(_array, (jboolean *) 0); 2494d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall v = (GLint *) (_vBase + _bufferOffset); 2495d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 2496d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glVertexAttribI4iv( 2497d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint)index, 2498d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint *)v 2499d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 2500d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_array) { 25013b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseIntArrayElements(_array, (jint*)v, JNI_ABORT); 2502d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 2503d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 2504d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 2505d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glVertexAttribI4uiv ( GLuint index, const GLuint *v ) */ 2506d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 2507d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glVertexAttribI4uiv__I_3II 2508d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint index, jintArray v_ref, jint offset) { 2509d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _exception = 0; 2510d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char * _exceptionType = NULL; 2511d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char * _exceptionMessage = NULL; 2512d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLuint *v_base = (GLuint *) 0; 2513d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _remaining; 2514d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLuint *v = (GLuint *) 0; 2515d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 2516d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (!v_ref) { 2517d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 2518d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 2519d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "v == null"; 2520d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 2521d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 2522d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (offset < 0) { 2523d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 2524d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 2525d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "offset < 0"; 2526d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 2527d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 2528d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _remaining = _env->GetArrayLength(v_ref) - offset; 2529d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall v_base = (GLuint *) 25303b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->GetIntArrayElements(v_ref, (jboolean *)0); 2531d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall v = v_base + offset; 2532d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 2533d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glVertexAttribI4uiv( 2534d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint)index, 2535d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint *)v 2536d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 2537d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 2538d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallexit: 2539d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (v_base) { 25403b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseIntArrayElements(v_ref, (jint*)v_base, 2541d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall JNI_ABORT); 2542d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 2543d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_exception) { 2544d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jniThrowException(_env, _exceptionType, _exceptionMessage); 2545d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 2546d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 2547d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 2548d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glVertexAttribI4uiv ( GLuint index, const GLuint *v ) */ 2549d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 2550d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glVertexAttribI4uiv__ILjava_nio_IntBuffer_2 2551d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint index, jobject v_buf) { 25523b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi jintArray _array = (jintArray) 0; 2553d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _bufferOffset = (jint) 0; 2554d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _remaining; 2555d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLuint *v = (GLuint *) 0; 2556d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 25573b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi v = (GLuint *)getPointer(_env, v_buf, (jarray*)&_array, &_remaining, &_bufferOffset); 2558d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (v == NULL) { 25593b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi char * _vBase = (char *)_env->GetIntArrayElements(_array, (jboolean *) 0); 2560d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall v = (GLuint *) (_vBase + _bufferOffset); 2561d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 2562d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glVertexAttribI4uiv( 2563d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint)index, 2564d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint *)v 2565d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 2566d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_array) { 25673b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseIntArrayElements(_array, (jint*)v, JNI_ABORT); 2568d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 2569d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 2570d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 2571d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glGetUniformuiv ( GLuint program, GLint location, GLuint *params ) */ 2572d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 2573d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glGetUniformuiv__II_3II 2574d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint program, jint location, jintArray params_ref, jint offset) { 2575d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _exception = 0; 2576d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char * _exceptionType = NULL; 2577d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char * _exceptionMessage = NULL; 2578d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLuint *params_base = (GLuint *) 0; 2579d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _remaining; 2580d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLuint *params = (GLuint *) 0; 2581d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 2582d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (!params_ref) { 2583d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 2584d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 2585d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "params == null"; 2586d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 2587d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 2588d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (offset < 0) { 2589d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 2590d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 2591d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "offset < 0"; 2592d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 2593d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 2594d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _remaining = _env->GetArrayLength(params_ref) - offset; 2595d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall params_base = (GLuint *) 25963b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->GetIntArrayElements(params_ref, (jboolean *)0); 2597d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall params = params_base + offset; 2598d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 2599d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glGetUniformuiv( 2600d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint)program, 2601d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint)location, 2602d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint *)params 2603d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 2604d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 2605d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallexit: 2606d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (params_base) { 26073b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseIntArrayElements(params_ref, (jint*)params_base, 2608d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception ? JNI_ABORT: 0); 2609d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 2610d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_exception) { 2611d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jniThrowException(_env, _exceptionType, _exceptionMessage); 2612d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 2613d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 2614d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 2615d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glGetUniformuiv ( GLuint program, GLint location, GLuint *params ) */ 2616d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 2617d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glGetUniformuiv__IILjava_nio_IntBuffer_2 2618d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint program, jint location, jobject params_buf) { 26193b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi jintArray _array = (jintArray) 0; 2620d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _bufferOffset = (jint) 0; 2621d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _remaining; 2622d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLuint *params = (GLuint *) 0; 2623d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 26243b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi params = (GLuint *)getPointer(_env, params_buf, (jarray*)&_array, &_remaining, &_bufferOffset); 2625d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (params == NULL) { 26263b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi char * _paramsBase = (char *)_env->GetIntArrayElements(_array, (jboolean *) 0); 2627d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall params = (GLuint *) (_paramsBase + _bufferOffset); 2628d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 2629d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glGetUniformuiv( 2630d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint)program, 2631d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint)location, 2632d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint *)params 2633d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 2634d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_array) { 26353b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseIntArrayElements(_array, (jint*)params, 0); 2636d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 2637d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 2638d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 2639d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* GLint glGetFragDataLocation ( GLuint program, const GLchar *name ) */ 2640d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic jint 2641d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glGetFragDataLocation__ILjava_lang_String_2 2642d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint program, jstring name) { 2643d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _exception = 0; 2644d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char * _exceptionType = NULL; 2645d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char * _exceptionMessage = NULL; 2646d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLint _returnValue = 0; 2647d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char* _nativename = 0; 2648d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 2649d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (!name) { 2650428d3fcbe3596b18549cdada9fc68a29f159a946Elliott Hughes _exception = 1; 2651d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 2652d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "name == null"; 2653d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 2654d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 2655d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _nativename = _env->GetStringUTFChars(name, 0); 2656d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 2657d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _returnValue = glGetFragDataLocation( 2658d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint)program, 2659d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLchar *)_nativename 2660d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 2661d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 2662d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallexit: 2663d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_nativename) { 2664d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _env->ReleaseStringUTFChars(name, _nativename); 2665d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 2666d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 2667d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_exception) { 2668d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jniThrowException(_env, _exceptionType, _exceptionMessage); 2669d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 2670d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall return (jint)_returnValue; 2671d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 2672d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 2673d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glUniform1ui ( GLint location, GLuint v0 ) */ 2674d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 2675d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glUniform1ui__II 2676d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint location, jint v0) { 2677d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glUniform1ui( 2678d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint)location, 2679d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint)v0 2680d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 2681d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 2682d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 2683d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glUniform2ui ( GLint location, GLuint v0, GLuint v1 ) */ 2684d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 2685d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glUniform2ui__III 2686d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint location, jint v0, jint v1) { 2687d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glUniform2ui( 2688d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint)location, 2689d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint)v0, 2690d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint)v1 2691d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 2692d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 2693d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 2694d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glUniform3ui ( GLint location, GLuint v0, GLuint v1, GLuint v2 ) */ 2695d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 2696d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glUniform3ui__IIII 2697d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint location, jint v0, jint v1, jint v2) { 2698d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glUniform3ui( 2699d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint)location, 2700d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint)v0, 2701d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint)v1, 2702d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint)v2 2703d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 2704d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 2705d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 2706d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glUniform4ui ( GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3 ) */ 2707d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 2708d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glUniform4ui__IIIII 2709d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint location, jint v0, jint v1, jint v2, jint v3) { 2710d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glUniform4ui( 2711d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint)location, 2712d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint)v0, 2713d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint)v1, 2714d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint)v2, 2715d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint)v3 2716d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 2717d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 2718d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 2719d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glUniform1uiv ( GLint location, GLsizei count, const GLuint *value ) */ 2720d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 2721d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glUniform1uiv__II_3II 2722d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint location, jint count, jintArray value_ref, jint offset) { 2723d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _exception = 0; 2724d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char * _exceptionType = NULL; 2725d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char * _exceptionMessage = NULL; 2726d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLuint *value_base = (GLuint *) 0; 2727d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _remaining; 2728d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLuint *value = (GLuint *) 0; 2729d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 2730d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (!value_ref) { 2731d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 2732d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 2733d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "value == null"; 2734d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 2735d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 2736d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (offset < 0) { 2737d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 2738d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 2739d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "offset < 0"; 2740d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 2741d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 2742d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _remaining = _env->GetArrayLength(value_ref) - offset; 2743d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall value_base = (GLuint *) 27443b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->GetIntArrayElements(value_ref, (jboolean *)0); 2745d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall value = value_base + offset; 2746d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 2747d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glUniform1uiv( 2748d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint)location, 2749d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)count, 2750d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint *)value 2751d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 2752d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 2753d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallexit: 2754d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (value_base) { 27553b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseIntArrayElements(value_ref, (jint*)value_base, 2756d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall JNI_ABORT); 2757d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 2758d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_exception) { 2759d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jniThrowException(_env, _exceptionType, _exceptionMessage); 2760d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 2761d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 2762d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 2763d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glUniform1uiv ( GLint location, GLsizei count, const GLuint *value ) */ 2764d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 2765d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glUniform1uiv__IILjava_nio_IntBuffer_2 2766d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint location, jint count, jobject value_buf) { 27673b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi jintArray _array = (jintArray) 0; 2768d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _bufferOffset = (jint) 0; 2769d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _remaining; 2770d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLuint *value = (GLuint *) 0; 2771d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 27723b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi value = (GLuint *)getPointer(_env, value_buf, (jarray*)&_array, &_remaining, &_bufferOffset); 2773d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (value == NULL) { 27743b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi char * _valueBase = (char *)_env->GetIntArrayElements(_array, (jboolean *) 0); 2775d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall value = (GLuint *) (_valueBase + _bufferOffset); 2776d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 2777d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glUniform1uiv( 2778d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint)location, 2779d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)count, 2780d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint *)value 2781d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 2782d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_array) { 27833b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseIntArrayElements(_array, (jint*)value, JNI_ABORT); 2784d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 2785d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 2786d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 2787d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glUniform2uiv ( GLint location, GLsizei count, const GLuint *value ) */ 2788d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 2789d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glUniform2uiv__II_3II 2790d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint location, jint count, jintArray value_ref, jint offset) { 2791d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _exception = 0; 2792d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char * _exceptionType = NULL; 2793d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char * _exceptionMessage = NULL; 2794d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLuint *value_base = (GLuint *) 0; 2795d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _remaining; 2796d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLuint *value = (GLuint *) 0; 2797d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 2798d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (!value_ref) { 2799d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 2800d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 2801d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "value == null"; 2802d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 2803d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 2804d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (offset < 0) { 2805d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 2806d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 2807d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "offset < 0"; 2808d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 2809d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 2810d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _remaining = _env->GetArrayLength(value_ref) - offset; 2811d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall value_base = (GLuint *) 28123b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->GetIntArrayElements(value_ref, (jboolean *)0); 2813d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall value = value_base + offset; 2814d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 2815d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glUniform2uiv( 2816d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint)location, 2817d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)count, 2818d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint *)value 2819d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 2820d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 2821d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallexit: 2822d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (value_base) { 28233b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseIntArrayElements(value_ref, (jint*)value_base, 2824d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall JNI_ABORT); 2825d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 2826d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_exception) { 2827d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jniThrowException(_env, _exceptionType, _exceptionMessage); 2828d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 2829d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 2830d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 2831d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glUniform2uiv ( GLint location, GLsizei count, const GLuint *value ) */ 2832d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 2833d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glUniform2uiv__IILjava_nio_IntBuffer_2 2834d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint location, jint count, jobject value_buf) { 28353b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi jintArray _array = (jintArray) 0; 2836d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _bufferOffset = (jint) 0; 2837d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _remaining; 2838d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLuint *value = (GLuint *) 0; 2839d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 28403b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi value = (GLuint *)getPointer(_env, value_buf, (jarray*)&_array, &_remaining, &_bufferOffset); 2841d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (value == NULL) { 28423b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi char * _valueBase = (char *)_env->GetIntArrayElements(_array, (jboolean *) 0); 2843d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall value = (GLuint *) (_valueBase + _bufferOffset); 2844d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 2845d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glUniform2uiv( 2846d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint)location, 2847d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)count, 2848d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint *)value 2849d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 2850d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_array) { 28513b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseIntArrayElements(_array, (jint*)value, JNI_ABORT); 2852d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 2853d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 2854d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 2855d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glUniform3uiv ( GLint location, GLsizei count, const GLuint *value ) */ 2856d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 2857d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glUniform3uiv__II_3II 2858d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint location, jint count, jintArray value_ref, jint offset) { 2859d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _exception = 0; 2860d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char * _exceptionType = NULL; 2861d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char * _exceptionMessage = NULL; 2862d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLuint *value_base = (GLuint *) 0; 2863d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _remaining; 2864d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLuint *value = (GLuint *) 0; 2865d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 2866d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (!value_ref) { 2867d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 2868d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 2869d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "value == null"; 2870d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 2871d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 2872d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (offset < 0) { 2873d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 2874d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 2875d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "offset < 0"; 2876d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 2877d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 2878d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _remaining = _env->GetArrayLength(value_ref) - offset; 2879d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall value_base = (GLuint *) 28803b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->GetIntArrayElements(value_ref, (jboolean *)0); 2881d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall value = value_base + offset; 2882d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 2883d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glUniform3uiv( 2884d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint)location, 2885d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)count, 2886d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint *)value 2887d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 2888d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 2889d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallexit: 2890d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (value_base) { 28913b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseIntArrayElements(value_ref, (jint*)value_base, 2892d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall JNI_ABORT); 2893d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 2894d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_exception) { 2895d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jniThrowException(_env, _exceptionType, _exceptionMessage); 2896d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 2897d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 2898d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 2899d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glUniform3uiv ( GLint location, GLsizei count, const GLuint *value ) */ 2900d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 2901d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glUniform3uiv__IILjava_nio_IntBuffer_2 2902d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint location, jint count, jobject value_buf) { 29033b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi jintArray _array = (jintArray) 0; 2904d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _bufferOffset = (jint) 0; 2905d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _remaining; 2906d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLuint *value = (GLuint *) 0; 2907d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 29083b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi value = (GLuint *)getPointer(_env, value_buf, (jarray*)&_array, &_remaining, &_bufferOffset); 2909d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (value == NULL) { 29103b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi char * _valueBase = (char *)_env->GetIntArrayElements(_array, (jboolean *) 0); 2911d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall value = (GLuint *) (_valueBase + _bufferOffset); 2912d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 2913d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glUniform3uiv( 2914d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint)location, 2915d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)count, 2916d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint *)value 2917d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 2918d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_array) { 29193b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseIntArrayElements(_array, (jint*)value, JNI_ABORT); 2920d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 2921d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 2922d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 2923d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glUniform4uiv ( GLint location, GLsizei count, const GLuint *value ) */ 2924d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 2925d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glUniform4uiv__II_3II 2926d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint location, jint count, jintArray value_ref, jint offset) { 2927d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _exception = 0; 2928d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char * _exceptionType = NULL; 2929d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char * _exceptionMessage = NULL; 2930d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLuint *value_base = (GLuint *) 0; 2931d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _remaining; 2932d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLuint *value = (GLuint *) 0; 2933d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 2934d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (!value_ref) { 2935d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 2936d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 2937d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "value == null"; 2938d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 2939d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 2940d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (offset < 0) { 2941d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 2942d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 2943d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "offset < 0"; 2944d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 2945d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 2946d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _remaining = _env->GetArrayLength(value_ref) - offset; 2947d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall value_base = (GLuint *) 29483b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->GetIntArrayElements(value_ref, (jboolean *)0); 2949d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall value = value_base + offset; 2950d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 2951d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glUniform4uiv( 2952d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint)location, 2953d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)count, 2954d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint *)value 2955d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 2956d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 2957d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallexit: 2958d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (value_base) { 29593b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseIntArrayElements(value_ref, (jint*)value_base, 2960d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall JNI_ABORT); 2961d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 2962d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_exception) { 2963d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jniThrowException(_env, _exceptionType, _exceptionMessage); 2964d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 2965d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 2966d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 2967d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glUniform4uiv ( GLint location, GLsizei count, const GLuint *value ) */ 2968d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 2969d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glUniform4uiv__IILjava_nio_IntBuffer_2 2970d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint location, jint count, jobject value_buf) { 29713b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi jintArray _array = (jintArray) 0; 2972d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _bufferOffset = (jint) 0; 2973d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _remaining; 2974d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLuint *value = (GLuint *) 0; 2975d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 29763b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi value = (GLuint *)getPointer(_env, value_buf, (jarray*)&_array, &_remaining, &_bufferOffset); 2977d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (value == NULL) { 29783b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi char * _valueBase = (char *)_env->GetIntArrayElements(_array, (jboolean *) 0); 2979d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall value = (GLuint *) (_valueBase + _bufferOffset); 2980d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 2981d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glUniform4uiv( 2982d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint)location, 2983d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)count, 2984d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint *)value 2985d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 2986d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_array) { 29873b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseIntArrayElements(_array, (jint*)value, JNI_ABORT); 2988d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 2989d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 2990d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 2991d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glClearBufferiv ( GLenum buffer, GLint drawbuffer, const GLint *value ) */ 2992d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 2993d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glClearBufferiv__II_3II 2994d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint buffer, jint drawbuffer, jintArray value_ref, jint offset) { 2995d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _exception = 0; 2996d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char * _exceptionType = NULL; 2997d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char * _exceptionMessage = NULL; 2998d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLint *value_base = (GLint *) 0; 2999d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _remaining; 3000d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLint *value = (GLint *) 0; 3001d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 3002d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (!value_ref) { 3003d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 3004d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 3005d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "value == null"; 3006d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 3007d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 3008d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (offset < 0) { 3009d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 3010d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 3011d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "offset < 0"; 3012d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 3013d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 3014d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _remaining = _env->GetArrayLength(value_ref) - offset; 3015d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall value_base = (GLint *) 30163b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->GetIntArrayElements(value_ref, (jboolean *)0); 3017d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall value = value_base + offset; 3018d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 3019d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glClearBufferiv( 3020d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)buffer, 3021d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint)drawbuffer, 3022d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint *)value 3023d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 3024d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 3025d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallexit: 3026d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (value_base) { 30273b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseIntArrayElements(value_ref, (jint*)value_base, 3028d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall JNI_ABORT); 3029d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 3030d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_exception) { 3031d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jniThrowException(_env, _exceptionType, _exceptionMessage); 3032d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 3033d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 3034d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 3035d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glClearBufferiv ( GLenum buffer, GLint drawbuffer, const GLint *value ) */ 3036d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 3037d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glClearBufferiv__IILjava_nio_IntBuffer_2 3038d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint buffer, jint drawbuffer, jobject value_buf) { 30393b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi jintArray _array = (jintArray) 0; 3040d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _bufferOffset = (jint) 0; 3041d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _remaining; 3042d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLint *value = (GLint *) 0; 3043d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 30443b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi value = (GLint *)getPointer(_env, value_buf, (jarray*)&_array, &_remaining, &_bufferOffset); 3045d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (value == NULL) { 30463b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi char * _valueBase = (char *)_env->GetIntArrayElements(_array, (jboolean *) 0); 3047d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall value = (GLint *) (_valueBase + _bufferOffset); 3048d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 3049d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glClearBufferiv( 3050d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)buffer, 3051d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint)drawbuffer, 3052d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint *)value 3053d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 3054d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_array) { 30553b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseIntArrayElements(_array, (jint*)value, JNI_ABORT); 3056d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 3057d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 3058d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 3059d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glClearBufferuiv ( GLenum buffer, GLint drawbuffer, const GLuint *value ) */ 3060d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 3061d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glClearBufferuiv__II_3II 3062d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint buffer, jint drawbuffer, jintArray value_ref, jint offset) { 3063d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _exception = 0; 3064d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char * _exceptionType = NULL; 3065d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char * _exceptionMessage = NULL; 3066d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLuint *value_base = (GLuint *) 0; 3067d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _remaining; 3068d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLuint *value = (GLuint *) 0; 3069d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 3070d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (!value_ref) { 3071d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 3072d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 3073d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "value == null"; 3074d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 3075d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 3076d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (offset < 0) { 3077d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 3078d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 3079d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "offset < 0"; 3080d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 3081d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 3082d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _remaining = _env->GetArrayLength(value_ref) - offset; 3083d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall value_base = (GLuint *) 30843b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->GetIntArrayElements(value_ref, (jboolean *)0); 3085d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall value = value_base + offset; 3086d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 3087d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glClearBufferuiv( 3088d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)buffer, 3089d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint)drawbuffer, 3090d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint *)value 3091d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 3092d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 3093d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallexit: 3094d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (value_base) { 30953b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseIntArrayElements(value_ref, (jint*)value_base, 3096d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall JNI_ABORT); 3097d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 3098d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_exception) { 3099d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jniThrowException(_env, _exceptionType, _exceptionMessage); 3100d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 3101d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 3102d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 3103d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glClearBufferuiv ( GLenum buffer, GLint drawbuffer, const GLuint *value ) */ 3104d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 3105d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glClearBufferuiv__IILjava_nio_IntBuffer_2 3106d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint buffer, jint drawbuffer, jobject value_buf) { 31073b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi jintArray _array = (jintArray) 0; 3108d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _bufferOffset = (jint) 0; 3109d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _remaining; 3110d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLuint *value = (GLuint *) 0; 3111d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 31123b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi value = (GLuint *)getPointer(_env, value_buf, (jarray*)&_array, &_remaining, &_bufferOffset); 3113d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (value == NULL) { 31143b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi char * _valueBase = (char *)_env->GetIntArrayElements(_array, (jboolean *) 0); 3115d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall value = (GLuint *) (_valueBase + _bufferOffset); 3116d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 3117d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glClearBufferuiv( 3118d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)buffer, 3119d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint)drawbuffer, 3120d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint *)value 3121d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 3122d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_array) { 31233b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseIntArrayElements(_array, (jint*)value, JNI_ABORT); 3124d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 3125d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 3126d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 3127d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glClearBufferfv ( GLenum buffer, GLint drawbuffer, const GLfloat *value ) */ 3128d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 3129d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glClearBufferfv__II_3FI 3130d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint buffer, jint drawbuffer, jfloatArray value_ref, jint offset) { 3131d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _exception = 0; 3132d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char * _exceptionType = NULL; 3133d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char * _exceptionMessage = NULL; 3134d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLfloat *value_base = (GLfloat *) 0; 3135d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _remaining; 3136d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLfloat *value = (GLfloat *) 0; 3137d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 3138d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (!value_ref) { 3139d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 3140d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 3141d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "value == null"; 3142d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 3143d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 3144d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (offset < 0) { 3145d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 3146d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 3147d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "offset < 0"; 3148d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 3149d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 3150d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _remaining = _env->GetArrayLength(value_ref) - offset; 3151d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall value_base = (GLfloat *) 31523b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->GetFloatArrayElements(value_ref, (jboolean *)0); 3153d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall value = value_base + offset; 3154d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 3155d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glClearBufferfv( 3156d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)buffer, 3157d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint)drawbuffer, 3158d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLfloat *)value 3159d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 3160d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 3161d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallexit: 3162d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (value_base) { 31633b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseFloatArrayElements(value_ref, (jfloat*)value_base, 3164d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall JNI_ABORT); 3165d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 3166d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_exception) { 3167d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jniThrowException(_env, _exceptionType, _exceptionMessage); 3168d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 3169d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 3170d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 3171d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glClearBufferfv ( GLenum buffer, GLint drawbuffer, const GLfloat *value ) */ 3172d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 3173d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glClearBufferfv__IILjava_nio_FloatBuffer_2 3174d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint buffer, jint drawbuffer, jobject value_buf) { 31753b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi jfloatArray _array = (jfloatArray) 0; 3176d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _bufferOffset = (jint) 0; 3177d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _remaining; 3178d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLfloat *value = (GLfloat *) 0; 3179d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 31803b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi value = (GLfloat *)getPointer(_env, value_buf, (jarray*)&_array, &_remaining, &_bufferOffset); 3181d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (value == NULL) { 31823b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi char * _valueBase = (char *)_env->GetFloatArrayElements(_array, (jboolean *) 0); 3183d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall value = (GLfloat *) (_valueBase + _bufferOffset); 3184d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 3185d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glClearBufferfv( 3186d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)buffer, 3187d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint)drawbuffer, 3188d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLfloat *)value 3189d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 3190d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_array) { 31913b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseFloatArrayElements(_array, (jfloat*)value, JNI_ABORT); 3192d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 3193d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 3194d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 3195d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glClearBufferfi ( GLenum buffer, GLint drawbuffer, GLfloat depth, GLint stencil ) */ 3196d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 3197d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glClearBufferfi__IIFI 3198d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint buffer, jint drawbuffer, jfloat depth, jint stencil) { 3199d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glClearBufferfi( 3200d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)buffer, 3201d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint)drawbuffer, 3202d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLfloat)depth, 3203d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint)stencil 3204d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 3205d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 3206d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 3207d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* const GLubyte * glGetStringi ( GLenum name, GLuint index ) */ 3208d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic jstring 3209d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glGetStringi__II 3210d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint name, jint index) { 3211d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const GLubyte* _chars = glGetStringi((GLenum)name, (GLuint)index); 3212d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall return _env->NewStringUTF((const char*)_chars); 3213d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 3214d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 3215d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glCopyBufferSubData ( GLenum readTarget, GLenum writeTarget, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size ) */ 3216d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 3217d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glCopyBufferSubData__IIIII 3218d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint readTarget, jint writeTarget, jint readOffset, jint writeOffset, jint size) { 3219d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glCopyBufferSubData( 3220d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)readTarget, 3221d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)writeTarget, 3222d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLintptr)readOffset, 3223d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLintptr)writeOffset, 3224d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizeiptr)size 3225d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 3226d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 3227d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 3228d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glGetUniformIndices ( GLuint program, GLsizei uniformCount, const GLchar *const *uniformNames, GLuint *uniformIndices ) */ 3229d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic 3230d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallvoid 3231d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glGetUniformIndices_array 3232d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint program, jobjectArray uniformNames_ref, jintArray uniformIndices_ref, jint uniformIndicesOffset) { 3233d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _exception = 0; 3234d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char* _exceptionType = NULL; 3235d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char* _exceptionMessage = NULL; 3236d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _count = 0; 3237d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _i; 3238d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char** _names = NULL; 3239d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLuint* _indices_base = NULL; 3240d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLuint* _indices = NULL; 3241d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 3242d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (!uniformNames_ref) { 3243d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 3244d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 3245d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "uniformNames == null"; 3246d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 3247d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 3248d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _count = _env->GetArrayLength(uniformNames_ref); 3249d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _names = (const char**)calloc(_count, sizeof(const char*)); 3250d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall for (_i = 0; _i < _count; _i++) { 3251d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jstring _name = (jstring)_env->GetObjectArrayElement(uniformNames_ref, _i); 3252d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (!_name) { 3253d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 3254d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 3255d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "null uniformNames element"; 3256d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 3257d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 3258d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _names[_i] = _env->GetStringUTFChars(_name, 0); 3259d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 3260d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 3261d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (!uniformIndices_ref) { 3262d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 3263d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 3264d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "uniformIndices == null"; 3265d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 3266d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 3267d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (uniformIndicesOffset < 0) { 3268d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 3269d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 3270d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "uniformIndicesOffset < 0"; 3271d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 3272d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 3273d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_env->GetArrayLength(uniformIndices_ref) - uniformIndicesOffset < _count) { 3274d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 3275d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 3276d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "not enough space in uniformIndices"; 3277d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 3278d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 32793b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _indices_base = (GLuint*)_env->GetIntArrayElements( 3280d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall uniformIndices_ref, 0); 3281d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _indices = _indices_base + uniformIndicesOffset; 3282d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 3283d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glGetUniformIndices(program, _count, _names, _indices); 3284d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 3285d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallexit: 3286d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_indices_base) { 32873b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseIntArrayElements(uniformIndices_ref, (jint*)_indices_base, 32883b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _exception ? JNI_ABORT : 0); 3289d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 3290d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall for (_i = _count - 1; _i >= 0; _i--) { 3291d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_names[_i]) { 3292d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jstring _name = (jstring)_env->GetObjectArrayElement(uniformNames_ref, _i); 3293d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_name) { 3294d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _env->ReleaseStringUTFChars(_name, _names[_i]); 3295d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 3296d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 3297d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 3298d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall free(_names); 3299d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_exception) { 3300d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jniThrowException(_env, _exceptionType, _exceptionMessage); 3301d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 3302d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 3303d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 3304d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glGetUniformIndices ( GLuint program, GLsizei uniformCount, const GLchar *const *uniformNames, GLuint *uniformIndices ) */ 3305d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic 3306d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallvoid 3307d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glGetUniformIndices_buffer 3308d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint program, jobjectArray uniformNames_ref, jobject uniformIndices_buf) { 3309d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _exception = 0; 3310d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char* _exceptionType = NULL; 3311d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char* _exceptionMessage = NULL; 3312d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _count = 0; 3313d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _i; 3314d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char** _names = NULL; 33153b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi jintArray _uniformIndicesArray = (jintArray)0; 3316d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _uniformIndicesRemaining; 3317d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _uniformIndicesOffset = 0; 3318d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLuint* _indices = NULL; 3319d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall char* _indicesBase = NULL; 3320d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 3321d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (!uniformNames_ref) { 3322d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 3323d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 3324d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "uniformNames == null"; 3325d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 3326d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 3327d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (!uniformIndices_buf) { 3328d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 3329d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 3330d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "uniformIndices == null"; 3331d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 3332d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 3333d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 3334d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _count = _env->GetArrayLength(uniformNames_ref); 3335d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _names = (const char**)calloc(_count, sizeof(const char*)); 3336d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall for (_i = 0; _i < _count; _i++) { 3337d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jstring _name = (jstring)_env->GetObjectArrayElement(uniformNames_ref, _i); 3338d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (!_name) { 3339d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 3340d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 3341d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "null uniformNames element"; 3342d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 3343d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 3344d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _names[_i] = _env->GetStringUTFChars(_name, 0); 3345d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 3346d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 3347d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _indices = (GLuint*)getPointer(_env, uniformIndices_buf, 33483b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi (jarray*)&_uniformIndicesArray, &_uniformIndicesRemaining, 3349d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall &_uniformIndicesOffset); 3350d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (!_indices) { 33513b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _indicesBase = (char*)_env->GetIntArrayElements( 33523b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _uniformIndicesArray, 0); 3353d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _indices = (GLuint*)(_indicesBase + _uniformIndicesOffset); 3354d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 3355d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_uniformIndicesRemaining < _count) { 3356d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 3357d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 3358d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "not enough space in uniformIndices"; 3359d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 3360d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 3361d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 3362d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glGetUniformIndices(program, _count, _names, _indices); 3363d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 3364d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallexit: 3365d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_uniformIndicesArray) { 33663b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi releaseArrayPointer<jintArray, jint*, IntArrayReleaser>( 33673b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env, _uniformIndicesArray, (jint*)_indicesBase, JNI_TRUE); 3368d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 3369d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall for (_i = _count - 1; _i >= 0; _i--) { 3370d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_names[_i]) { 3371d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jstring _name = (jstring)_env->GetObjectArrayElement(uniformNames_ref, _i); 3372d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_name) { 3373d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _env->ReleaseStringUTFChars(_name, _names[_i]); 3374d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 3375d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 3376d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 3377d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall free(_names); 3378d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_exception) { 3379d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jniThrowException(_env, _exceptionType, _exceptionMessage); 3380d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 3381d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 3382d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glGetActiveUniformsiv ( GLuint program, GLsizei uniformCount, const GLuint *uniformIndices, GLenum pname, GLint *params ) */ 3383d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 3384d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glGetActiveUniformsiv__II_3III_3II 3385d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint program, jint uniformCount, jintArray uniformIndices_ref, jint uniformIndicesOffset, jint pname, jintArray params_ref, jint paramsOffset) { 3386d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _exception = 0; 3387d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char * _exceptionType = NULL; 3388d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char * _exceptionMessage = NULL; 3389d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLuint *uniformIndices_base = (GLuint *) 0; 3390d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _uniformIndicesRemaining; 3391d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLuint *uniformIndices = (GLuint *) 0; 3392d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLint *params_base = (GLint *) 0; 3393d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _paramsRemaining; 3394d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLint *params = (GLint *) 0; 3395d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 3396d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (!uniformIndices_ref) { 3397d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 3398d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 3399d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "uniformIndices == null"; 3400d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 3401d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 3402d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (uniformIndicesOffset < 0) { 3403d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 3404d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 3405d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "uniformIndicesOffset < 0"; 3406d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 3407d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 3408d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _uniformIndicesRemaining = _env->GetArrayLength(uniformIndices_ref) - uniformIndicesOffset; 3409d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall uniformIndices_base = (GLuint *) 34103b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->GetIntArrayElements(uniformIndices_ref, (jboolean *)0); 3411d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall uniformIndices = uniformIndices_base + uniformIndicesOffset; 3412d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 3413d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (!params_ref) { 3414d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 3415d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 3416d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "params == null"; 3417d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 3418d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 3419d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (paramsOffset < 0) { 3420d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 3421d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 3422d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "paramsOffset < 0"; 3423d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 3424d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 3425d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _paramsRemaining = _env->GetArrayLength(params_ref) - paramsOffset; 3426d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall params_base = (GLint *) 34273b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->GetIntArrayElements(params_ref, (jboolean *)0); 3428d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall params = params_base + paramsOffset; 3429d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 3430d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glGetActiveUniformsiv( 3431d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint)program, 3432d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)uniformCount, 3433d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint *)uniformIndices, 3434d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)pname, 3435d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint *)params 3436d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 3437d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 3438d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallexit: 3439d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (params_base) { 34403b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseIntArrayElements(params_ref, (jint*)params_base, 3441d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception ? JNI_ABORT: 0); 3442d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 3443d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (uniformIndices_base) { 34443b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseIntArrayElements(uniformIndices_ref, (jint*)uniformIndices_base, 3445d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall JNI_ABORT); 3446d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 3447d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_exception) { 3448d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jniThrowException(_env, _exceptionType, _exceptionMessage); 3449d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 3450d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 3451d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 3452d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glGetActiveUniformsiv ( GLuint program, GLsizei uniformCount, const GLuint *uniformIndices, GLenum pname, GLint *params ) */ 3453d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 3454d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glGetActiveUniformsiv__IILjava_nio_IntBuffer_2ILjava_nio_IntBuffer_2 3455d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint program, jint uniformCount, jobject uniformIndices_buf, jint pname, jobject params_buf) { 34563b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi jintArray _uniformIndicesArray = (jintArray) 0; 3457d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _uniformIndicesBufferOffset = (jint) 0; 34583b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi jintArray _paramsArray = (jintArray) 0; 3459d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _paramsBufferOffset = (jint) 0; 3460d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _uniformIndicesRemaining; 3461d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLuint *uniformIndices = (GLuint *) 0; 3462d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _paramsRemaining; 3463d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLint *params = (GLint *) 0; 3464d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 34653b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi uniformIndices = (GLuint *)getPointer(_env, uniformIndices_buf, (jarray*)&_uniformIndicesArray, &_uniformIndicesRemaining, &_uniformIndicesBufferOffset); 34663b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi params = (GLint *)getPointer(_env, params_buf, (jarray*)&_paramsArray, &_paramsRemaining, &_paramsBufferOffset); 3467d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (uniformIndices == NULL) { 34683b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi char * _uniformIndicesBase = (char *)_env->GetIntArrayElements(_uniformIndicesArray, (jboolean *) 0); 3469d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall uniformIndices = (GLuint *) (_uniformIndicesBase + _uniformIndicesBufferOffset); 3470d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 3471d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (params == NULL) { 34723b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi char * _paramsBase = (char *)_env->GetIntArrayElements(_paramsArray, (jboolean *) 0); 3473d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall params = (GLint *) (_paramsBase + _paramsBufferOffset); 3474d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 3475d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glGetActiveUniformsiv( 3476d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint)program, 3477d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)uniformCount, 3478d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint *)uniformIndices, 3479d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)pname, 3480d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint *)params 3481d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 3482d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_paramsArray) { 34833b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseIntArrayElements(_paramsArray, (jint*)params, 0); 3484d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 3485d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_uniformIndicesArray) { 34863b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseIntArrayElements(_uniformIndicesArray, (jint*)uniformIndices, JNI_ABORT); 3487d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 3488d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 3489d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 3490d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* GLuint glGetUniformBlockIndex ( GLuint program, const GLchar *uniformBlockName ) */ 3491d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic jint 3492d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glGetUniformBlockIndex__ILjava_lang_String_2 3493d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint program, jstring uniformBlockName) { 3494d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _exception = 0; 3495d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char * _exceptionType = NULL; 3496d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char * _exceptionMessage = NULL; 3497d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLuint _returnValue = 0; 3498d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char* _nativeuniformBlockName = 0; 3499d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 3500d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (!uniformBlockName) { 3501428d3fcbe3596b18549cdada9fc68a29f159a946Elliott Hughes _exception = 1; 3502d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 3503d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "uniformBlockName == null"; 3504d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 3505d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 3506d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _nativeuniformBlockName = _env->GetStringUTFChars(uniformBlockName, 0); 3507d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 3508d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _returnValue = glGetUniformBlockIndex( 3509d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint)program, 3510d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLchar *)_nativeuniformBlockName 3511d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 3512d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 3513d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallexit: 3514d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_nativeuniformBlockName) { 3515d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _env->ReleaseStringUTFChars(uniformBlockName, _nativeuniformBlockName); 3516d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 3517d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 3518d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_exception) { 3519d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jniThrowException(_env, _exceptionType, _exceptionMessage); 3520d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 3521d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall return (jint)_returnValue; 3522d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 3523d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 3524d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glGetActiveUniformBlockiv ( GLuint program, GLuint uniformBlockIndex, GLenum pname, GLint *params ) */ 3525d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 3526d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glGetActiveUniformBlockiv__III_3II 3527d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint program, jint uniformBlockIndex, jint pname, jintArray params_ref, jint offset) { 3528d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _exception = 0; 3529d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char * _exceptionType = NULL; 3530d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char * _exceptionMessage = NULL; 3531d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLint *params_base = (GLint *) 0; 3532d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _remaining; 3533d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLint *params = (GLint *) 0; 3534d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 3535d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (!params_ref) { 3536d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 3537d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 3538d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "params == null"; 3539d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 3540d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 3541d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (offset < 0) { 3542d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 3543d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 3544d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "offset < 0"; 3545d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 3546d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 3547d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _remaining = _env->GetArrayLength(params_ref) - offset; 3548d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall params_base = (GLint *) 35493b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->GetIntArrayElements(params_ref, (jboolean *)0); 3550d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall params = params_base + offset; 3551d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 3552d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glGetActiveUniformBlockiv( 3553d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint)program, 3554d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint)uniformBlockIndex, 3555d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)pname, 3556d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint *)params 3557d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 3558d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 3559d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallexit: 3560d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (params_base) { 35613b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseIntArrayElements(params_ref, (jint*)params_base, 3562d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception ? JNI_ABORT: 0); 3563d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 3564d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_exception) { 3565d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jniThrowException(_env, _exceptionType, _exceptionMessage); 3566d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 3567d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 3568d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 3569d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glGetActiveUniformBlockiv ( GLuint program, GLuint uniformBlockIndex, GLenum pname, GLint *params ) */ 3570d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 3571d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glGetActiveUniformBlockiv__IIILjava_nio_IntBuffer_2 3572d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint program, jint uniformBlockIndex, jint pname, jobject params_buf) { 35733b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi jintArray _array = (jintArray) 0; 3574d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _bufferOffset = (jint) 0; 3575d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _remaining; 3576d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLint *params = (GLint *) 0; 3577d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 35783b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi params = (GLint *)getPointer(_env, params_buf, (jarray*)&_array, &_remaining, &_bufferOffset); 3579d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (params == NULL) { 35803b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi char * _paramsBase = (char *)_env->GetIntArrayElements(_array, (jboolean *) 0); 3581d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall params = (GLint *) (_paramsBase + _bufferOffset); 3582d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 3583d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glGetActiveUniformBlockiv( 3584d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint)program, 3585d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint)uniformBlockIndex, 3586d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)pname, 3587d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint *)params 3588d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 3589d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_array) { 35903b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseIntArrayElements(_array, (jint*)params, 0); 3591d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 3592d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 3593d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 3594d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glGetActiveUniformBlockName ( GLuint program, GLuint uniformBlockIndex, GLsizei bufSize, GLsizei *length, GLchar *uniformBlockName ) */ 3595d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 3596d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glGetActiveUniformBlockName_III_3II_3BI 3597d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv* _env, jobject _this, jint program, jint uniformBlockIndex, int bufSize, jintArray length_ref, jint lengthOffset, jbyteArray name_ref, jint nameOffset) { 3598d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _exception = 0; 3599d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char* _exceptionType; 3600d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char* _exceptionMessage; 3601d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLsizei* _length_base = (GLsizei*)0; 3602d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _lengthRemaining; 3603d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLsizei* _length = (GLsizei*)0; 3604d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLchar* _name_base = (GLchar*)0; 3605d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _nameRemaining; 3606d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLchar* _name = (GLchar*)0; 3607d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 36086aff9068f91fdfef0bc55fda0721c180c0de9284Pablo Ceballos if (length_ref) { 36096aff9068f91fdfef0bc55fda0721c180c0de9284Pablo Ceballos if (lengthOffset < 0) { 36106aff9068f91fdfef0bc55fda0721c180c0de9284Pablo Ceballos _exception = 1; 36116aff9068f91fdfef0bc55fda0721c180c0de9284Pablo Ceballos _exceptionType = "java/lang/IllegalArgumentException"; 36126aff9068f91fdfef0bc55fda0721c180c0de9284Pablo Ceballos _exceptionMessage = "lengthOffset < 0"; 36136aff9068f91fdfef0bc55fda0721c180c0de9284Pablo Ceballos goto exit; 36146aff9068f91fdfef0bc55fda0721c180c0de9284Pablo Ceballos } 36156aff9068f91fdfef0bc55fda0721c180c0de9284Pablo Ceballos _lengthRemaining = _env->GetArrayLength(length_ref) - lengthOffset; 36166aff9068f91fdfef0bc55fda0721c180c0de9284Pablo Ceballos _length_base = (GLsizei*)_env->GetIntArrayElements( 36176aff9068f91fdfef0bc55fda0721c180c0de9284Pablo Ceballos length_ref, (jboolean*)0); 36186aff9068f91fdfef0bc55fda0721c180c0de9284Pablo Ceballos _length = _length_base + lengthOffset; 3619d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 3620d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 3621d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (!name_ref) { 3622d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 3623d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 3624d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "uniformBlockName == null"; 3625d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 3626d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 3627d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (nameOffset < 0) { 3628d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 3629d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 3630d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "uniformBlockNameOffset < 0"; 3631d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 3632d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 3633d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _nameRemaining = _env->GetArrayLength(name_ref) - nameOffset; 36343b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _name_base = (GLchar*)_env->GetByteArrayElements( 3635d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall name_ref, (jboolean*)0); 3636d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _name = _name_base + nameOffset; 3637d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 3638d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glGetActiveUniformBlockName( 3639d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint)program, 3640d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint)uniformBlockIndex, 3641d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)bufSize, 3642d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei*)_length, 3643d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLchar*)_name 3644d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 3645d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 3646d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallexit: 3647d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_name_base) { 36483b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseByteArrayElements(name_ref, (jbyte*)_name_base, 3649d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception ? JNI_ABORT: 0); 3650d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 3651d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_length_base) { 36523b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseIntArrayElements(length_ref, (jint*)_length_base, 3653d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception ? JNI_ABORT: 0); 3654d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 3655d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_exception) { 3656d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jniThrowException(_env, _exceptionType, _exceptionMessage); 3657d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 3658d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 3659d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 3660d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glGetActiveUniformBlockName ( GLuint program, GLuint uniformBlockIndex, GLsizei bufSize, GLsizei *length, GLchar *uniformBlockName ) */ 3661d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 3662d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glGetActiveUniformBlockName_IILjava_nio_Buffer_2Ljava_nio_Buffer_2 3663d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv* _env, jobject _this, jint program, jint uniformBlockIndex, jobject length_buf, jobject uniformBlockName_buf) { 3664d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _exception = 0; 3665d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char* _exceptionType; 3666d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char* _exceptionMessage; 3667d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jarray _lengthArray = (jarray)0; 3668d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _lengthBufferOffset = (jint)0; 3669d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLsizei* _length = (GLsizei*)0; 3670d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _lengthRemaining; 3671d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jarray _nameArray = (jarray)0; 3672d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _nameBufferOffset = (jint)0; 3673d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLchar* _name = (GLchar*)0; 3674d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _nameRemaining; 3675d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 3676d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _length = (GLsizei*)getPointer(_env, length_buf, &_lengthArray, &_lengthRemaining, &_lengthBufferOffset); 3677d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_length == NULL) { 3678d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLsizei* _lengthBase = (GLsizei*)_env->GetPrimitiveArrayCritical(_lengthArray, (jboolean*)0); 3679d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _length = (GLsizei*)(_lengthBase + _lengthBufferOffset); 3680d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 3681d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 3682d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _name = (GLchar*)getPointer(_env, uniformBlockName_buf, &_nameArray, &_nameRemaining, &_nameBufferOffset); 3683d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_name == NULL) { 3684d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLchar* _nameBase = (GLchar*)_env->GetPrimitiveArrayCritical(_nameArray, (jboolean*)0); 3685d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _name = (GLchar*)(_nameBase + _nameBufferOffset); 3686d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 3687d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 3688d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glGetActiveUniformBlockName( 3689d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint)program, 3690d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint)uniformBlockIndex, 3691d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)_nameRemaining, 3692d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _length, _name 3693d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 3694d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_nameArray) { 3695d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall releasePointer(_env, _nameArray, _name, JNI_TRUE); 3696d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 3697d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_lengthArray) { 3698d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall releasePointer(_env, _lengthArray, _length, JNI_TRUE); 3699d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 3700d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 3701d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 3702d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glGetActiveUniformBlockName ( GLuint program, GLuint uniformBlockIndex, GLsizei bufSize, GLsizei *length, GLchar *uniformBlockName ) */ 3703d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic jstring 3704d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glGetActiveUniformBlockName_II 3705d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint program, jint uniformBlockIndex) { 3706d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLint len = 0; 3707d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glGetActiveUniformBlockiv((GLuint)program, (GLuint)uniformBlockIndex, 3708d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GL_UNIFORM_BLOCK_NAME_LENGTH, &len); 3709d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLchar* name = (GLchar*)malloc(len); 3710d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glGetActiveUniformBlockName((GLuint)program, (GLuint)uniformBlockIndex, 3711d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall len, NULL, name); 3712d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jstring result = _env->NewStringUTF(name); 3713d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall free(name); 3714d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall return result; 3715d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 3716d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glUniformBlockBinding ( GLuint program, GLuint uniformBlockIndex, GLuint uniformBlockBinding ) */ 3717d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 3718d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glUniformBlockBinding__III 3719d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint program, jint uniformBlockIndex, jint uniformBlockBinding) { 3720d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glUniformBlockBinding( 3721d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint)program, 3722d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint)uniformBlockIndex, 3723d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint)uniformBlockBinding 3724d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 3725d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 3726d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 3727d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glDrawArraysInstanced ( GLenum mode, GLint first, GLsizei count, GLsizei instanceCount ) */ 3728d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 3729d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glDrawArraysInstanced__IIII 3730d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint mode, jint first, jint count, jint instanceCount) { 3731d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glDrawArraysInstanced( 3732d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)mode, 3733d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint)first, 3734d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)count, 3735d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)instanceCount 3736d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 3737d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 3738d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 3739d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glDrawElementsInstanced ( GLenum mode, GLsizei count, GLenum type, const GLvoid *indices, GLsizei instanceCount ) */ 3740d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 3741d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glDrawElementsInstanced__IIILjava_nio_Buffer_2I 3742d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint mode, jint count, jint type, jobject indices_buf, jint instanceCount) { 3743d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jarray _array = (jarray) 0; 3744d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _bufferOffset = (jint) 0; 3745d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _remaining; 3746d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLvoid *indices = (GLvoid *) 0; 3747d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 3748d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall indices = (GLvoid *)getPointer(_env, indices_buf, &_array, &_remaining, &_bufferOffset); 3749d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (indices == NULL) { 3750d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall char * _indicesBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); 3751d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall indices = (GLvoid *) (_indicesBase + _bufferOffset); 3752d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 3753d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glDrawElementsInstanced( 3754d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)mode, 3755d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)count, 3756d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)type, 3757d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLvoid *)indices, 3758d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)instanceCount 3759d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 3760d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_array) { 3761d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall releasePointer(_env, _array, indices, JNI_FALSE); 3762d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 3763d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 3764d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 3765d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glDrawElementsInstanced ( GLenum mode, GLsizei count, GLenum type, const GLvoid *indices, GLsizei instanceCount ) */ 3766d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 3767d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glDrawElementsInstanced__IIIII 3768d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint mode, jint count, jint type, jint indicesOffset, jint instanceCount) { 3769d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glDrawElementsInstanced( 3770d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)mode, 3771d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)count, 3772d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)type, 377310caf0390d39f0bd46876eee6ab2c9a73d4e1d39Dan Albert (GLvoid *)static_cast<uintptr_t>(indicesOffset), 3774d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)instanceCount 3775d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 3776d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 3777d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* GLsync glFenceSync ( GLenum condition, GLbitfield flags ) */ 3778d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic jlong 3779d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glFenceSync__II 3780d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint condition, jint flags) { 3781d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLsync _returnValue; 3782d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _returnValue = glFenceSync( 3783d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)condition, 3784d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLbitfield)flags 3785d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 3786d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall return (jlong)_returnValue; 3787d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 3788d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 3789d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* GLboolean glIsSync ( GLsync sync ) */ 3790d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic jboolean 3791d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glIsSync__J 3792d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jlong sync) { 3793d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLboolean _returnValue; 3794d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _returnValue = glIsSync( 3795d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsync)sync 3796d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 3797d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall return (jboolean)_returnValue; 3798d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 3799d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 3800d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glDeleteSync ( GLsync sync ) */ 3801d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 3802d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glDeleteSync__J 3803d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jlong sync) { 3804d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glDeleteSync( 3805d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsync)sync 3806d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 3807d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 3808d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 3809d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* GLenum glClientWaitSync ( GLsync sync, GLbitfield flags, GLuint64 timeout ) */ 3810d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic jint 3811d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glClientWaitSync__JIJ 3812d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jlong sync, jint flags, jlong timeout) { 3813d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLenum _returnValue; 3814d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _returnValue = glClientWaitSync( 3815d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsync)sync, 3816d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLbitfield)flags, 3817d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint64)timeout 3818d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 3819d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall return (jint)_returnValue; 3820d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 3821d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 3822d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glWaitSync ( GLsync sync, GLbitfield flags, GLuint64 timeout ) */ 3823d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 3824d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glWaitSync__JIJ 3825d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jlong sync, jint flags, jlong timeout) { 3826d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glWaitSync( 3827d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsync)sync, 3828d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLbitfield)flags, 3829d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint64)timeout 3830d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 3831d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 3832d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 3833d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glGetInteger64v ( GLenum pname, GLint64 *params ) */ 3834d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 3835d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glGetInteger64v__I_3JI 3836d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint pname, jlongArray params_ref, jint offset) { 3837d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _exception = 0; 3838d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char * _exceptionType = NULL; 3839d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char * _exceptionMessage = NULL; 3840d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLint64 *params_base = (GLint64 *) 0; 3841d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _remaining; 3842d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLint64 *params = (GLint64 *) 0; 3843d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 3844d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (!params_ref) { 3845d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 3846d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 3847d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "params == null"; 3848d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 3849d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 3850d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (offset < 0) { 3851d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 3852d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 3853d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "offset < 0"; 3854d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 3855d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 3856d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _remaining = _env->GetArrayLength(params_ref) - offset; 3857d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall params_base = (GLint64 *) 38583b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->GetLongArrayElements(params_ref, (jboolean *)0); 3859d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall params = params_base + offset; 3860d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 3861d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glGetInteger64v( 3862d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)pname, 3863d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint64 *)params 3864d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 3865d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 3866d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallexit: 3867d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (params_base) { 38683b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseLongArrayElements(params_ref, (jlong*)params_base, 3869d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception ? JNI_ABORT: 0); 3870d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 3871d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_exception) { 3872d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jniThrowException(_env, _exceptionType, _exceptionMessage); 3873d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 3874d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 3875d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 3876d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glGetInteger64v ( GLenum pname, GLint64 *params ) */ 3877d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 3878d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glGetInteger64v__ILjava_nio_LongBuffer_2 3879d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint pname, jobject params_buf) { 38803b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi jlongArray _array = (jlongArray) 0; 3881d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _bufferOffset = (jint) 0; 3882d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _remaining; 3883d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLint64 *params = (GLint64 *) 0; 3884d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 38853b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi params = (GLint64 *)getPointer(_env, params_buf, (jarray*)&_array, &_remaining, &_bufferOffset); 3886d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (params == NULL) { 38873b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi char * _paramsBase = (char *)_env->GetLongArrayElements(_array, (jboolean *) 0); 3888d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall params = (GLint64 *) (_paramsBase + _bufferOffset); 3889d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 3890d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glGetInteger64v( 3891d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)pname, 3892d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint64 *)params 3893d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 3894d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_array) { 38953b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseLongArrayElements(_array, (jlong*)params, 0); 3896d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 3897d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 3898d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 3899d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glGetSynciv ( GLsync sync, GLenum pname, GLsizei bufSize, GLsizei *length, GLint *values ) */ 3900d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 3901d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glGetSynciv__JII_3II_3II 3902d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jlong sync, jint pname, jint bufSize, jintArray length_ref, jint lengthOffset, jintArray values_ref, jint valuesOffset) { 3903d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _exception = 0; 3904d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char * _exceptionType = NULL; 3905d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char * _exceptionMessage = NULL; 3906d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLsizei *length_base = (GLsizei *) 0; 3907d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _lengthRemaining; 3908d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLsizei *length = (GLsizei *) 0; 3909d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLint *values_base = (GLint *) 0; 3910d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _valuesRemaining; 3911d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLint *values = (GLint *) 0; 3912d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 39136aff9068f91fdfef0bc55fda0721c180c0de9284Pablo Ceballos if (length_ref) { 39146aff9068f91fdfef0bc55fda0721c180c0de9284Pablo Ceballos if (lengthOffset < 0) { 39156aff9068f91fdfef0bc55fda0721c180c0de9284Pablo Ceballos _exception = 1; 39166aff9068f91fdfef0bc55fda0721c180c0de9284Pablo Ceballos _exceptionType = "java/lang/IllegalArgumentException"; 39176aff9068f91fdfef0bc55fda0721c180c0de9284Pablo Ceballos _exceptionMessage = "lengthOffset < 0"; 39186aff9068f91fdfef0bc55fda0721c180c0de9284Pablo Ceballos goto exit; 39196aff9068f91fdfef0bc55fda0721c180c0de9284Pablo Ceballos } 39206aff9068f91fdfef0bc55fda0721c180c0de9284Pablo Ceballos _lengthRemaining = _env->GetArrayLength(length_ref) - lengthOffset; 39216aff9068f91fdfef0bc55fda0721c180c0de9284Pablo Ceballos length_base = (GLsizei *) 39226aff9068f91fdfef0bc55fda0721c180c0de9284Pablo Ceballos _env->GetIntArrayElements(length_ref, (jboolean *)0); 39236aff9068f91fdfef0bc55fda0721c180c0de9284Pablo Ceballos length = length_base + lengthOffset; 3924d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 3925d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 3926d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (!values_ref) { 3927d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 3928d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 3929d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "values == null"; 3930d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 3931d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 3932d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (valuesOffset < 0) { 3933d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 3934d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 3935d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "valuesOffset < 0"; 3936d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 3937d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 3938d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _valuesRemaining = _env->GetArrayLength(values_ref) - valuesOffset; 3939d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall values_base = (GLint *) 39403b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->GetIntArrayElements(values_ref, (jboolean *)0); 3941d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall values = values_base + valuesOffset; 3942d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 3943d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glGetSynciv( 3944d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsync)sync, 3945d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)pname, 3946d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)bufSize, 3947d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei *)length, 3948d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint *)values 3949d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 3950d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 3951d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallexit: 3952d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (values_base) { 39533b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseIntArrayElements(values_ref, (jint*)values_base, 3954d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception ? JNI_ABORT: 0); 3955d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 3956d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (length_base) { 39573b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseIntArrayElements(length_ref, (jint*)length_base, 3958d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception ? JNI_ABORT: 0); 3959d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 3960d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_exception) { 3961d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jniThrowException(_env, _exceptionType, _exceptionMessage); 3962d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 3963d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 3964d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 3965d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glGetSynciv ( GLsync sync, GLenum pname, GLsizei bufSize, GLsizei *length, GLint *values ) */ 3966d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 3967d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glGetSynciv__JIILjava_nio_IntBuffer_2Ljava_nio_IntBuffer_2 3968d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jlong sync, jint pname, jint bufSize, jobject length_buf, jobject values_buf) { 39693b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi jintArray _lengthArray = (jintArray) 0; 3970d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _lengthBufferOffset = (jint) 0; 39713b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi jintArray _valuesArray = (jintArray) 0; 3972d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _valuesBufferOffset = (jint) 0; 3973d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _lengthRemaining; 3974d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLsizei *length = (GLsizei *) 0; 3975d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _valuesRemaining; 3976d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLint *values = (GLint *) 0; 3977d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 39786aff9068f91fdfef0bc55fda0721c180c0de9284Pablo Ceballos if (length_buf) { 39796aff9068f91fdfef0bc55fda0721c180c0de9284Pablo Ceballos length = (GLsizei *)getPointer(_env, length_buf, (jarray*)&_lengthArray, &_lengthRemaining, &_lengthBufferOffset); 39806aff9068f91fdfef0bc55fda0721c180c0de9284Pablo Ceballos } 39813b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi values = (GLint *)getPointer(_env, values_buf, (jarray*)&_valuesArray, &_valuesRemaining, &_valuesBufferOffset); 39826aff9068f91fdfef0bc55fda0721c180c0de9284Pablo Ceballos if (length_buf && length == NULL) { 39833b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi char * _lengthBase = (char *)_env->GetIntArrayElements(_lengthArray, (jboolean *) 0); 3984d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall length = (GLsizei *) (_lengthBase + _lengthBufferOffset); 3985d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 3986d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (values == NULL) { 39873b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi char * _valuesBase = (char *)_env->GetIntArrayElements(_valuesArray, (jboolean *) 0); 3988d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall values = (GLint *) (_valuesBase + _valuesBufferOffset); 3989d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 3990d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glGetSynciv( 3991d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsync)sync, 3992d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)pname, 3993d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)bufSize, 3994d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei *)length, 3995d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint *)values 3996d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 3997d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_valuesArray) { 39983b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseIntArrayElements(_valuesArray, (jint*)values, 0); 3999d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 4000d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_lengthArray) { 40013b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseIntArrayElements(_lengthArray, (jint*)length, 0); 4002d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 4003d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 4004d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 4005d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glGetInteger64i_v ( GLenum target, GLuint index, GLint64 *data ) */ 4006d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 4007d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glGetInteger64i_v__II_3JI 4008d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint target, jint index, jlongArray data_ref, jint offset) { 4009d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _exception = 0; 4010d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char * _exceptionType = NULL; 4011d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char * _exceptionMessage = NULL; 4012d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLint64 *data_base = (GLint64 *) 0; 4013d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _remaining; 4014d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLint64 *data = (GLint64 *) 0; 4015d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 4016d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (!data_ref) { 4017d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 4018d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 4019d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "data == null"; 4020d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 4021d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 4022d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (offset < 0) { 4023d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 4024d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 4025d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "offset < 0"; 4026d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 4027d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 4028d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _remaining = _env->GetArrayLength(data_ref) - offset; 4029d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall data_base = (GLint64 *) 40303b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->GetLongArrayElements(data_ref, (jboolean *)0); 4031d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall data = data_base + offset; 4032d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 4033d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glGetInteger64i_v( 4034d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)target, 4035d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint)index, 4036d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint64 *)data 4037d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 4038d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 4039d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallexit: 4040d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (data_base) { 40413b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseLongArrayElements(data_ref, (jlong*)data_base, 4042d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception ? JNI_ABORT: 0); 4043d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 4044d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_exception) { 4045d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jniThrowException(_env, _exceptionType, _exceptionMessage); 4046d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 4047d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 4048d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 4049d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glGetInteger64i_v ( GLenum target, GLuint index, GLint64 *data ) */ 4050d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 4051d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glGetInteger64i_v__IILjava_nio_LongBuffer_2 4052d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint target, jint index, jobject data_buf) { 40533b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi jlongArray _array = (jlongArray) 0; 4054d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _bufferOffset = (jint) 0; 4055d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _remaining; 4056d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLint64 *data = (GLint64 *) 0; 4057d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 40583b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi data = (GLint64 *)getPointer(_env, data_buf, (jarray*)&_array, &_remaining, &_bufferOffset); 4059d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (data == NULL) { 40603b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi char * _dataBase = (char *)_env->GetLongArrayElements(_array, (jboolean *) 0); 4061d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall data = (GLint64 *) (_dataBase + _bufferOffset); 4062d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 4063d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glGetInteger64i_v( 4064d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)target, 4065d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint)index, 4066d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint64 *)data 4067d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 4068d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_array) { 40693b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseLongArrayElements(_array, (jlong*)data, 0); 4070d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 4071d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 4072d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 4073d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glGetBufferParameteri64v ( GLenum target, GLenum pname, GLint64 *params ) */ 4074d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 4075d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glGetBufferParameteri64v__II_3JI 4076d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint target, jint pname, jlongArray params_ref, jint offset) { 4077d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _exception = 0; 4078d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char * _exceptionType = NULL; 4079d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char * _exceptionMessage = NULL; 4080d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLint64 *params_base = (GLint64 *) 0; 4081d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _remaining; 4082d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLint64 *params = (GLint64 *) 0; 4083d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 4084d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (!params_ref) { 4085d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 4086d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 4087d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "params == null"; 4088d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 4089d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 4090d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (offset < 0) { 4091d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 4092d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 4093d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "offset < 0"; 4094d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 4095d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 4096d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _remaining = _env->GetArrayLength(params_ref) - offset; 4097d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall params_base = (GLint64 *) 40983b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->GetLongArrayElements(params_ref, (jboolean *)0); 4099d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall params = params_base + offset; 4100d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 4101d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glGetBufferParameteri64v( 4102d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)target, 4103d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)pname, 4104d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint64 *)params 4105d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 4106d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 4107d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallexit: 4108d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (params_base) { 41093b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseLongArrayElements(params_ref, (jlong*)params_base, 4110d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception ? JNI_ABORT: 0); 4111d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 4112d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_exception) { 4113d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jniThrowException(_env, _exceptionType, _exceptionMessage); 4114d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 4115d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 4116d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 4117d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glGetBufferParameteri64v ( GLenum target, GLenum pname, GLint64 *params ) */ 4118d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 4119d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glGetBufferParameteri64v__IILjava_nio_LongBuffer_2 4120d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint target, jint pname, jobject params_buf) { 41213b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi jlongArray _array = (jlongArray) 0; 4122d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _bufferOffset = (jint) 0; 4123d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _remaining; 4124d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLint64 *params = (GLint64 *) 0; 4125d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 41263b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi params = (GLint64 *)getPointer(_env, params_buf, (jarray*)&_array, &_remaining, &_bufferOffset); 4127d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (params == NULL) { 41283b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi char * _paramsBase = (char *)_env->GetLongArrayElements(_array, (jboolean *) 0); 4129d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall params = (GLint64 *) (_paramsBase + _bufferOffset); 4130d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 4131d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glGetBufferParameteri64v( 4132d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)target, 4133d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)pname, 4134d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint64 *)params 4135d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 4136d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_array) { 41373b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseLongArrayElements(_array, (jlong*)params, 0); 4138d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 4139d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 4140d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 4141d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glGenSamplers ( GLsizei count, GLuint *samplers ) */ 4142d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 4143d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glGenSamplers__I_3II 4144d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint count, jintArray samplers_ref, jint offset) { 4145d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _exception = 0; 4146d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char * _exceptionType = NULL; 4147d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char * _exceptionMessage = NULL; 4148d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLuint *samplers_base = (GLuint *) 0; 4149d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _remaining; 4150d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLuint *samplers = (GLuint *) 0; 4151d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 4152d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (!samplers_ref) { 4153d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 4154d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 4155d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "samplers == null"; 4156d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 4157d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 4158d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (offset < 0) { 4159d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 4160d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 4161d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "offset < 0"; 4162d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 4163d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 4164d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _remaining = _env->GetArrayLength(samplers_ref) - offset; 4165d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall samplers_base = (GLuint *) 41663b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->GetIntArrayElements(samplers_ref, (jboolean *)0); 4167d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall samplers = samplers_base + offset; 4168d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 4169d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glGenSamplers( 4170d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)count, 4171d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint *)samplers 4172d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 4173d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 4174d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallexit: 4175d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (samplers_base) { 41763b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseIntArrayElements(samplers_ref, (jint*)samplers_base, 4177d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception ? JNI_ABORT: 0); 4178d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 4179d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_exception) { 4180d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jniThrowException(_env, _exceptionType, _exceptionMessage); 4181d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 4182d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 4183d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 4184d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glGenSamplers ( GLsizei count, GLuint *samplers ) */ 4185d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 4186d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glGenSamplers__ILjava_nio_IntBuffer_2 4187d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint count, jobject samplers_buf) { 41883b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi jintArray _array = (jintArray) 0; 4189d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _bufferOffset = (jint) 0; 4190d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _remaining; 4191d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLuint *samplers = (GLuint *) 0; 4192d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 41933b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi samplers = (GLuint *)getPointer(_env, samplers_buf, (jarray*)&_array, &_remaining, &_bufferOffset); 4194d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (samplers == NULL) { 41953b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi char * _samplersBase = (char *)_env->GetIntArrayElements(_array, (jboolean *) 0); 4196d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall samplers = (GLuint *) (_samplersBase + _bufferOffset); 4197d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 4198d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glGenSamplers( 4199d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)count, 4200d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint *)samplers 4201d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 4202d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_array) { 42033b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseIntArrayElements(_array, (jint*)samplers, 0); 4204d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 4205d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 4206d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 4207d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glDeleteSamplers ( GLsizei count, const GLuint *samplers ) */ 4208d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 4209d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glDeleteSamplers__I_3II 4210d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint count, jintArray samplers_ref, jint offset) { 4211d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _exception = 0; 4212d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char * _exceptionType = NULL; 4213d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char * _exceptionMessage = NULL; 4214d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLuint *samplers_base = (GLuint *) 0; 4215d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _remaining; 4216d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLuint *samplers = (GLuint *) 0; 4217d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 4218d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (!samplers_ref) { 4219d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 4220d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 4221d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "samplers == null"; 4222d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 4223d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 4224d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (offset < 0) { 4225d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 4226d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 4227d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "offset < 0"; 4228d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 4229d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 4230d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _remaining = _env->GetArrayLength(samplers_ref) - offset; 4231d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall samplers_base = (GLuint *) 42323b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->GetIntArrayElements(samplers_ref, (jboolean *)0); 4233d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall samplers = samplers_base + offset; 4234d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 4235d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glDeleteSamplers( 4236d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)count, 4237d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint *)samplers 4238d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 4239d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 4240d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallexit: 4241d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (samplers_base) { 42423b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseIntArrayElements(samplers_ref, (jint*)samplers_base, 4243d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall JNI_ABORT); 4244d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 4245d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_exception) { 4246d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jniThrowException(_env, _exceptionType, _exceptionMessage); 4247d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 4248d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 4249d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 4250d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glDeleteSamplers ( GLsizei count, const GLuint *samplers ) */ 4251d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 4252d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glDeleteSamplers__ILjava_nio_IntBuffer_2 4253d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint count, jobject samplers_buf) { 42543b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi jintArray _array = (jintArray) 0; 4255d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _bufferOffset = (jint) 0; 4256d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _remaining; 4257d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLuint *samplers = (GLuint *) 0; 4258d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 42593b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi samplers = (GLuint *)getPointer(_env, samplers_buf, (jarray*)&_array, &_remaining, &_bufferOffset); 4260d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (samplers == NULL) { 42613b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi char * _samplersBase = (char *)_env->GetIntArrayElements(_array, (jboolean *) 0); 4262d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall samplers = (GLuint *) (_samplersBase + _bufferOffset); 4263d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 4264d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glDeleteSamplers( 4265d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)count, 4266d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint *)samplers 4267d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 4268d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_array) { 42693b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseIntArrayElements(_array, (jint*)samplers, JNI_ABORT); 4270d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 4271d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 4272d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 4273d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* GLboolean glIsSampler ( GLuint sampler ) */ 4274d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic jboolean 4275d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glIsSampler__I 4276d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint sampler) { 4277d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLboolean _returnValue; 4278d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _returnValue = glIsSampler( 4279d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint)sampler 4280d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 4281d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall return (jboolean)_returnValue; 4282d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 4283d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 4284d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glBindSampler ( GLuint unit, GLuint sampler ) */ 4285d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 4286d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glBindSampler__II 4287d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint unit, jint sampler) { 4288d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glBindSampler( 4289d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint)unit, 4290d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint)sampler 4291d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 4292d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 4293d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 4294d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glSamplerParameteri ( GLuint sampler, GLenum pname, GLint param ) */ 4295d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 4296d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glSamplerParameteri__III 4297d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint sampler, jint pname, jint param) { 4298d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glSamplerParameteri( 4299d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint)sampler, 4300d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)pname, 4301d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint)param 4302d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 4303d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 4304d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 4305d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glSamplerParameteriv ( GLuint sampler, GLenum pname, const GLint *param ) */ 4306d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 4307d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glSamplerParameteriv__II_3II 4308d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint sampler, jint pname, jintArray param_ref, jint offset) { 4309d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _exception = 0; 4310d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char * _exceptionType = NULL; 4311d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char * _exceptionMessage = NULL; 4312d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLint *param_base = (GLint *) 0; 4313d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _remaining; 4314d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLint *param = (GLint *) 0; 4315d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 4316d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (!param_ref) { 4317d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 4318d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 4319d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "param == null"; 4320d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 4321d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 4322d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (offset < 0) { 4323d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 4324d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 4325d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "offset < 0"; 4326d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 4327d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 4328d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _remaining = _env->GetArrayLength(param_ref) - offset; 4329d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall param_base = (GLint *) 43303b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->GetIntArrayElements(param_ref, (jboolean *)0); 4331d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall param = param_base + offset; 4332d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 4333d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glSamplerParameteriv( 4334d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint)sampler, 4335d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)pname, 4336d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint *)param 4337d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 4338d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 4339d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallexit: 4340d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (param_base) { 43413b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseIntArrayElements(param_ref, (jint*)param_base, 4342d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall JNI_ABORT); 4343d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 4344d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_exception) { 4345d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jniThrowException(_env, _exceptionType, _exceptionMessage); 4346d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 4347d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 4348d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 4349d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glSamplerParameteriv ( GLuint sampler, GLenum pname, const GLint *param ) */ 4350d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 4351d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glSamplerParameteriv__IILjava_nio_IntBuffer_2 4352d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint sampler, jint pname, jobject param_buf) { 43533b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi jintArray _array = (jintArray) 0; 4354d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _bufferOffset = (jint) 0; 4355d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _remaining; 4356d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLint *param = (GLint *) 0; 4357d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 43583b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi param = (GLint *)getPointer(_env, param_buf, (jarray*)&_array, &_remaining, &_bufferOffset); 4359d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (param == NULL) { 43603b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi char * _paramBase = (char *)_env->GetIntArrayElements(_array, (jboolean *) 0); 4361d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall param = (GLint *) (_paramBase + _bufferOffset); 4362d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 4363d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glSamplerParameteriv( 4364d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint)sampler, 4365d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)pname, 4366d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint *)param 4367d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 4368d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_array) { 43693b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseIntArrayElements(_array, (jint*)param, JNI_ABORT); 4370d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 4371d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 4372d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 4373d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glSamplerParameterf ( GLuint sampler, GLenum pname, GLfloat param ) */ 4374d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 4375d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glSamplerParameterf__IIF 4376d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint sampler, jint pname, jfloat param) { 4377d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glSamplerParameterf( 4378d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint)sampler, 4379d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)pname, 4380d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLfloat)param 4381d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 4382d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 4383d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 4384d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glSamplerParameterfv ( GLuint sampler, GLenum pname, const GLfloat *param ) */ 4385d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 4386d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glSamplerParameterfv__II_3FI 4387d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint sampler, jint pname, jfloatArray param_ref, jint offset) { 4388d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _exception = 0; 4389d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char * _exceptionType = NULL; 4390d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char * _exceptionMessage = NULL; 4391d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLfloat *param_base = (GLfloat *) 0; 4392d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _remaining; 4393d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLfloat *param = (GLfloat *) 0; 4394d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 4395d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (!param_ref) { 4396d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 4397d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 4398d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "param == null"; 4399d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 4400d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 4401d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (offset < 0) { 4402d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 4403d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 4404d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "offset < 0"; 4405d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 4406d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 4407d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _remaining = _env->GetArrayLength(param_ref) - offset; 4408d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall param_base = (GLfloat *) 44093b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->GetFloatArrayElements(param_ref, (jboolean *)0); 4410d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall param = param_base + offset; 4411d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 4412d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glSamplerParameterfv( 4413d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint)sampler, 4414d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)pname, 4415d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLfloat *)param 4416d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 4417d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 4418d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallexit: 4419d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (param_base) { 44203b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseFloatArrayElements(param_ref, (jfloat*)param_base, 4421d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall JNI_ABORT); 4422d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 4423d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_exception) { 4424d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jniThrowException(_env, _exceptionType, _exceptionMessage); 4425d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 4426d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 4427d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 4428d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glSamplerParameterfv ( GLuint sampler, GLenum pname, const GLfloat *param ) */ 4429d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 4430d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glSamplerParameterfv__IILjava_nio_FloatBuffer_2 4431d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint sampler, jint pname, jobject param_buf) { 44323b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi jfloatArray _array = (jfloatArray) 0; 4433d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _bufferOffset = (jint) 0; 4434d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _remaining; 4435d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLfloat *param = (GLfloat *) 0; 4436d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 44373b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi param = (GLfloat *)getPointer(_env, param_buf, (jarray*)&_array, &_remaining, &_bufferOffset); 4438d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (param == NULL) { 44393b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi char * _paramBase = (char *)_env->GetFloatArrayElements(_array, (jboolean *) 0); 4440d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall param = (GLfloat *) (_paramBase + _bufferOffset); 4441d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 4442d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glSamplerParameterfv( 4443d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint)sampler, 4444d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)pname, 4445d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLfloat *)param 4446d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 4447d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_array) { 44483b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseFloatArrayElements(_array, (jfloat*)param, JNI_ABORT); 4449d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 4450d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 4451d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 4452d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glGetSamplerParameteriv ( GLuint sampler, GLenum pname, GLint *params ) */ 4453d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 4454d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glGetSamplerParameteriv__II_3II 4455d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint sampler, jint pname, jintArray params_ref, jint offset) { 4456d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _exception = 0; 4457d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char * _exceptionType = NULL; 4458d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char * _exceptionMessage = NULL; 4459d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLint *params_base = (GLint *) 0; 4460d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _remaining; 4461d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLint *params = (GLint *) 0; 4462d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 4463d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (!params_ref) { 4464d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 4465d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 4466d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "params == null"; 4467d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 4468d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 4469d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (offset < 0) { 4470d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 4471d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 4472d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "offset < 0"; 4473d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 4474d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 4475d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _remaining = _env->GetArrayLength(params_ref) - offset; 4476d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall params_base = (GLint *) 44773b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->GetIntArrayElements(params_ref, (jboolean *)0); 4478d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall params = params_base + offset; 4479d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 4480d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glGetSamplerParameteriv( 4481d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint)sampler, 4482d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)pname, 4483d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint *)params 4484d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 4485d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 4486d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallexit: 4487d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (params_base) { 44883b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseIntArrayElements(params_ref, (jint*)params_base, 4489d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception ? JNI_ABORT: 0); 4490d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 4491d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_exception) { 4492d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jniThrowException(_env, _exceptionType, _exceptionMessage); 4493d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 4494d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 4495d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 4496d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glGetSamplerParameteriv ( GLuint sampler, GLenum pname, GLint *params ) */ 4497d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 4498d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glGetSamplerParameteriv__IILjava_nio_IntBuffer_2 4499d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint sampler, jint pname, jobject params_buf) { 45003b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi jintArray _array = (jintArray) 0; 4501d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _bufferOffset = (jint) 0; 4502d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _remaining; 4503d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLint *params = (GLint *) 0; 4504d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 45053b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi params = (GLint *)getPointer(_env, params_buf, (jarray*)&_array, &_remaining, &_bufferOffset); 4506d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (params == NULL) { 45073b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi char * _paramsBase = (char *)_env->GetIntArrayElements(_array, (jboolean *) 0); 4508d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall params = (GLint *) (_paramsBase + _bufferOffset); 4509d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 4510d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glGetSamplerParameteriv( 4511d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint)sampler, 4512d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)pname, 4513d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint *)params 4514d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 4515d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_array) { 45163b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseIntArrayElements(_array, (jint*)params, 0); 4517d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 4518d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 4519d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 4520d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glGetSamplerParameterfv ( GLuint sampler, GLenum pname, GLfloat *params ) */ 4521d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 4522d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glGetSamplerParameterfv__II_3FI 4523d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint sampler, jint pname, jfloatArray params_ref, jint offset) { 4524d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _exception = 0; 4525d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char * _exceptionType = NULL; 4526d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char * _exceptionMessage = NULL; 4527d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLfloat *params_base = (GLfloat *) 0; 4528d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _remaining; 4529d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLfloat *params = (GLfloat *) 0; 4530d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 4531d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (!params_ref) { 4532d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 4533d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 4534d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "params == null"; 4535d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 4536d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 4537d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (offset < 0) { 4538d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 4539d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 4540d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "offset < 0"; 4541d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 4542d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 4543d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _remaining = _env->GetArrayLength(params_ref) - offset; 4544d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall params_base = (GLfloat *) 45453b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->GetFloatArrayElements(params_ref, (jboolean *)0); 4546d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall params = params_base + offset; 4547d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 4548d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glGetSamplerParameterfv( 4549d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint)sampler, 4550d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)pname, 4551d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLfloat *)params 4552d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 4553d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 4554d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallexit: 4555d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (params_base) { 45563b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseFloatArrayElements(params_ref, (jfloat*)params_base, 4557d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception ? JNI_ABORT: 0); 4558d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 4559d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_exception) { 4560d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jniThrowException(_env, _exceptionType, _exceptionMessage); 4561d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 4562d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 4563d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 4564d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glGetSamplerParameterfv ( GLuint sampler, GLenum pname, GLfloat *params ) */ 4565d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 4566d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glGetSamplerParameterfv__IILjava_nio_FloatBuffer_2 4567d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint sampler, jint pname, jobject params_buf) { 45683b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi jfloatArray _array = (jfloatArray) 0; 4569d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _bufferOffset = (jint) 0; 4570d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _remaining; 4571d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLfloat *params = (GLfloat *) 0; 4572d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 45733b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi params = (GLfloat *)getPointer(_env, params_buf, (jarray*)&_array, &_remaining, &_bufferOffset); 4574d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (params == NULL) { 45753b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi char * _paramsBase = (char *)_env->GetFloatArrayElements(_array, (jboolean *) 0); 4576d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall params = (GLfloat *) (_paramsBase + _bufferOffset); 4577d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 4578d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glGetSamplerParameterfv( 4579d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint)sampler, 4580d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)pname, 4581d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLfloat *)params 4582d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 4583d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_array) { 45843b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseFloatArrayElements(_array, (jfloat*)params, 0); 4585d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 4586d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 4587d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 4588d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glVertexAttribDivisor ( GLuint index, GLuint divisor ) */ 4589d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 4590d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glVertexAttribDivisor__II 4591d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint index, jint divisor) { 4592d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glVertexAttribDivisor( 4593d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint)index, 4594d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint)divisor 4595d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 4596d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 4597d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 4598d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glBindTransformFeedback ( GLenum target, GLuint id ) */ 4599d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 4600d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glBindTransformFeedback__II 4601d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint target, jint id) { 4602d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glBindTransformFeedback( 4603d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)target, 4604d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint)id 4605d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 4606d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 4607d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 4608d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glDeleteTransformFeedbacks ( GLsizei n, const GLuint *ids ) */ 4609d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 4610d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glDeleteTransformFeedbacks__I_3II 4611d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint n, jintArray ids_ref, jint offset) { 4612d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _exception = 0; 4613d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char * _exceptionType = NULL; 4614d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char * _exceptionMessage = NULL; 4615d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLuint *ids_base = (GLuint *) 0; 4616d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _remaining; 4617d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLuint *ids = (GLuint *) 0; 4618d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 4619d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (!ids_ref) { 4620d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 4621d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 4622d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "ids == null"; 4623d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 4624d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 4625d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (offset < 0) { 4626d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 4627d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 4628d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "offset < 0"; 4629d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 4630d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 4631d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _remaining = _env->GetArrayLength(ids_ref) - offset; 4632d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ids_base = (GLuint *) 46333b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->GetIntArrayElements(ids_ref, (jboolean *)0); 4634d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ids = ids_base + offset; 4635d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 4636d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glDeleteTransformFeedbacks( 4637d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)n, 4638d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint *)ids 4639d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 4640d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 4641d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallexit: 4642d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (ids_base) { 46433b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseIntArrayElements(ids_ref, (jint*)ids_base, 4644d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall JNI_ABORT); 4645d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 4646d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_exception) { 4647d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jniThrowException(_env, _exceptionType, _exceptionMessage); 4648d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 4649d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 4650d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 4651d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glDeleteTransformFeedbacks ( GLsizei n, const GLuint *ids ) */ 4652d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 4653d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glDeleteTransformFeedbacks__ILjava_nio_IntBuffer_2 4654d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint n, jobject ids_buf) { 46553b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi jintArray _array = (jintArray) 0; 4656d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _bufferOffset = (jint) 0; 4657d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _remaining; 4658d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLuint *ids = (GLuint *) 0; 4659d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 46603b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi ids = (GLuint *)getPointer(_env, ids_buf, (jarray*)&_array, &_remaining, &_bufferOffset); 4661d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (ids == NULL) { 46623b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi char * _idsBase = (char *)_env->GetIntArrayElements(_array, (jboolean *) 0); 4663d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ids = (GLuint *) (_idsBase + _bufferOffset); 4664d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 4665d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glDeleteTransformFeedbacks( 4666d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)n, 4667d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint *)ids 4668d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 4669d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_array) { 46703b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseIntArrayElements(_array, (jint*)ids, JNI_ABORT); 4671d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 4672d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 4673d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 4674d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glGenTransformFeedbacks ( GLsizei n, GLuint *ids ) */ 4675d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 4676d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glGenTransformFeedbacks__I_3II 4677d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint n, jintArray ids_ref, jint offset) { 4678d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _exception = 0; 4679d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char * _exceptionType = NULL; 4680d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char * _exceptionMessage = NULL; 4681d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLuint *ids_base = (GLuint *) 0; 4682d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _remaining; 4683d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLuint *ids = (GLuint *) 0; 4684d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 4685d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (!ids_ref) { 4686d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 4687d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 4688d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "ids == null"; 4689d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 4690d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 4691d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (offset < 0) { 4692d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 4693d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 4694d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "offset < 0"; 4695d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 4696d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 4697d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _remaining = _env->GetArrayLength(ids_ref) - offset; 4698d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ids_base = (GLuint *) 46993b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->GetIntArrayElements(ids_ref, (jboolean *)0); 4700d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ids = ids_base + offset; 4701d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 4702d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glGenTransformFeedbacks( 4703d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)n, 4704d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint *)ids 4705d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 4706d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 4707d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallexit: 4708d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (ids_base) { 47093b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseIntArrayElements(ids_ref, (jint*)ids_base, 4710d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception ? JNI_ABORT: 0); 4711d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 4712d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_exception) { 4713d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jniThrowException(_env, _exceptionType, _exceptionMessage); 4714d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 4715d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 4716d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 4717d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glGenTransformFeedbacks ( GLsizei n, GLuint *ids ) */ 4718d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 4719d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glGenTransformFeedbacks__ILjava_nio_IntBuffer_2 4720d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint n, jobject ids_buf) { 47213b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi jintArray _array = (jintArray) 0; 4722d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _bufferOffset = (jint) 0; 4723d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _remaining; 4724d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLuint *ids = (GLuint *) 0; 4725d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 47263b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi ids = (GLuint *)getPointer(_env, ids_buf, (jarray*)&_array, &_remaining, &_bufferOffset); 4727d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (ids == NULL) { 47283b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi char * _idsBase = (char *)_env->GetIntArrayElements(_array, (jboolean *) 0); 4729d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ids = (GLuint *) (_idsBase + _bufferOffset); 4730d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 4731d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glGenTransformFeedbacks( 4732d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)n, 4733d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint *)ids 4734d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 4735d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_array) { 47363b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseIntArrayElements(_array, (jint*)ids, 0); 4737d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 4738d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 4739d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 4740d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* GLboolean glIsTransformFeedback ( GLuint id ) */ 4741d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic jboolean 4742d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glIsTransformFeedback__I 4743d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint id) { 4744d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLboolean _returnValue; 4745d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _returnValue = glIsTransformFeedback( 4746d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint)id 4747d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 4748d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall return (jboolean)_returnValue; 4749d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 4750d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 4751d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glPauseTransformFeedback ( void ) */ 4752d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 4753d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glPauseTransformFeedback__ 4754d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this) { 4755d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glPauseTransformFeedback(); 4756d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 4757d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 4758d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glResumeTransformFeedback ( void ) */ 4759d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 4760d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glResumeTransformFeedback__ 4761d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this) { 4762d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glResumeTransformFeedback(); 4763d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 4764d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 4765d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glGetProgramBinary ( GLuint program, GLsizei bufSize, GLsizei *length, GLenum *binaryFormat, GLvoid *binary ) */ 4766d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 4767d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glGetProgramBinary__II_3II_3IILjava_nio_Buffer_2 4768d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint program, jint bufSize, jintArray length_ref, jint lengthOffset, jintArray binaryFormat_ref, jint binaryFormatOffset, jobject binary_buf) { 4769d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _exception = 0; 4770d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char * _exceptionType = NULL; 4771d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char * _exceptionMessage = NULL; 4772d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jarray _array = (jarray) 0; 4773d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _bufferOffset = (jint) 0; 4774d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLsizei *length_base = (GLsizei *) 0; 4775d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _lengthRemaining; 4776d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLsizei *length = (GLsizei *) 0; 4777d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLenum *binaryFormat_base = (GLenum *) 0; 4778d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _binaryFormatRemaining; 4779d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLenum *binaryFormat = (GLenum *) 0; 4780d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _binaryRemaining; 4781d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLvoid *binary = (GLvoid *) 0; 4782d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 47836aff9068f91fdfef0bc55fda0721c180c0de9284Pablo Ceballos if (length_ref) { 47846aff9068f91fdfef0bc55fda0721c180c0de9284Pablo Ceballos if (lengthOffset < 0) { 47856aff9068f91fdfef0bc55fda0721c180c0de9284Pablo Ceballos _exception = 1; 47866aff9068f91fdfef0bc55fda0721c180c0de9284Pablo Ceballos _exceptionType = "java/lang/IllegalArgumentException"; 47876aff9068f91fdfef0bc55fda0721c180c0de9284Pablo Ceballos _exceptionMessage = "lengthOffset < 0"; 47886aff9068f91fdfef0bc55fda0721c180c0de9284Pablo Ceballos goto exit; 47896aff9068f91fdfef0bc55fda0721c180c0de9284Pablo Ceballos } 47906aff9068f91fdfef0bc55fda0721c180c0de9284Pablo Ceballos _lengthRemaining = _env->GetArrayLength(length_ref) - lengthOffset; 47916aff9068f91fdfef0bc55fda0721c180c0de9284Pablo Ceballos length_base = (GLsizei *) 47926aff9068f91fdfef0bc55fda0721c180c0de9284Pablo Ceballos _env->GetIntArrayElements(length_ref, (jboolean *)0); 47936aff9068f91fdfef0bc55fda0721c180c0de9284Pablo Ceballos length = length_base + lengthOffset; 4794d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 4795d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 4796d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (!binaryFormat_ref) { 4797d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 4798d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 4799d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "binaryFormat == null"; 4800d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 4801d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 4802d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (binaryFormatOffset < 0) { 4803d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 4804d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 4805d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "binaryFormatOffset < 0"; 4806d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 4807d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 4808d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _binaryFormatRemaining = _env->GetArrayLength(binaryFormat_ref) - binaryFormatOffset; 4809d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall binaryFormat_base = (GLenum *) 48103b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->GetIntArrayElements(binaryFormat_ref, (jboolean *)0); 4811d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall binaryFormat = binaryFormat_base + binaryFormatOffset; 4812d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 48133b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi binary = (GLvoid *)getPointer(_env, binary_buf, (jarray*)&_array, &_binaryRemaining, &_bufferOffset); 4814d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (binary == NULL) { 4815d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall char * _binaryBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); 4816d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall binary = (GLvoid *) (_binaryBase + _bufferOffset); 4817d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 4818d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glGetProgramBinary( 4819d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint)program, 4820d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)bufSize, 4821d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei *)length, 4822d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum *)binaryFormat, 4823d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLvoid *)binary 4824d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 4825d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 4826d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallexit: 4827d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_array) { 4828d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall releasePointer(_env, _array, binary, _exception ? JNI_FALSE : JNI_TRUE); 4829d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 4830d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (binaryFormat_base) { 48313b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseIntArrayElements(binaryFormat_ref, (jint*)binaryFormat_base, 4832d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception ? JNI_ABORT: 0); 4833d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 4834d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (length_base) { 48353b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseIntArrayElements(length_ref, (jint*)length_base, 4836d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception ? JNI_ABORT: 0); 4837d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 4838d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_exception) { 4839d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jniThrowException(_env, _exceptionType, _exceptionMessage); 4840d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 4841d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 4842d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 4843d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glGetProgramBinary ( GLuint program, GLsizei bufSize, GLsizei *length, GLenum *binaryFormat, GLvoid *binary ) */ 4844d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 4845d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glGetProgramBinary__IILjava_nio_IntBuffer_2Ljava_nio_IntBuffer_2Ljava_nio_Buffer_2 4846d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint program, jint bufSize, jobject length_buf, jobject binaryFormat_buf, jobject binary_buf) { 48473b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi jintArray _lengthArray = (jintArray) 0; 4848d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _lengthBufferOffset = (jint) 0; 48493b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi jintArray _binaryFormatArray = (jintArray) 0; 4850d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _binaryFormatBufferOffset = (jint) 0; 48513b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi jintArray _binaryArray = (jintArray) 0; 4852d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _binaryBufferOffset = (jint) 0; 4853d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _lengthRemaining; 4854d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLsizei *length = (GLsizei *) 0; 4855d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _binaryFormatRemaining; 4856d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLenum *binaryFormat = (GLenum *) 0; 4857d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _binaryRemaining; 4858d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLvoid *binary = (GLvoid *) 0; 4859d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 48606aff9068f91fdfef0bc55fda0721c180c0de9284Pablo Ceballos if (length_buf) { 48616aff9068f91fdfef0bc55fda0721c180c0de9284Pablo Ceballos length = (GLsizei *)getPointer(_env, length_buf, (jarray*)&_lengthArray, &_lengthRemaining, &_lengthBufferOffset); 48626aff9068f91fdfef0bc55fda0721c180c0de9284Pablo Ceballos } 48633b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi binaryFormat = (GLenum *)getPointer(_env, binaryFormat_buf, (jarray*)&_binaryFormatArray, &_binaryFormatRemaining, &_binaryFormatBufferOffset); 48643b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi binary = (GLvoid *)getPointer(_env, binary_buf, (jarray*)&_binaryArray, &_binaryRemaining, &_binaryBufferOffset); 48656aff9068f91fdfef0bc55fda0721c180c0de9284Pablo Ceballos if (length_buf && length == NULL) { 48663b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi char * _lengthBase = (char *)_env->GetIntArrayElements(_lengthArray, (jboolean *) 0); 4867d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall length = (GLsizei *) (_lengthBase + _lengthBufferOffset); 4868d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 4869d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (binaryFormat == NULL) { 48703b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi char * _binaryFormatBase = (char *)_env->GetIntArrayElements(_binaryFormatArray, (jboolean *) 0); 4871d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall binaryFormat = (GLenum *) (_binaryFormatBase + _binaryFormatBufferOffset); 4872d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 4873d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (binary == NULL) { 4874d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall char * _binaryBase = (char *)_env->GetPrimitiveArrayCritical(_binaryArray, (jboolean *) 0); 4875d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall binary = (GLvoid *) (_binaryBase + _binaryBufferOffset); 4876d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 4877d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glGetProgramBinary( 4878d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint)program, 4879d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)bufSize, 4880d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei *)length, 4881d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum *)binaryFormat, 4882d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLvoid *)binary 4883d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 4884d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_binaryArray) { 4885d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall releasePointer(_env, _binaryArray, binary, JNI_TRUE); 4886d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 4887d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_binaryFormatArray) { 48883b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseIntArrayElements(_binaryFormatArray, (jint*)binaryFormat, 0); 4889d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 4890d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_lengthArray) { 48913b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseIntArrayElements(_lengthArray, (jint*)length, 0); 4892d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 4893d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 4894d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 4895d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glProgramBinary ( GLuint program, GLenum binaryFormat, const GLvoid *binary, GLsizei length ) */ 4896d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 4897d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glProgramBinary__IILjava_nio_Buffer_2I 4898d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint program, jint binaryFormat, jobject binary_buf, jint length) { 4899d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jarray _array = (jarray) 0; 4900d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _bufferOffset = (jint) 0; 4901d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _remaining; 4902d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLvoid *binary = (GLvoid *) 0; 4903d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 49043b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi binary = (GLvoid *)getPointer(_env, binary_buf, (jarray*)&_array, &_remaining, &_bufferOffset); 4905d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (binary == NULL) { 4906d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall char * _binaryBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); 4907d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall binary = (GLvoid *) (_binaryBase + _bufferOffset); 4908d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 4909d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glProgramBinary( 4910d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint)program, 4911d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)binaryFormat, 4912d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLvoid *)binary, 4913d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)length 4914d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 4915d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_array) { 4916d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall releasePointer(_env, _array, binary, JNI_FALSE); 4917d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 4918d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 4919d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 4920d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glProgramParameteri ( GLuint program, GLenum pname, GLint value ) */ 4921d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 4922d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glProgramParameteri__III 4923d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint program, jint pname, jint value) { 4924d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glProgramParameteri( 4925d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLuint)program, 4926d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)pname, 4927d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint)value 4928d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 4929d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 4930d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 4931d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glInvalidateFramebuffer ( GLenum target, GLsizei numAttachments, const GLenum *attachments ) */ 4932d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 4933d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glInvalidateFramebuffer__II_3II 4934d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint target, jint numAttachments, jintArray attachments_ref, jint offset) { 4935d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _exception = 0; 4936d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char * _exceptionType = NULL; 4937d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char * _exceptionMessage = NULL; 4938d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLenum *attachments_base = (GLenum *) 0; 4939d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _remaining; 4940d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLenum *attachments = (GLenum *) 0; 4941d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 4942d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (!attachments_ref) { 4943d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 4944d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 4945d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "attachments == null"; 4946d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 4947d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 4948d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (offset < 0) { 4949d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 4950d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 4951d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "offset < 0"; 4952d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 4953d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 4954d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _remaining = _env->GetArrayLength(attachments_ref) - offset; 4955d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall attachments_base = (GLenum *) 49563b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->GetIntArrayElements(attachments_ref, (jboolean *)0); 4957d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall attachments = attachments_base + offset; 4958d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 4959d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glInvalidateFramebuffer( 4960d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)target, 4961d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)numAttachments, 4962d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum *)attachments 4963d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 4964d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 4965d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallexit: 4966d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (attachments_base) { 49673b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseIntArrayElements(attachments_ref, (jint*)attachments_base, 4968d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall JNI_ABORT); 4969d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 4970d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_exception) { 4971d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jniThrowException(_env, _exceptionType, _exceptionMessage); 4972d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 4973d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 4974d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 4975d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glInvalidateFramebuffer ( GLenum target, GLsizei numAttachments, const GLenum *attachments ) */ 4976d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 4977d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glInvalidateFramebuffer__IILjava_nio_IntBuffer_2 4978d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint target, jint numAttachments, jobject attachments_buf) { 49793b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi jintArray _array = (jintArray) 0; 4980d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _bufferOffset = (jint) 0; 4981d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _remaining; 4982d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLenum *attachments = (GLenum *) 0; 4983d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 49843b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi attachments = (GLenum *)getPointer(_env, attachments_buf, (jarray*)&_array, &_remaining, &_bufferOffset); 4985d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (attachments == NULL) { 49863b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi char * _attachmentsBase = (char *)_env->GetIntArrayElements(_array, (jboolean *) 0); 4987d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall attachments = (GLenum *) (_attachmentsBase + _bufferOffset); 4988d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 4989d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glInvalidateFramebuffer( 4990d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)target, 4991d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)numAttachments, 4992d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum *)attachments 4993d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 4994d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_array) { 49953b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseIntArrayElements(_array, (jint*)attachments, JNI_ABORT); 4996d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 4997d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 4998d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 4999d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glInvalidateSubFramebuffer ( GLenum target, GLsizei numAttachments, const GLenum *attachments, GLint x, GLint y, GLsizei width, GLsizei height ) */ 5000d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 5001d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glInvalidateSubFramebuffer__II_3IIIIII 5002d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint target, jint numAttachments, jintArray attachments_ref, jint offset, jint x, jint y, jint width, jint height) { 5003d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _exception = 0; 5004d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char * _exceptionType = NULL; 5005d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char * _exceptionMessage = NULL; 5006d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLenum *attachments_base = (GLenum *) 0; 5007d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _remaining; 5008d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLenum *attachments = (GLenum *) 0; 5009d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 5010d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (!attachments_ref) { 5011d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 5012d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 5013d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "attachments == null"; 5014d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 5015d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 5016d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (offset < 0) { 5017d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 5018d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 5019d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "offset < 0"; 5020d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 5021d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 5022d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _remaining = _env->GetArrayLength(attachments_ref) - offset; 5023d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall attachments_base = (GLenum *) 50243b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->GetIntArrayElements(attachments_ref, (jboolean *)0); 5025d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall attachments = attachments_base + offset; 5026d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 5027d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glInvalidateSubFramebuffer( 5028d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)target, 5029d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)numAttachments, 5030d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum *)attachments, 5031d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint)x, 5032d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint)y, 5033d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)width, 5034d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)height 5035d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 5036d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 5037d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallexit: 5038d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (attachments_base) { 50393b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseIntArrayElements(attachments_ref, (jint*)attachments_base, 5040d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall JNI_ABORT); 5041d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 5042d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_exception) { 5043d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jniThrowException(_env, _exceptionType, _exceptionMessage); 5044d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 5045d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 5046d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 5047d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glInvalidateSubFramebuffer ( GLenum target, GLsizei numAttachments, const GLenum *attachments, GLint x, GLint y, GLsizei width, GLsizei height ) */ 5048d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 5049d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glInvalidateSubFramebuffer__IILjava_nio_IntBuffer_2IIII 5050d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint target, jint numAttachments, jobject attachments_buf, jint x, jint y, jint width, jint height) { 50513b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi jintArray _array = (jintArray) 0; 5052d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _bufferOffset = (jint) 0; 5053d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _remaining; 5054d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLenum *attachments = (GLenum *) 0; 5055d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 50563b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi attachments = (GLenum *)getPointer(_env, attachments_buf, (jarray*)&_array, &_remaining, &_bufferOffset); 5057d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (attachments == NULL) { 50583b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi char * _attachmentsBase = (char *)_env->GetIntArrayElements(_array, (jboolean *) 0); 5059d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall attachments = (GLenum *) (_attachmentsBase + _bufferOffset); 5060d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 5061d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glInvalidateSubFramebuffer( 5062d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)target, 5063d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)numAttachments, 5064d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum *)attachments, 5065d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint)x, 5066d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint)y, 5067d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)width, 5068d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)height 5069d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 5070d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_array) { 50713b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseIntArrayElements(_array, (jint*)attachments, JNI_ABORT); 5072d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 5073d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 5074d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 5075d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glTexStorage2D ( GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height ) */ 5076d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 5077d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glTexStorage2D__IIIII 5078d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint target, jint levels, jint internalformat, jint width, jint height) { 5079d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glTexStorage2D( 5080d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)target, 5081d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)levels, 5082d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)internalformat, 5083d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)width, 5084d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)height 5085d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 5086d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 5087d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 5088d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glTexStorage3D ( GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth ) */ 5089d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 5090d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glTexStorage3D__IIIIII 5091d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint target, jint levels, jint internalformat, jint width, jint height, jint depth) { 5092d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glTexStorage3D( 5093d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)target, 5094d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)levels, 5095d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)internalformat, 5096d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)width, 5097d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)height, 5098d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)depth 5099d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 5100d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 5101d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 5102d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glGetInternalformativ ( GLenum target, GLenum internalformat, GLenum pname, GLsizei bufSize, GLint *params ) */ 5103d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 5104d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glGetInternalformativ__IIII_3II 5105d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint target, jint internalformat, jint pname, jint bufSize, jintArray params_ref, jint offset) { 5106d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _exception = 0; 5107d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char * _exceptionType = NULL; 5108d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall const char * _exceptionMessage = NULL; 5109d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLint *params_base = (GLint *) 0; 5110d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _remaining; 5111d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLint *params = (GLint *) 0; 5112d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 5113d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (!params_ref) { 5114d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 5115d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 5116d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "params == null"; 5117d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 5118d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 5119d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (offset < 0) { 5120d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception = 1; 5121d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionType = "java/lang/IllegalArgumentException"; 5122d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exceptionMessage = "offset < 0"; 5123d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall goto exit; 5124d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 5125d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _remaining = _env->GetArrayLength(params_ref) - offset; 5126d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall params_base = (GLint *) 51273b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->GetIntArrayElements(params_ref, (jboolean *)0); 5128d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall params = params_base + offset; 5129d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 5130d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glGetInternalformativ( 5131d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)target, 5132d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)internalformat, 5133d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)pname, 5134d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)bufSize, 5135d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint *)params 5136d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 5137d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 5138d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallexit: 5139d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (params_base) { 51403b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseIntArrayElements(params_ref, (jint*)params_base, 5141d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall _exception ? JNI_ABORT: 0); 5142d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 5143d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_exception) { 5144d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jniThrowException(_env, _exceptionType, _exceptionMessage); 5145d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 5146d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 5147d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 5148d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall/* void glGetInternalformativ ( GLenum target, GLenum internalformat, GLenum pname, GLsizei bufSize, GLint *params ) */ 5149d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic void 5150d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallandroid_glGetInternalformativ__IIIILjava_nio_IntBuffer_2 5151d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (JNIEnv *_env, jobject _this, jint target, jint internalformat, jint pname, jint bufSize, jobject params_buf) { 51523b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi jintArray _array = (jintArray) 0; 5153d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _bufferOffset = (jint) 0; 5154d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall jint _remaining; 5155d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall GLint *params = (GLint *) 0; 5156d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 51573b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi params = (GLint *)getPointer(_env, params_buf, (jarray*)&_array, &_remaining, &_bufferOffset); 5158d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (params == NULL) { 51593b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi char * _paramsBase = (char *)_env->GetIntArrayElements(_array, (jboolean *) 0); 5160d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall params = (GLint *) (_paramsBase + _bufferOffset); 5161d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 5162d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall glGetInternalformativ( 5163d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)target, 5164d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)internalformat, 5165d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLenum)pname, 5166d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLsizei)bufSize, 5167d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall (GLint *)params 5168d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall ); 5169d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall if (_array) { 51703b1d46e809ed38cd5662c110c511b8d98868ed72Hiroshi Yamauchi _env->ReleaseIntArrayElements(_array, (jint*)params, 0); 5171d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall } 5172d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 5173d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 517468981ff03b2c166800ddc82973a2aa95269a343bPablo Ceballos/* void glReadPixels ( GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLint offset ) */ 517568981ff03b2c166800ddc82973a2aa95269a343bPablo Ceballosstatic void 517668981ff03b2c166800ddc82973a2aa95269a343bPablo Ceballosandroid_glReadPixels__IIIIIII 517768981ff03b2c166800ddc82973a2aa95269a343bPablo Ceballos (JNIEnv *_env, jobject _this, jint x, jint y, jint width, jint height, jint format, jint type, jint offset) { 517868981ff03b2c166800ddc82973a2aa95269a343bPablo Ceballos glReadPixels( 517968981ff03b2c166800ddc82973a2aa95269a343bPablo Ceballos (GLint)x, 518068981ff03b2c166800ddc82973a2aa95269a343bPablo Ceballos (GLint)y, 518168981ff03b2c166800ddc82973a2aa95269a343bPablo Ceballos (GLsizei)width, 518268981ff03b2c166800ddc82973a2aa95269a343bPablo Ceballos (GLsizei)height, 518368981ff03b2c166800ddc82973a2aa95269a343bPablo Ceballos (GLenum)format, 518468981ff03b2c166800ddc82973a2aa95269a343bPablo Ceballos (GLenum)type, 518568981ff03b2c166800ddc82973a2aa95269a343bPablo Ceballos reinterpret_cast<GLvoid *>(offset) 518668981ff03b2c166800ddc82973a2aa95269a343bPablo Ceballos ); 518768981ff03b2c166800ddc82973a2aa95269a343bPablo Ceballos} 518868981ff03b2c166800ddc82973a2aa95269a343bPablo Ceballos 5189d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallstatic const char *classPathName = "android/opengl/GLES30"; 5190d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 519176f6a86de25e1bf74717e047e55fd44b089673f3Daniel Micaystatic const JNINativeMethod methods[] = { 5192d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"_nativeClassInit", "()V", (void*)nativeClassInit }, 5193d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glReadBuffer", "(I)V", (void *) android_glReadBuffer__I }, 5194d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glDrawRangeElements", "(IIIIILjava/nio/Buffer;)V", (void *) android_glDrawRangeElements__IIIIILjava_nio_Buffer_2 }, 5195d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glDrawRangeElements", "(IIIIII)V", (void *) android_glDrawRangeElements__IIIIII }, 5196d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glTexImage3D", "(IIIIIIIIILjava/nio/Buffer;)V", (void *) android_glTexImage3D__IIIIIIIIILjava_nio_Buffer_2 }, 5197d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glTexImage3D", "(IIIIIIIIII)V", (void *) android_glTexImage3D__IIIIIIIIII }, 5198d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glTexSubImage3D", "(IIIIIIIIIILjava/nio/Buffer;)V", (void *) android_glTexSubImage3D__IIIIIIIIIILjava_nio_Buffer_2 }, 5199d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glTexSubImage3D", "(IIIIIIIIIII)V", (void *) android_glTexSubImage3D__IIIIIIIIIII }, 5200d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glCopyTexSubImage3D", "(IIIIIIIII)V", (void *) android_glCopyTexSubImage3D__IIIIIIIII }, 5201d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glCompressedTexImage3D", "(IIIIIIIILjava/nio/Buffer;)V", (void *) android_glCompressedTexImage3D__IIIIIIIILjava_nio_Buffer_2 }, 5202d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glCompressedTexImage3D", "(IIIIIIIII)V", (void *) android_glCompressedTexImage3D__IIIIIIIII }, 5203d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glCompressedTexSubImage3D", "(IIIIIIIIIILjava/nio/Buffer;)V", (void *) android_glCompressedTexSubImage3D__IIIIIIIIIILjava_nio_Buffer_2 }, 5204d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glCompressedTexSubImage3D", "(IIIIIIIIIII)V", (void *) android_glCompressedTexSubImage3D__IIIIIIIIIII }, 5205d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glGenQueries", "(I[II)V", (void *) android_glGenQueries__I_3II }, 5206d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glGenQueries", "(ILjava/nio/IntBuffer;)V", (void *) android_glGenQueries__ILjava_nio_IntBuffer_2 }, 5207d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glDeleteQueries", "(I[II)V", (void *) android_glDeleteQueries__I_3II }, 5208d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glDeleteQueries", "(ILjava/nio/IntBuffer;)V", (void *) android_glDeleteQueries__ILjava_nio_IntBuffer_2 }, 5209d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glIsQuery", "(I)Z", (void *) android_glIsQuery__I }, 5210d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glBeginQuery", "(II)V", (void *) android_glBeginQuery__II }, 5211d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glEndQuery", "(I)V", (void *) android_glEndQuery__I }, 5212d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glGetQueryiv", "(II[II)V", (void *) android_glGetQueryiv__II_3II }, 5213d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glGetQueryiv", "(IILjava/nio/IntBuffer;)V", (void *) android_glGetQueryiv__IILjava_nio_IntBuffer_2 }, 5214d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glGetQueryObjectuiv", "(II[II)V", (void *) android_glGetQueryObjectuiv__II_3II }, 5215d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glGetQueryObjectuiv", "(IILjava/nio/IntBuffer;)V", (void *) android_glGetQueryObjectuiv__IILjava_nio_IntBuffer_2 }, 5216d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glUnmapBuffer", "(I)Z", (void *) android_glUnmapBuffer__I }, 5217d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glGetBufferPointerv", "(II)Ljava/nio/Buffer;", (void *) android_glGetBufferPointerv__II }, 5218d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glDrawBuffers", "(I[II)V", (void *) android_glDrawBuffers__I_3II }, 5219d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glDrawBuffers", "(ILjava/nio/IntBuffer;)V", (void *) android_glDrawBuffers__ILjava_nio_IntBuffer_2 }, 5220d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glUniformMatrix2x3fv", "(IIZ[FI)V", (void *) android_glUniformMatrix2x3fv__IIZ_3FI }, 5221d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glUniformMatrix2x3fv", "(IIZLjava/nio/FloatBuffer;)V", (void *) android_glUniformMatrix2x3fv__IIZLjava_nio_FloatBuffer_2 }, 5222d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glUniformMatrix3x2fv", "(IIZ[FI)V", (void *) android_glUniformMatrix3x2fv__IIZ_3FI }, 5223d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glUniformMatrix3x2fv", "(IIZLjava/nio/FloatBuffer;)V", (void *) android_glUniformMatrix3x2fv__IIZLjava_nio_FloatBuffer_2 }, 5224d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glUniformMatrix2x4fv", "(IIZ[FI)V", (void *) android_glUniformMatrix2x4fv__IIZ_3FI }, 5225d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glUniformMatrix2x4fv", "(IIZLjava/nio/FloatBuffer;)V", (void *) android_glUniformMatrix2x4fv__IIZLjava_nio_FloatBuffer_2 }, 5226d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glUniformMatrix4x2fv", "(IIZ[FI)V", (void *) android_glUniformMatrix4x2fv__IIZ_3FI }, 5227d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glUniformMatrix4x2fv", "(IIZLjava/nio/FloatBuffer;)V", (void *) android_glUniformMatrix4x2fv__IIZLjava_nio_FloatBuffer_2 }, 5228d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glUniformMatrix3x4fv", "(IIZ[FI)V", (void *) android_glUniformMatrix3x4fv__IIZ_3FI }, 5229d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glUniformMatrix3x4fv", "(IIZLjava/nio/FloatBuffer;)V", (void *) android_glUniformMatrix3x4fv__IIZLjava_nio_FloatBuffer_2 }, 5230d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glUniformMatrix4x3fv", "(IIZ[FI)V", (void *) android_glUniformMatrix4x3fv__IIZ_3FI }, 5231d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glUniformMatrix4x3fv", "(IIZLjava/nio/FloatBuffer;)V", (void *) android_glUniformMatrix4x3fv__IIZLjava_nio_FloatBuffer_2 }, 5232d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glBlitFramebuffer", "(IIIIIIIIII)V", (void *) android_glBlitFramebuffer__IIIIIIIIII }, 5233d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glRenderbufferStorageMultisample", "(IIIII)V", (void *) android_glRenderbufferStorageMultisample__IIIII }, 5234d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glFramebufferTextureLayer", "(IIIII)V", (void *) android_glFramebufferTextureLayer__IIIII }, 5235d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glMapBufferRange", "(IIII)Ljava/nio/Buffer;", (void *) android_glMapBufferRange__IIII }, 5236d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glFlushMappedBufferRange", "(III)V", (void *) android_glFlushMappedBufferRange__III }, 5237d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glBindVertexArray", "(I)V", (void *) android_glBindVertexArray__I }, 5238d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glDeleteVertexArrays", "(I[II)V", (void *) android_glDeleteVertexArrays__I_3II }, 5239d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glDeleteVertexArrays", "(ILjava/nio/IntBuffer;)V", (void *) android_glDeleteVertexArrays__ILjava_nio_IntBuffer_2 }, 5240d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glGenVertexArrays", "(I[II)V", (void *) android_glGenVertexArrays__I_3II }, 5241d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glGenVertexArrays", "(ILjava/nio/IntBuffer;)V", (void *) android_glGenVertexArrays__ILjava_nio_IntBuffer_2 }, 5242d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glIsVertexArray", "(I)Z", (void *) android_glIsVertexArray__I }, 5243d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glGetIntegeri_v", "(II[II)V", (void *) android_glGetIntegeri_v__II_3II }, 5244d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glGetIntegeri_v", "(IILjava/nio/IntBuffer;)V", (void *) android_glGetIntegeri_v__IILjava_nio_IntBuffer_2 }, 5245d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glBeginTransformFeedback", "(I)V", (void *) android_glBeginTransformFeedback__I }, 5246d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glEndTransformFeedback", "()V", (void *) android_glEndTransformFeedback__ }, 5247d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glBindBufferRange", "(IIIII)V", (void *) android_glBindBufferRange__IIIII }, 5248d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glBindBufferBase", "(III)V", (void *) android_glBindBufferBase__III }, 5249d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glTransformFeedbackVaryings", "(I[Ljava/lang/String;I)V", (void *) android_glTransformFeedbackVaryings }, 5250d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glGetTransformFeedbackVarying", "(III[II[II[II[BI)V", (void *) android_glGetTransformFeedbackVarying__III_3II_3II_3II_3BI }, 5251d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse 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 }, 525259fb43e7bdc607f49b301644e4300485f352b103Pablo 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 }, 5253d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glGetTransformFeedbackVarying", "(II[II[II)Ljava/lang/String;", (void *) android_glGetTransformFeedbackVarying1 }, 5254d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glGetTransformFeedbackVarying", "(IILjava/nio/IntBuffer;Ljava/nio/IntBuffer;)Ljava/lang/String;", (void *) android_glGetTransformFeedbackVarying2 }, 5255d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glVertexAttribIPointerBounds", "(IIIILjava/nio/Buffer;I)V", (void *) android_glVertexAttribIPointerBounds__IIIILjava_nio_Buffer_2I }, 5256d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glVertexAttribIPointer", "(IIIII)V", (void *) android_glVertexAttribIPointer__IIIII }, 5257d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glGetVertexAttribIiv", "(II[II)V", (void *) android_glGetVertexAttribIiv__II_3II }, 5258d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glGetVertexAttribIiv", "(IILjava/nio/IntBuffer;)V", (void *) android_glGetVertexAttribIiv__IILjava_nio_IntBuffer_2 }, 5259d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glGetVertexAttribIuiv", "(II[II)V", (void *) android_glGetVertexAttribIuiv__II_3II }, 5260d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glGetVertexAttribIuiv", "(IILjava/nio/IntBuffer;)V", (void *) android_glGetVertexAttribIuiv__IILjava_nio_IntBuffer_2 }, 5261d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glVertexAttribI4i", "(IIIII)V", (void *) android_glVertexAttribI4i__IIIII }, 5262d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glVertexAttribI4ui", "(IIIII)V", (void *) android_glVertexAttribI4ui__IIIII }, 5263d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glVertexAttribI4iv", "(I[II)V", (void *) android_glVertexAttribI4iv__I_3II }, 5264d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glVertexAttribI4iv", "(ILjava/nio/IntBuffer;)V", (void *) android_glVertexAttribI4iv__ILjava_nio_IntBuffer_2 }, 5265d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glVertexAttribI4uiv", "(I[II)V", (void *) android_glVertexAttribI4uiv__I_3II }, 5266d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glVertexAttribI4uiv", "(ILjava/nio/IntBuffer;)V", (void *) android_glVertexAttribI4uiv__ILjava_nio_IntBuffer_2 }, 5267d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glGetUniformuiv", "(II[II)V", (void *) android_glGetUniformuiv__II_3II }, 5268d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glGetUniformuiv", "(IILjava/nio/IntBuffer;)V", (void *) android_glGetUniformuiv__IILjava_nio_IntBuffer_2 }, 5269d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glGetFragDataLocation", "(ILjava/lang/String;)I", (void *) android_glGetFragDataLocation__ILjava_lang_String_2 }, 5270d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glUniform1ui", "(II)V", (void *) android_glUniform1ui__II }, 5271d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glUniform2ui", "(III)V", (void *) android_glUniform2ui__III }, 5272d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glUniform3ui", "(IIII)V", (void *) android_glUniform3ui__IIII }, 5273d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glUniform4ui", "(IIIII)V", (void *) android_glUniform4ui__IIIII }, 5274d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glUniform1uiv", "(II[II)V", (void *) android_glUniform1uiv__II_3II }, 5275d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glUniform1uiv", "(IILjava/nio/IntBuffer;)V", (void *) android_glUniform1uiv__IILjava_nio_IntBuffer_2 }, 5276d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glUniform2uiv", "(II[II)V", (void *) android_glUniform2uiv__II_3II }, 5277d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glUniform2uiv", "(IILjava/nio/IntBuffer;)V", (void *) android_glUniform2uiv__IILjava_nio_IntBuffer_2 }, 5278d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glUniform3uiv", "(II[II)V", (void *) android_glUniform3uiv__II_3II }, 5279d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glUniform3uiv", "(IILjava/nio/IntBuffer;)V", (void *) android_glUniform3uiv__IILjava_nio_IntBuffer_2 }, 5280d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glUniform4uiv", "(II[II)V", (void *) android_glUniform4uiv__II_3II }, 5281d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glUniform4uiv", "(IILjava/nio/IntBuffer;)V", (void *) android_glUniform4uiv__IILjava_nio_IntBuffer_2 }, 5282d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glClearBufferiv", "(II[II)V", (void *) android_glClearBufferiv__II_3II }, 5283d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glClearBufferiv", "(IILjava/nio/IntBuffer;)V", (void *) android_glClearBufferiv__IILjava_nio_IntBuffer_2 }, 5284d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glClearBufferuiv", "(II[II)V", (void *) android_glClearBufferuiv__II_3II }, 5285d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glClearBufferuiv", "(IILjava/nio/IntBuffer;)V", (void *) android_glClearBufferuiv__IILjava_nio_IntBuffer_2 }, 5286d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glClearBufferfv", "(II[FI)V", (void *) android_glClearBufferfv__II_3FI }, 5287d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glClearBufferfv", "(IILjava/nio/FloatBuffer;)V", (void *) android_glClearBufferfv__IILjava_nio_FloatBuffer_2 }, 5288d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glClearBufferfi", "(IIFI)V", (void *) android_glClearBufferfi__IIFI }, 5289d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glGetStringi", "(II)Ljava/lang/String;", (void *) android_glGetStringi__II }, 5290d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glCopyBufferSubData", "(IIIII)V", (void *) android_glCopyBufferSubData__IIIII }, 5291d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glGetUniformIndices", "(I[Ljava/lang/String;[II)V", (void *) android_glGetUniformIndices_array }, 5292d877efe3b12afdd84f06c180369f9d7399858f6eJesse Hall{"glGetUniformIndices", "(I[Ljava/lang/String;Ljava/nio/IntBuffer;)V", (void *) android_glGetUniformIndices_buffer }, 5293d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glGetActiveUniformsiv", "(II[III[II)V", (void *) android_glGetActiveUniformsiv__II_3III_3II }, 5294d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glGetActiveUniformsiv", "(IILjava/nio/IntBuffer;ILjava/nio/IntBuffer;)V", (void *) android_glGetActiveUniformsiv__IILjava_nio_IntBuffer_2ILjava_nio_IntBuffer_2 }, 5295d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glGetUniformBlockIndex", "(ILjava/lang/String;)I", (void *) android_glGetUniformBlockIndex__ILjava_lang_String_2 }, 5296d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glGetActiveUniformBlockiv", "(III[II)V", (void *) android_glGetActiveUniformBlockiv__III_3II }, 5297d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glGetActiveUniformBlockiv", "(IIILjava/nio/IntBuffer;)V", (void *) android_glGetActiveUniformBlockiv__IIILjava_nio_IntBuffer_2 }, 5298d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glGetActiveUniformBlockName", "(III[II[BI)V", (void *) android_glGetActiveUniformBlockName_III_3II_3BI }, 5299d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glGetActiveUniformBlockName", "(IILjava/nio/Buffer;Ljava/nio/Buffer;)V", (void *) android_glGetActiveUniformBlockName_IILjava_nio_Buffer_2Ljava_nio_Buffer_2 }, 5300d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glGetActiveUniformBlockName", "(II)Ljava/lang/String;", (void *) android_glGetActiveUniformBlockName_II }, 5301d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glUniformBlockBinding", "(III)V", (void *) android_glUniformBlockBinding__III }, 5302d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glDrawArraysInstanced", "(IIII)V", (void *) android_glDrawArraysInstanced__IIII }, 5303d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glDrawElementsInstanced", "(IIILjava/nio/Buffer;I)V", (void *) android_glDrawElementsInstanced__IIILjava_nio_Buffer_2I }, 5304d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glDrawElementsInstanced", "(IIIII)V", (void *) android_glDrawElementsInstanced__IIIII }, 5305d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glFenceSync", "(II)J", (void *) android_glFenceSync__II }, 5306d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glIsSync", "(J)Z", (void *) android_glIsSync__J }, 5307d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glDeleteSync", "(J)V", (void *) android_glDeleteSync__J }, 5308d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glClientWaitSync", "(JIJ)I", (void *) android_glClientWaitSync__JIJ }, 5309d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glWaitSync", "(JIJ)V", (void *) android_glWaitSync__JIJ }, 5310d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glGetInteger64v", "(I[JI)V", (void *) android_glGetInteger64v__I_3JI }, 5311d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glGetInteger64v", "(ILjava/nio/LongBuffer;)V", (void *) android_glGetInteger64v__ILjava_nio_LongBuffer_2 }, 5312d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glGetSynciv", "(JII[II[II)V", (void *) android_glGetSynciv__JII_3II_3II }, 5313d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glGetSynciv", "(JIILjava/nio/IntBuffer;Ljava/nio/IntBuffer;)V", (void *) android_glGetSynciv__JIILjava_nio_IntBuffer_2Ljava_nio_IntBuffer_2 }, 5314d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glGetInteger64i_v", "(II[JI)V", (void *) android_glGetInteger64i_v__II_3JI }, 5315d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glGetInteger64i_v", "(IILjava/nio/LongBuffer;)V", (void *) android_glGetInteger64i_v__IILjava_nio_LongBuffer_2 }, 5316d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glGetBufferParameteri64v", "(II[JI)V", (void *) android_glGetBufferParameteri64v__II_3JI }, 5317d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glGetBufferParameteri64v", "(IILjava/nio/LongBuffer;)V", (void *) android_glGetBufferParameteri64v__IILjava_nio_LongBuffer_2 }, 5318d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glGenSamplers", "(I[II)V", (void *) android_glGenSamplers__I_3II }, 5319d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glGenSamplers", "(ILjava/nio/IntBuffer;)V", (void *) android_glGenSamplers__ILjava_nio_IntBuffer_2 }, 5320d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glDeleteSamplers", "(I[II)V", (void *) android_glDeleteSamplers__I_3II }, 5321d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glDeleteSamplers", "(ILjava/nio/IntBuffer;)V", (void *) android_glDeleteSamplers__ILjava_nio_IntBuffer_2 }, 5322d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glIsSampler", "(I)Z", (void *) android_glIsSampler__I }, 5323d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glBindSampler", "(II)V", (void *) android_glBindSampler__II }, 5324d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glSamplerParameteri", "(III)V", (void *) android_glSamplerParameteri__III }, 5325d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glSamplerParameteriv", "(II[II)V", (void *) android_glSamplerParameteriv__II_3II }, 5326d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glSamplerParameteriv", "(IILjava/nio/IntBuffer;)V", (void *) android_glSamplerParameteriv__IILjava_nio_IntBuffer_2 }, 5327d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glSamplerParameterf", "(IIF)V", (void *) android_glSamplerParameterf__IIF }, 5328d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glSamplerParameterfv", "(II[FI)V", (void *) android_glSamplerParameterfv__II_3FI }, 5329d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glSamplerParameterfv", "(IILjava/nio/FloatBuffer;)V", (void *) android_glSamplerParameterfv__IILjava_nio_FloatBuffer_2 }, 5330d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glGetSamplerParameteriv", "(II[II)V", (void *) android_glGetSamplerParameteriv__II_3II }, 5331d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glGetSamplerParameteriv", "(IILjava/nio/IntBuffer;)V", (void *) android_glGetSamplerParameteriv__IILjava_nio_IntBuffer_2 }, 5332d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glGetSamplerParameterfv", "(II[FI)V", (void *) android_glGetSamplerParameterfv__II_3FI }, 5333d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glGetSamplerParameterfv", "(IILjava/nio/FloatBuffer;)V", (void *) android_glGetSamplerParameterfv__IILjava_nio_FloatBuffer_2 }, 5334d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glVertexAttribDivisor", "(II)V", (void *) android_glVertexAttribDivisor__II }, 5335d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glBindTransformFeedback", "(II)V", (void *) android_glBindTransformFeedback__II }, 5336d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glDeleteTransformFeedbacks", "(I[II)V", (void *) android_glDeleteTransformFeedbacks__I_3II }, 5337d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glDeleteTransformFeedbacks", "(ILjava/nio/IntBuffer;)V", (void *) android_glDeleteTransformFeedbacks__ILjava_nio_IntBuffer_2 }, 5338d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glGenTransformFeedbacks", "(I[II)V", (void *) android_glGenTransformFeedbacks__I_3II }, 5339d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glGenTransformFeedbacks", "(ILjava/nio/IntBuffer;)V", (void *) android_glGenTransformFeedbacks__ILjava_nio_IntBuffer_2 }, 5340d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glIsTransformFeedback", "(I)Z", (void *) android_glIsTransformFeedback__I }, 5341d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glPauseTransformFeedback", "()V", (void *) android_glPauseTransformFeedback__ }, 5342d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glResumeTransformFeedback", "()V", (void *) android_glResumeTransformFeedback__ }, 5343d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glGetProgramBinary", "(II[II[IILjava/nio/Buffer;)V", (void *) android_glGetProgramBinary__II_3II_3IILjava_nio_Buffer_2 }, 5344d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse 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 }, 5345d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glProgramBinary", "(IILjava/nio/Buffer;I)V", (void *) android_glProgramBinary__IILjava_nio_Buffer_2I }, 5346d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glProgramParameteri", "(III)V", (void *) android_glProgramParameteri__III }, 5347d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glInvalidateFramebuffer", "(II[II)V", (void *) android_glInvalidateFramebuffer__II_3II }, 5348d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glInvalidateFramebuffer", "(IILjava/nio/IntBuffer;)V", (void *) android_glInvalidateFramebuffer__IILjava_nio_IntBuffer_2 }, 5349d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glInvalidateSubFramebuffer", "(II[IIIIII)V", (void *) android_glInvalidateSubFramebuffer__II_3IIIIII }, 5350d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glInvalidateSubFramebuffer", "(IILjava/nio/IntBuffer;IIII)V", (void *) android_glInvalidateSubFramebuffer__IILjava_nio_IntBuffer_2IIII }, 5351d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glTexStorage2D", "(IIIII)V", (void *) android_glTexStorage2D__IIIII }, 5352d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glTexStorage3D", "(IIIIII)V", (void *) android_glTexStorage3D__IIIIII }, 5353d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glGetInternalformativ", "(IIII[II)V", (void *) android_glGetInternalformativ__IIII_3II }, 5354d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{"glGetInternalformativ", "(IIIILjava/nio/IntBuffer;)V", (void *) android_glGetInternalformativ__IIIILjava_nio_IntBuffer_2 }, 535568981ff03b2c166800ddc82973a2aa95269a343bPablo Ceballos{"glReadPixels", "(IIIIIII)V", (void *) android_glReadPixels__IIIIIII }, 5356d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall}; 5357d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall 5358d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hallint register_android_opengl_jni_GLES30(JNIEnv *_env) 5359d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall{ 5360d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall int err; 5361d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall err = android::AndroidRuntime::registerNativeMethods(_env, classPathName, methods, NELEM(methods)); 5362d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall return err; 5363d830e74ff4bc9aa015f746e54f6922bf5221f1baJesse Hall} 5364