1560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* 2560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich** 3560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich** Copyright 2009, The Android Open Source Project 4560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich** 524ce5fb2cc09d0a14406e7b935f8648c5720d27eElliott Hughes** Licensed under the Apache License, Version 2.0 (the "License"); 624ce5fb2cc09d0a14406e7b935f8648c5720d27eElliott Hughes** you may not use this file except in compliance with the License. 724ce5fb2cc09d0a14406e7b935f8648c5720d27eElliott Hughes** You may obtain a copy of the License at 8560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich** 924ce5fb2cc09d0a14406e7b935f8648c5720d27eElliott Hughes** http://www.apache.org/licenses/LICENSE-2.0 10560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich** 1124ce5fb2cc09d0a14406e7b935f8648c5720d27eElliott Hughes** Unless required by applicable law or agreed to in writing, software 1224ce5fb2cc09d0a14406e7b935f8648c5720d27eElliott Hughes** distributed under the License is distributed on an "AS IS" BASIS, 1324ce5fb2cc09d0a14406e7b935f8648c5720d27eElliott Hughes** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1424ce5fb2cc09d0a14406e7b935f8648c5720d27eElliott Hughes** See the License for the specific language governing permissions and 15560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich** limitations under the License. 16560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich*/ 17560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 18560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich// This source file is automatically generated 19560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 202ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian#include <GLES2/gl2.h> 212ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian#include <GLES2/gl2ext.h> 222ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian 239626f8203a8c222b8960a49cdc66d540fdb688b0Jesse Hall#include <jni.h> 249626f8203a8c222b8960a49cdc66d540fdb688b0Jesse Hall#include <JNIHelp.h> 25560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#include <android_runtime/AndroidRuntime.h> 26560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#include <utils/misc.h> 27560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#include <assert.h> 28560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 29560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic int initialized = 0; 30560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 31560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic jclass nioAccessClass; 32560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic jclass bufferClass; 33560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic jmethodID getBasePointerID; 34560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic jmethodID getBaseArrayID; 35560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic jmethodID getBaseArrayOffsetID; 36560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic jfieldID positionID; 37560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic jfieldID limitID; 38560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic jfieldID elementSizeShiftID; 39560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 402ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian 412ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian/* special calls implemented in Android's GLES wrapper used to more 422ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian * efficiently bound-check passed arrays */ 432ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopianextern "C" { 442ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian#ifdef GL_VERSION_ES_CM_1_1 452ad0477f16c64dc3126741933f11e27353521bb4Mathias AgopianGL_API void GL_APIENTRY glColorPointerBounds(GLint size, GLenum type, GLsizei stride, 462ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian const GLvoid *ptr, GLsizei count); 472ad0477f16c64dc3126741933f11e27353521bb4Mathias AgopianGL_API void GL_APIENTRY glNormalPointerBounds(GLenum type, GLsizei stride, 482ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian const GLvoid *pointer, GLsizei count); 492ad0477f16c64dc3126741933f11e27353521bb4Mathias AgopianGL_API void GL_APIENTRY glTexCoordPointerBounds(GLint size, GLenum type, 502ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian GLsizei stride, const GLvoid *pointer, GLsizei count); 512ad0477f16c64dc3126741933f11e27353521bb4Mathias AgopianGL_API void GL_APIENTRY glVertexPointerBounds(GLint size, GLenum type, 522ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian GLsizei stride, const GLvoid *pointer, GLsizei count); 532ad0477f16c64dc3126741933f11e27353521bb4Mathias AgopianGL_API void GL_APIENTRY glPointSizePointerOESBounds(GLenum type, 542ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian GLsizei stride, const GLvoid *pointer, GLsizei count); 552ad0477f16c64dc3126741933f11e27353521bb4Mathias AgopianGL_API void GL_APIENTRY glMatrixIndexPointerOESBounds(GLint size, GLenum type, 562ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian GLsizei stride, const GLvoid *pointer, GLsizei count); 572ad0477f16c64dc3126741933f11e27353521bb4Mathias AgopianGL_API void GL_APIENTRY glWeightPointerOESBounds(GLint size, GLenum type, 582ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian GLsizei stride, const GLvoid *pointer, GLsizei count); 592ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian#endif 602ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian#ifdef GL_ES_VERSION_2_0 612ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopianstatic void glVertexAttribPointerBounds(GLuint indx, GLint size, GLenum type, 622ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian GLboolean normalized, GLsizei stride, const GLvoid *pointer, GLsizei count) { 632ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian glVertexAttribPointer(indx, size, type, normalized, stride, pointer); 642ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian} 652ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian#endif 66cee5198e7199fcbb131ff0d30165fb1d5c0107cfAndy McFadden#ifdef GL_ES_VERSION_3_0 67cee5198e7199fcbb131ff0d30165fb1d5c0107cfAndy McFaddenstatic void glVertexAttribIPointerBounds(GLuint indx, GLint size, GLenum type, 68cee5198e7199fcbb131ff0d30165fb1d5c0107cfAndy McFadden GLsizei stride, const GLvoid *pointer, GLsizei count) { 69cee5198e7199fcbb131ff0d30165fb1d5c0107cfAndy McFadden glVertexAttribIPointer(indx, size, type, stride, pointer); 70cee5198e7199fcbb131ff0d30165fb1d5c0107cfAndy McFadden} 71cee5198e7199fcbb131ff0d30165fb1d5c0107cfAndy McFadden#endif 722ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian} 732ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian 74560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* Cache method IDs each time the class is loaded. */ 75560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 76560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void 7724ce5fb2cc09d0a14406e7b935f8648c5720d27eElliott HughesnativeClassInit(JNIEnv *_env, jclass glImplClass) 78560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{ 79560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich jclass nioAccessClassLocal = _env->FindClass("java/nio/NIOAccess"); 80560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich nioAccessClass = (jclass) _env->NewGlobalRef(nioAccessClassLocal); 81560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 82560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich jclass bufferClassLocal = _env->FindClass("java/nio/Buffer"); 83560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich bufferClass = (jclass) _env->NewGlobalRef(bufferClassLocal); 84560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 85560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich getBasePointerID = _env->GetStaticMethodID(nioAccessClass, 86560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich "getBasePointer", "(Ljava/nio/Buffer;)J"); 87560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich getBaseArrayID = _env->GetStaticMethodID(nioAccessClass, 88560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich "getBaseArray", "(Ljava/nio/Buffer;)Ljava/lang/Object;"); 89560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich getBaseArrayOffsetID = _env->GetStaticMethodID(nioAccessClass, 90560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich "getBaseArrayOffset", "(Ljava/nio/Buffer;)I"); 91560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 92560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich positionID = _env->GetFieldID(bufferClass, "position", "I"); 93560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich limitID = _env->GetFieldID(bufferClass, "limit", "I"); 94560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich elementSizeShiftID = 95560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich _env->GetFieldID(bufferClass, "_elementSizeShift", "I"); 96560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich} 97560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 98560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void * 9917045a16575ece34cfadb63da4791f115625df78Thomas TafertshofergetPointer(JNIEnv *_env, jobject buffer, jarray *array, jint *remaining, jint *offset) 100560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{ 101560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich jint position; 102560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich jint limit; 103560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich jint elementSizeShift; 104560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich jlong pointer; 105560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 106560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich position = _env->GetIntField(buffer, positionID); 107560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich limit = _env->GetIntField(buffer, limitID); 108560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich elementSizeShift = _env->GetIntField(buffer, elementSizeShiftID); 109560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich *remaining = (limit - position) << elementSizeShift; 110560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich pointer = _env->CallStaticLongMethod(nioAccessClass, 111560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich getBasePointerID, buffer); 112560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich if (pointer != 0L) { 113560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich *array = NULL; 11401c26ea89d4bbea3cf550e9328742302dd9a2b25Ashok Bhat return reinterpret_cast<void*>(pointer); 115560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich } 11624ce5fb2cc09d0a14406e7b935f8648c5720d27eElliott Hughes 117560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich *array = (jarray) _env->CallStaticObjectMethod(nioAccessClass, 118560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich getBaseArrayID, buffer); 11917045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer *offset = _env->CallStaticIntMethod(nioAccessClass, 120560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich getBaseArrayOffsetID, buffer); 12124ce5fb2cc09d0a14406e7b935f8648c5720d27eElliott Hughes 12217045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer return NULL; 123560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich} 124560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 125560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void 126560814f6b11abe83ff0c4ed18cac015c276b3181Jack PalevichreleasePointer(JNIEnv *_env, jarray array, void *data, jboolean commit) 127560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{ 128560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich _env->ReleasePrimitiveArrayCritical(array, data, 1292ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian commit ? 0 : JNI_ABORT); 130560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich} 131560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 132560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void * 133560814f6b11abe83ff0c4ed18cac015c276b3181Jack PalevichgetDirectBufferPointer(JNIEnv *_env, jobject buffer) { 134560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich char* buf = (char*) _env->GetDirectBufferAddress(buffer); 135560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich if (buf) { 136560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich jint position = _env->GetIntField(buffer, positionID); 137560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich jint elementSizeShift = _env->GetIntField(buffer, elementSizeShiftID); 138560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich buf += position << elementSizeShift; 139560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich } else { 14024ce5fb2cc09d0a14406e7b935f8648c5720d27eElliott Hughes jniThrowException(_env, "java/lang/IllegalArgumentException", 14124ce5fb2cc09d0a14406e7b935f8648c5720d27eElliott Hughes "Must use a native order direct Buffer"); 142560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich } 143560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich return (void*) buf; 144560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich} 145560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 1462ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian// -------------------------------------------------------------------------- 1472ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian 1482ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian/* 1492ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian * returns the number of values glGet returns for a given pname. 1502ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian * 1512ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian * The code below is written such that pnames requiring only one values 1522ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian * are the default (and are not explicitely tested for). This makes the 1532ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian * checking code much shorter/readable/efficient. 1542ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian * 1552ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian * This means that unknown pnames (e.g.: extensions) will default to 1. If 1562ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian * that unknown pname needs more than 1 value, then the validation check 1572ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian * is incomplete and the app may crash if it passed the wrong number params. 1582ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian */ 1592ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopianstatic int getNeededCount(GLint pname) { 1602ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian int needed = 1; 1612ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian#ifdef GL_ES_VERSION_2_0 1622ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian // GLES 2.x pnames 1632ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian switch (pname) { 1642ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian case GL_ALIASED_LINE_WIDTH_RANGE: 1652ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian case GL_ALIASED_POINT_SIZE_RANGE: 1662ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian needed = 2; 1672ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian break; 1682ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian 1692ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian case GL_BLEND_COLOR: 1702ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian case GL_COLOR_CLEAR_VALUE: 1712ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian case GL_COLOR_WRITEMASK: 1722ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian case GL_SCISSOR_BOX: 1732ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian case GL_VIEWPORT: 1742ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian needed = 4; 1752ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian break; 1762ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian 1772ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian case GL_COMPRESSED_TEXTURE_FORMATS: 1782ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian glGetIntegerv(GL_NUM_COMPRESSED_TEXTURE_FORMATS, &needed); 1792ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian break; 1802ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian 1812ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian case GL_SHADER_BINARY_FORMATS: 1822ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian glGetIntegerv(GL_NUM_SHADER_BINARY_FORMATS, &needed); 1832ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian break; 1842ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian } 1852ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian#endif 1862ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian 1872ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian#ifdef GL_VERSION_ES_CM_1_1 1882ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian // GLES 1.x pnames 1892ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian switch (pname) { 1902ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian case GL_ALIASED_LINE_WIDTH_RANGE: 1912ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian case GL_ALIASED_POINT_SIZE_RANGE: 1922ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian case GL_DEPTH_RANGE: 1932ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian case GL_SMOOTH_LINE_WIDTH_RANGE: 1942ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian case GL_SMOOTH_POINT_SIZE_RANGE: 1952ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian needed = 2; 1962ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian break; 1972ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian 1982ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian case GL_CURRENT_NORMAL: 1992ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian case GL_POINT_DISTANCE_ATTENUATION: 2002ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian needed = 3; 2012ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian break; 2022ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian 2032ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian case GL_COLOR_CLEAR_VALUE: 2042ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian case GL_COLOR_WRITEMASK: 2052ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian case GL_CURRENT_COLOR: 2062ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian case GL_CURRENT_TEXTURE_COORDS: 2072ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian case GL_FOG_COLOR: 2082ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian case GL_LIGHT_MODEL_AMBIENT: 2092ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian case GL_SCISSOR_BOX: 2102ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian case GL_VIEWPORT: 2112ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian needed = 4; 2122ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian break; 2132ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian 2142ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian case GL_MODELVIEW_MATRIX: 2152ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian case GL_PROJECTION_MATRIX: 2162ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian case GL_TEXTURE_MATRIX: 2172ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian needed = 16; 2182ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian break; 2192ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian 2202ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian case GL_COMPRESSED_TEXTURE_FORMATS: 2212ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian glGetIntegerv(GL_NUM_COMPRESSED_TEXTURE_FORMATS, &needed); 2222ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian break; 2232ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian } 2242ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian#endif 2252ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian return needed; 226560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich} 227560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 2282ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopiantemplate <typename JTYPEARRAY, typename CTYPE, void GET(GLenum, CTYPE*)> 2292ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopianstatic void 2302ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopianget 2312ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian (JNIEnv *_env, jobject _this, jint pname, JTYPEARRAY params_ref, jint offset) { 2322ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian jint _exception = 0; 2332ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian const char * _exceptionType; 2342ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian const char * _exceptionMessage; 2352ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian CTYPE *params_base = (CTYPE *) 0; 2362ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian jint _remaining; 2372ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian CTYPE *params = (CTYPE *) 0; 2382ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian int _needed = 0; 2392ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian 2402ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian if (!params_ref) { 2412ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian _exception = 1; 2422ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian _exceptionType = "java/lang/IllegalArgumentException"; 2432ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian _exceptionMessage = "params == null"; 2442ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian goto exit; 2452ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian } 2462ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian if (offset < 0) { 2472ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian _exception = 1; 2482ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian _exceptionType = "java/lang/IllegalArgumentException"; 2492ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian _exceptionMessage = "offset < 0"; 2502ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian goto exit; 2512ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian } 2522ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian _remaining = _env->GetArrayLength(params_ref) - offset; 2532ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian _needed = getNeededCount(pname); 2542ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian // if we didn't find this pname, we just assume the user passed 2552ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian // an array of the right size -- this might happen with extensions 2562ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian // or if we forget an enum here. 2572ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian if (_remaining < _needed) { 2582ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian _exception = 1; 2592ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian _exceptionType = "java/lang/IllegalArgumentException"; 2602ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian _exceptionMessage = "length - offset < needed"; 2612ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian goto exit; 2622ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian } 2632ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian params_base = (CTYPE *) 2642ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian _env->GetPrimitiveArrayCritical(params_ref, (jboolean *)0); 2652ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian params = params_base + offset; 2662ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian 2672ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian GET( 2682ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian (GLenum)pname, 2692ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian (CTYPE *)params 2702ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian ); 2712ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian 2722ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopianexit: 2732ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian if (params_base) { 2742ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian _env->ReleasePrimitiveArrayCritical(params_ref, params_base, 2752ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian _exception ? JNI_ABORT: 0); 2762ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian } 2772ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian if (_exception) { 2782ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian jniThrowException(_env, _exceptionType, _exceptionMessage); 2792ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian } 2802ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian} 2812ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian 2822ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian 2832ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopiantemplate <typename CTYPE, void GET(GLenum, CTYPE*)> 2842ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopianstatic void 2852ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopiangetarray 2862ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian (JNIEnv *_env, jobject _this, jint pname, jobject params_buf) { 2872ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian jint _exception = 0; 2882ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian const char * _exceptionType; 2892ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian const char * _exceptionMessage; 2902ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian jarray _array = (jarray) 0; 2912ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian jint _bufferOffset = (jint) 0; 2922ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian jint _remaining; 2932ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian CTYPE *params = (CTYPE *) 0; 2942ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian int _needed = 0; 2952ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian 2962ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian params = (CTYPE *)getPointer(_env, params_buf, &_array, &_remaining, &_bufferOffset); 297cee5198e7199fcbb131ff0d30165fb1d5c0107cfAndy McFadden _remaining /= sizeof(CTYPE); // convert from bytes to item count 2982ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian _needed = getNeededCount(pname); 2992ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian // if we didn't find this pname, we just assume the user passed 3002ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian // an array of the right size -- this might happen with extensions 3012ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian // or if we forget an enum here. 3022ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian if (_needed>0 && _remaining < _needed) { 3032ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian _exception = 1; 3042ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian _exceptionType = "java/lang/IllegalArgumentException"; 3052ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian _exceptionMessage = "remaining() < needed"; 3062ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian goto exit; 3072ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian } 3082ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian if (params == NULL) { 3092ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian char * _paramsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); 3102ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian params = (CTYPE *) (_paramsBase + _bufferOffset); 3112ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian } 3122ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian GET( 3132ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian (GLenum)pname, 3142ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian (CTYPE *)params 3152ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian ); 3162ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian 3172ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopianexit: 3182ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian if (_array) { 3192ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian releasePointer(_env, _array, params, _exception ? JNI_FALSE : JNI_TRUE); 3202ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian } 3212ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian if (_exception) { 3222ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian jniThrowException(_env, _exceptionType, _exceptionMessage); 3232ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian } 324560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich} 325560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 326560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich// -------------------------------------------------------------------------- 327560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glActiveTexture ( GLenum texture ) */ 328560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void 329560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glActiveTexture__I 330560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (JNIEnv *_env, jobject _this, jint texture) { 331560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich glActiveTexture( 332560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLenum)texture 333560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich ); 334560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich} 335560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 336560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glAttachShader ( GLuint program, GLuint shader ) */ 337560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void 338560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glAttachShader__II 339560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (JNIEnv *_env, jobject _this, jint program, jint shader) { 340560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich glAttachShader( 341560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLuint)program, 342560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLuint)shader 343560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich ); 344560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich} 345560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 346560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glBindAttribLocation ( GLuint program, GLuint index, const char *name ) */ 347560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void 348560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glBindAttribLocation__IILjava_lang_String_2 349560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (JNIEnv *_env, jobject _this, jint program, jint index, jstring name) { 3502545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer jint _exception = 0; 3512ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian const char * _exceptionType = NULL; 3522ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian const char * _exceptionMessage = NULL; 353560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich const char* _nativename = 0; 354560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 355560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich if (!name) { 356428d3fcbe3596b18549cdada9fc68a29f159a946Elliott Hughes _exception = 1; 3572545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionType = "java/lang/IllegalArgumentException"; 3582545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionMessage = "name == null"; 359560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich goto exit; 360560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich } 361560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich _nativename = _env->GetStringUTFChars(name, 0); 362560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 363560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich glBindAttribLocation( 364560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLuint)program, 365560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLuint)index, 366560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (char *)_nativename 367560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich ); 368560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 369560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichexit: 370560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich if (_nativename) { 371560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich _env->ReleaseStringUTFChars(name, _nativename); 372560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich } 373560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 3742545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer if (_exception) { 3752545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer jniThrowException(_env, _exceptionType, _exceptionMessage); 3762545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer } 377560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich} 378560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 379560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glBindBuffer ( GLenum target, GLuint buffer ) */ 380560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void 381560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glBindBuffer__II 382560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (JNIEnv *_env, jobject _this, jint target, jint buffer) { 383560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich glBindBuffer( 384560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLenum)target, 385560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLuint)buffer 386560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich ); 387560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich} 388560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 389560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glBindFramebuffer ( GLenum target, GLuint framebuffer ) */ 390560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void 391560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glBindFramebuffer__II 392560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (JNIEnv *_env, jobject _this, jint target, jint framebuffer) { 393560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich glBindFramebuffer( 394560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLenum)target, 395560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLuint)framebuffer 396560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich ); 397560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich} 398560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 399560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glBindRenderbuffer ( GLenum target, GLuint renderbuffer ) */ 400560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void 401560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glBindRenderbuffer__II 402560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (JNIEnv *_env, jobject _this, jint target, jint renderbuffer) { 403560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich glBindRenderbuffer( 404560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLenum)target, 405560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLuint)renderbuffer 406560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich ); 407560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich} 408560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 409560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glBindTexture ( GLenum target, GLuint texture ) */ 410560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void 411560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glBindTexture__II 412560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (JNIEnv *_env, jobject _this, jint target, jint texture) { 413560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich glBindTexture( 414560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLenum)target, 415560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLuint)texture 416560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich ); 417560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich} 418560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 419560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glBlendColor ( GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha ) */ 420560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void 421560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glBlendColor__FFFF 422560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (JNIEnv *_env, jobject _this, jfloat red, jfloat green, jfloat blue, jfloat alpha) { 423560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich glBlendColor( 424560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLclampf)red, 425560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLclampf)green, 426560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLclampf)blue, 427560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLclampf)alpha 428560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich ); 429560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich} 430560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 431560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glBlendEquation ( GLenum mode ) */ 432560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void 433560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glBlendEquation__I 434560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (JNIEnv *_env, jobject _this, jint mode) { 43573108675c944ab4ee89631dced23566b12341b66Jack Palevich glBlendEquation( 43673108675c944ab4ee89631dced23566b12341b66Jack Palevich (GLenum)mode 43773108675c944ab4ee89631dced23566b12341b66Jack Palevich ); 438560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich} 439560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 440560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glBlendEquationSeparate ( GLenum modeRGB, GLenum modeAlpha ) */ 441560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void 442560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glBlendEquationSeparate__II 443560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (JNIEnv *_env, jobject _this, jint modeRGB, jint modeAlpha) { 44473108675c944ab4ee89631dced23566b12341b66Jack Palevich glBlendEquationSeparate( 44573108675c944ab4ee89631dced23566b12341b66Jack Palevich (GLenum)modeRGB, 44673108675c944ab4ee89631dced23566b12341b66Jack Palevich (GLenum)modeAlpha 44773108675c944ab4ee89631dced23566b12341b66Jack Palevich ); 448560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich} 449560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 450560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glBlendFunc ( GLenum sfactor, GLenum dfactor ) */ 451560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void 452560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glBlendFunc__II 453560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (JNIEnv *_env, jobject _this, jint sfactor, jint dfactor) { 454560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich glBlendFunc( 455560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLenum)sfactor, 456560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLenum)dfactor 457560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich ); 458560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich} 459560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 460560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glBlendFuncSeparate ( GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha ) */ 461560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void 462560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glBlendFuncSeparate__IIII 463560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (JNIEnv *_env, jobject _this, jint srcRGB, jint dstRGB, jint srcAlpha, jint dstAlpha) { 46473108675c944ab4ee89631dced23566b12341b66Jack Palevich glBlendFuncSeparate( 46573108675c944ab4ee89631dced23566b12341b66Jack Palevich (GLenum)srcRGB, 46673108675c944ab4ee89631dced23566b12341b66Jack Palevich (GLenum)dstRGB, 46773108675c944ab4ee89631dced23566b12341b66Jack Palevich (GLenum)srcAlpha, 46873108675c944ab4ee89631dced23566b12341b66Jack Palevich (GLenum)dstAlpha 46973108675c944ab4ee89631dced23566b12341b66Jack Palevich ); 470560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich} 471560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 472560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glBufferData ( GLenum target, GLsizeiptr size, const GLvoid *data, GLenum usage ) */ 473560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void 474560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glBufferData__IILjava_nio_Buffer_2I 475560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (JNIEnv *_env, jobject _this, jint target, jint size, jobject data_buf, jint usage) { 4762545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer jint _exception = 0; 4772ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian const char * _exceptionType = NULL; 4782ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian const char * _exceptionMessage = NULL; 479560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich jarray _array = (jarray) 0; 48017045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer jint _bufferOffset = (jint) 0; 481560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich jint _remaining; 482560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich GLvoid *data = (GLvoid *) 0; 483560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 484560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich if (data_buf) { 48517045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer data = (GLvoid *)getPointer(_env, data_buf, &_array, &_remaining, &_bufferOffset); 486560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich if (_remaining < size) { 4872545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exception = 1; 4882545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionType = "java/lang/IllegalArgumentException"; 4892545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionMessage = "remaining() < size < needed"; 490560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich goto exit; 491560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich } 492560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich } 49337c9b49ab5eb5a676370fd7081db0967c38e97a6Thomas Tafertshofer if (data_buf && data == NULL) { 49417045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer char * _dataBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); 49517045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer data = (GLvoid *) (_dataBase + _bufferOffset); 49617045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer } 497560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich glBufferData( 498560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLenum)target, 499560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLsizeiptr)size, 500560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLvoid *)data, 501560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLenum)usage 502560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich ); 503560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 504560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichexit: 505560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich if (_array) { 506560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich releasePointer(_env, _array, data, JNI_FALSE); 507560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich } 5082545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer if (_exception) { 5092545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer jniThrowException(_env, _exceptionType, _exceptionMessage); 5102545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer } 511560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich} 512560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 513560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glBufferSubData ( GLenum target, GLintptr offset, GLsizeiptr size, const GLvoid *data ) */ 514560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void 515560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glBufferSubData__IIILjava_nio_Buffer_2 516560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (JNIEnv *_env, jobject _this, jint target, jint offset, jint size, jobject data_buf) { 5172545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer jint _exception = 0; 5182ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian const char * _exceptionType = NULL; 5192ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian const char * _exceptionMessage = NULL; 520560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich jarray _array = (jarray) 0; 52117045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer jint _bufferOffset = (jint) 0; 522560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich jint _remaining; 523560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich GLvoid *data = (GLvoid *) 0; 524560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 52517045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer data = (GLvoid *)getPointer(_env, data_buf, &_array, &_remaining, &_bufferOffset); 526560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich if (_remaining < size) { 5272545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exception = 1; 5282545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionType = "java/lang/IllegalArgumentException"; 5292545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionMessage = "remaining() < size < needed"; 530560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich goto exit; 531560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich } 53217045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer if (data == NULL) { 53317045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer char * _dataBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); 53417045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer data = (GLvoid *) (_dataBase + _bufferOffset); 53517045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer } 536560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich glBufferSubData( 537560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLenum)target, 538560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLintptr)offset, 539560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLsizeiptr)size, 540560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLvoid *)data 541560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich ); 542560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 543560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichexit: 544560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich if (_array) { 545560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich releasePointer(_env, _array, data, JNI_FALSE); 546560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich } 5472545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer if (_exception) { 5482545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer jniThrowException(_env, _exceptionType, _exceptionMessage); 5492545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer } 550560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich} 551560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 552560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* GLenum glCheckFramebufferStatus ( GLenum target ) */ 553560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic jint 554560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glCheckFramebufferStatus__I 555560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (JNIEnv *_env, jobject _this, jint target) { 556560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich GLenum _returnValue; 557560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich _returnValue = glCheckFramebufferStatus( 558560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLenum)target 559560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich ); 560cee5198e7199fcbb131ff0d30165fb1d5c0107cfAndy McFadden return (jint)_returnValue; 561560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich} 562560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 563560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glClear ( GLbitfield mask ) */ 564560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void 565560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glClear__I 566560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (JNIEnv *_env, jobject _this, jint mask) { 567560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich glClear( 568560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLbitfield)mask 569560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich ); 570560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich} 571560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 572560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glClearColor ( GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha ) */ 573560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void 574560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glClearColor__FFFF 575560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (JNIEnv *_env, jobject _this, jfloat red, jfloat green, jfloat blue, jfloat alpha) { 576560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich glClearColor( 577560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLclampf)red, 578560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLclampf)green, 579560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLclampf)blue, 580560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLclampf)alpha 581560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich ); 582560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich} 583560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 584560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glClearDepthf ( GLclampf depth ) */ 585560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void 586560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glClearDepthf__F 587560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (JNIEnv *_env, jobject _this, jfloat depth) { 588560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich glClearDepthf( 589560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLclampf)depth 590560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich ); 591560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich} 592560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 593560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glClearStencil ( GLint s ) */ 594560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void 595560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glClearStencil__I 596560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (JNIEnv *_env, jobject _this, jint s) { 597560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich glClearStencil( 598560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLint)s 599560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich ); 600560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich} 601560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 602560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glColorMask ( GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha ) */ 603560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void 604560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glColorMask__ZZZZ 605560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (JNIEnv *_env, jobject _this, jboolean red, jboolean green, jboolean blue, jboolean alpha) { 606560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich glColorMask( 607560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLboolean)red, 608560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLboolean)green, 609560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLboolean)blue, 610560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLboolean)alpha 611560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich ); 612560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich} 613560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 614560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glCompileShader ( GLuint shader ) */ 615560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void 616560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glCompileShader__I 617560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (JNIEnv *_env, jobject _this, jint shader) { 618560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich glCompileShader( 619560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLuint)shader 620560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich ); 621560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich} 622560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 623560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glCompressedTexImage2D ( GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid *data ) */ 624560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void 625560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glCompressedTexImage2D__IIIIIIILjava_nio_Buffer_2 626560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (JNIEnv *_env, jobject _this, jint target, jint level, jint internalformat, jint width, jint height, jint border, jint imageSize, jobject data_buf) { 627560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich jarray _array = (jarray) 0; 62817045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer jint _bufferOffset = (jint) 0; 629560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich jint _remaining; 630560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich GLvoid *data = (GLvoid *) 0; 631560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 63217045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer data = (GLvoid *)getPointer(_env, data_buf, &_array, &_remaining, &_bufferOffset); 63317045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer if (data == NULL) { 63417045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer char * _dataBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); 63517045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer data = (GLvoid *) (_dataBase + _bufferOffset); 63617045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer } 637560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich glCompressedTexImage2D( 638560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLenum)target, 639560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLint)level, 640560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLenum)internalformat, 641560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLsizei)width, 642560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLsizei)height, 643560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLint)border, 644560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLsizei)imageSize, 645560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLvoid *)data 646560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich ); 647560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich if (_array) { 648560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich releasePointer(_env, _array, data, JNI_FALSE); 649560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich } 650560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich} 651560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 652560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glCompressedTexSubImage2D ( GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const GLvoid *data ) */ 653560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void 654560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glCompressedTexSubImage2D__IIIIIIIILjava_nio_Buffer_2 655560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (JNIEnv *_env, jobject _this, jint target, jint level, jint xoffset, jint yoffset, jint width, jint height, jint format, jint imageSize, jobject data_buf) { 656560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich jarray _array = (jarray) 0; 65717045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer jint _bufferOffset = (jint) 0; 658560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich jint _remaining; 659560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich GLvoid *data = (GLvoid *) 0; 660560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 66117045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer data = (GLvoid *)getPointer(_env, data_buf, &_array, &_remaining, &_bufferOffset); 66217045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer if (data == NULL) { 66317045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer char * _dataBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); 66417045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer data = (GLvoid *) (_dataBase + _bufferOffset); 66517045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer } 666560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich glCompressedTexSubImage2D( 667560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLenum)target, 668560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLint)level, 669560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLint)xoffset, 670560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLint)yoffset, 671560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLsizei)width, 672560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLsizei)height, 673560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLenum)format, 674560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLsizei)imageSize, 675560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLvoid *)data 676560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich ); 677560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich if (_array) { 678560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich releasePointer(_env, _array, data, JNI_FALSE); 679560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich } 680560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich} 681560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 682560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glCopyTexImage2D ( GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border ) */ 683560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void 684560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glCopyTexImage2D__IIIIIIII 685560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (JNIEnv *_env, jobject _this, jint target, jint level, jint internalformat, jint x, jint y, jint width, jint height, jint border) { 686560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich glCopyTexImage2D( 687560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLenum)target, 688560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLint)level, 689560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLenum)internalformat, 690560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLint)x, 691560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLint)y, 692560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLsizei)width, 693560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLsizei)height, 694560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLint)border 695560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich ); 696560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich} 697560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 698560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glCopyTexSubImage2D ( GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height ) */ 699560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void 700560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glCopyTexSubImage2D__IIIIIIII 701560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (JNIEnv *_env, jobject _this, jint target, jint level, jint xoffset, jint yoffset, jint x, jint y, jint width, jint height) { 702560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich glCopyTexSubImage2D( 703560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLenum)target, 704560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLint)level, 705560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLint)xoffset, 706560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLint)yoffset, 707560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLint)x, 708560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLint)y, 709560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLsizei)width, 710560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLsizei)height 711560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich ); 712560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich} 713560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 714560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* GLuint glCreateProgram ( void ) */ 715560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic jint 716560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glCreateProgram__ 717560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (JNIEnv *_env, jobject _this) { 718560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich GLuint _returnValue; 719560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich _returnValue = glCreateProgram(); 720cee5198e7199fcbb131ff0d30165fb1d5c0107cfAndy McFadden return (jint)_returnValue; 721560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich} 722560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 723560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* GLuint glCreateShader ( GLenum type ) */ 724560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic jint 725560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glCreateShader__I 726560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (JNIEnv *_env, jobject _this, jint type) { 727560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich GLuint _returnValue; 728560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich _returnValue = glCreateShader( 729560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLenum)type 730560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich ); 731cee5198e7199fcbb131ff0d30165fb1d5c0107cfAndy McFadden return (jint)_returnValue; 732560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich} 733560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 734560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glCullFace ( GLenum mode ) */ 735560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void 736560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glCullFace__I 737560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (JNIEnv *_env, jobject _this, jint mode) { 738560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich glCullFace( 739560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLenum)mode 740560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich ); 741560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich} 742560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 743560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glDeleteBuffers ( GLsizei n, const GLuint *buffers ) */ 744560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void 745560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glDeleteBuffers__I_3II 746560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (JNIEnv *_env, jobject _this, jint n, jintArray buffers_ref, jint offset) { 7472545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer jint _exception = 0; 7482ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian const char * _exceptionType = NULL; 7492ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian const char * _exceptionMessage = NULL; 750560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich GLuint *buffers_base = (GLuint *) 0; 751560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich jint _remaining; 752560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich GLuint *buffers = (GLuint *) 0; 753560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 754560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich if (!buffers_ref) { 7552545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exception = 1; 7562545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionType = "java/lang/IllegalArgumentException"; 7572545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionMessage = "buffers == null"; 758560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich goto exit; 759560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich } 760560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich if (offset < 0) { 7612545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exception = 1; 7622545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionType = "java/lang/IllegalArgumentException"; 7632545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionMessage = "offset < 0"; 764560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich goto exit; 765560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich } 766560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich _remaining = _env->GetArrayLength(buffers_ref) - offset; 767560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich if (_remaining < n) { 7682545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exception = 1; 7692545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionType = "java/lang/IllegalArgumentException"; 7702545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionMessage = "length - offset < n < needed"; 771560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich goto exit; 772560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich } 773560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich buffers_base = (GLuint *) 774560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich _env->GetPrimitiveArrayCritical(buffers_ref, (jboolean *)0); 775560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich buffers = buffers_base + offset; 776560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 777560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich glDeleteBuffers( 778560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLsizei)n, 779560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLuint *)buffers 780560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich ); 781560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 782560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichexit: 783560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich if (buffers_base) { 784560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich _env->ReleasePrimitiveArrayCritical(buffers_ref, buffers_base, 785560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich JNI_ABORT); 786560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich } 7872545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer if (_exception) { 7882545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer jniThrowException(_env, _exceptionType, _exceptionMessage); 7892545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer } 790560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich} 791560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 792560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glDeleteBuffers ( GLsizei n, const GLuint *buffers ) */ 793560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void 794560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glDeleteBuffers__ILjava_nio_IntBuffer_2 795560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (JNIEnv *_env, jobject _this, jint n, jobject buffers_buf) { 7962545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer jint _exception = 0; 7972ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian const char * _exceptionType = NULL; 7982ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian const char * _exceptionMessage = NULL; 799560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich jarray _array = (jarray) 0; 80017045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer jint _bufferOffset = (jint) 0; 801560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich jint _remaining; 802560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich GLuint *buffers = (GLuint *) 0; 803560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 80417045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer buffers = (GLuint *)getPointer(_env, buffers_buf, &_array, &_remaining, &_bufferOffset); 805560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich if (_remaining < n) { 8062545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exception = 1; 8072545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionType = "java/lang/IllegalArgumentException"; 8082545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionMessage = "remaining() < n < needed"; 809560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich goto exit; 810560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich } 81117045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer if (buffers == NULL) { 81217045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer char * _buffersBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); 81317045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer buffers = (GLuint *) (_buffersBase + _bufferOffset); 81417045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer } 815560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich glDeleteBuffers( 816560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLsizei)n, 817560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLuint *)buffers 818560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich ); 819560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 820560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichexit: 821560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich if (_array) { 822560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich releasePointer(_env, _array, buffers, JNI_FALSE); 823560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich } 8242545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer if (_exception) { 8252545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer jniThrowException(_env, _exceptionType, _exceptionMessage); 8262545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer } 827560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich} 828560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 829560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glDeleteFramebuffers ( GLsizei n, const GLuint *framebuffers ) */ 830560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void 831560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glDeleteFramebuffers__I_3II 832560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (JNIEnv *_env, jobject _this, jint n, jintArray framebuffers_ref, jint offset) { 8332545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer jint _exception = 0; 8342ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian const char * _exceptionType = NULL; 8352ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian const char * _exceptionMessage = NULL; 836560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich GLuint *framebuffers_base = (GLuint *) 0; 837560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich jint _remaining; 838560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich GLuint *framebuffers = (GLuint *) 0; 839560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 840560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich if (!framebuffers_ref) { 8412545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exception = 1; 8422545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionType = "java/lang/IllegalArgumentException"; 8432545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionMessage = "framebuffers == null"; 844560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich goto exit; 845560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich } 846560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich if (offset < 0) { 8472545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exception = 1; 8482545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionType = "java/lang/IllegalArgumentException"; 8492545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionMessage = "offset < 0"; 850560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich goto exit; 851560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich } 852560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich _remaining = _env->GetArrayLength(framebuffers_ref) - offset; 8532ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian if (_remaining < n) { 8542ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian _exception = 1; 8552ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian _exceptionType = "java/lang/IllegalArgumentException"; 8562ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian _exceptionMessage = "length - offset < n < needed"; 8572ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian goto exit; 8582ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian } 859560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich framebuffers_base = (GLuint *) 860560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich _env->GetPrimitiveArrayCritical(framebuffers_ref, (jboolean *)0); 861560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich framebuffers = framebuffers_base + offset; 862560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 863560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich glDeleteFramebuffers( 864560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLsizei)n, 865560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLuint *)framebuffers 866560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich ); 867560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 868560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichexit: 869560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich if (framebuffers_base) { 870560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich _env->ReleasePrimitiveArrayCritical(framebuffers_ref, framebuffers_base, 871560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich JNI_ABORT); 872560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich } 8732545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer if (_exception) { 8742545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer jniThrowException(_env, _exceptionType, _exceptionMessage); 8752545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer } 876560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich} 877560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 878560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glDeleteFramebuffers ( GLsizei n, const GLuint *framebuffers ) */ 879560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void 880560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glDeleteFramebuffers__ILjava_nio_IntBuffer_2 881560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (JNIEnv *_env, jobject _this, jint n, jobject framebuffers_buf) { 8822ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian jint _exception = 0; 8832ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian const char * _exceptionType = NULL; 8842ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian const char * _exceptionMessage = NULL; 885560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich jarray _array = (jarray) 0; 88617045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer jint _bufferOffset = (jint) 0; 887560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich jint _remaining; 888560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich GLuint *framebuffers = (GLuint *) 0; 889560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 89017045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer framebuffers = (GLuint *)getPointer(_env, framebuffers_buf, &_array, &_remaining, &_bufferOffset); 8912ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian if (_remaining < n) { 8922ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian _exception = 1; 8932ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian _exceptionType = "java/lang/IllegalArgumentException"; 8942ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian _exceptionMessage = "remaining() < n < needed"; 8952ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian goto exit; 8962ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian } 89717045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer if (framebuffers == NULL) { 89817045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer char * _framebuffersBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); 89917045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer framebuffers = (GLuint *) (_framebuffersBase + _bufferOffset); 90017045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer } 901560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich glDeleteFramebuffers( 902560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLsizei)n, 903560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLuint *)framebuffers 904560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich ); 9052ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian 9062ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopianexit: 907560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich if (_array) { 908560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich releasePointer(_env, _array, framebuffers, JNI_FALSE); 909560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich } 9102ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian if (_exception) { 9112ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian jniThrowException(_env, _exceptionType, _exceptionMessage); 9122ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian } 913560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich} 914560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 915560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glDeleteProgram ( GLuint program ) */ 916560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void 917560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glDeleteProgram__I 918560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (JNIEnv *_env, jobject _this, jint program) { 919560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich glDeleteProgram( 920560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLuint)program 921560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich ); 922560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich} 923560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 924560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glDeleteRenderbuffers ( GLsizei n, const GLuint *renderbuffers ) */ 925560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void 926560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glDeleteRenderbuffers__I_3II 927560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (JNIEnv *_env, jobject _this, jint n, jintArray renderbuffers_ref, jint offset) { 9282545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer jint _exception = 0; 9292ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian const char * _exceptionType = NULL; 9302ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian const char * _exceptionMessage = NULL; 931560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich GLuint *renderbuffers_base = (GLuint *) 0; 932560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich jint _remaining; 933560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich GLuint *renderbuffers = (GLuint *) 0; 934560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 935560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich if (!renderbuffers_ref) { 9362545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exception = 1; 9372545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionType = "java/lang/IllegalArgumentException"; 9382545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionMessage = "renderbuffers == null"; 939560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich goto exit; 940560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich } 941560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich if (offset < 0) { 9422545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exception = 1; 9432545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionType = "java/lang/IllegalArgumentException"; 9442545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionMessage = "offset < 0"; 945560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich goto exit; 946560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich } 947560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich _remaining = _env->GetArrayLength(renderbuffers_ref) - offset; 9482ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian if (_remaining < n) { 9492ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian _exception = 1; 9502ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian _exceptionType = "java/lang/IllegalArgumentException"; 9512ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian _exceptionMessage = "length - offset < n < needed"; 9522ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian goto exit; 9532ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian } 954560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich renderbuffers_base = (GLuint *) 955560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich _env->GetPrimitiveArrayCritical(renderbuffers_ref, (jboolean *)0); 956560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich renderbuffers = renderbuffers_base + offset; 957560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 958560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich glDeleteRenderbuffers( 959560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLsizei)n, 960560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLuint *)renderbuffers 961560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich ); 962560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 963560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichexit: 964560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich if (renderbuffers_base) { 965560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich _env->ReleasePrimitiveArrayCritical(renderbuffers_ref, renderbuffers_base, 966560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich JNI_ABORT); 967560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich } 9682545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer if (_exception) { 9692545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer jniThrowException(_env, _exceptionType, _exceptionMessage); 9702545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer } 971560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich} 972560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 973560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glDeleteRenderbuffers ( GLsizei n, const GLuint *renderbuffers ) */ 974560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void 975560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glDeleteRenderbuffers__ILjava_nio_IntBuffer_2 976560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (JNIEnv *_env, jobject _this, jint n, jobject renderbuffers_buf) { 9772ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian jint _exception = 0; 9782ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian const char * _exceptionType = NULL; 9792ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian const char * _exceptionMessage = NULL; 980560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich jarray _array = (jarray) 0; 98117045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer jint _bufferOffset = (jint) 0; 982560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich jint _remaining; 983560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich GLuint *renderbuffers = (GLuint *) 0; 984560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 98517045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer renderbuffers = (GLuint *)getPointer(_env, renderbuffers_buf, &_array, &_remaining, &_bufferOffset); 9862ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian if (_remaining < n) { 9872ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian _exception = 1; 9882ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian _exceptionType = "java/lang/IllegalArgumentException"; 9892ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian _exceptionMessage = "remaining() < n < needed"; 9902ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian goto exit; 9912ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian } 99217045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer if (renderbuffers == NULL) { 99317045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer char * _renderbuffersBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); 99417045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer renderbuffers = (GLuint *) (_renderbuffersBase + _bufferOffset); 99517045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer } 996560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich glDeleteRenderbuffers( 997560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLsizei)n, 998560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLuint *)renderbuffers 999560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich ); 10002ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian 10012ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopianexit: 1002560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich if (_array) { 1003560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich releasePointer(_env, _array, renderbuffers, JNI_FALSE); 1004560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich } 10052ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian if (_exception) { 10062ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian jniThrowException(_env, _exceptionType, _exceptionMessage); 10072ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian } 1008560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich} 1009560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 1010560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glDeleteShader ( GLuint shader ) */ 1011560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void 1012560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glDeleteShader__I 1013560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (JNIEnv *_env, jobject _this, jint shader) { 1014560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich glDeleteShader( 1015560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLuint)shader 1016560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich ); 1017560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich} 1018560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 1019560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glDeleteTextures ( GLsizei n, const GLuint *textures ) */ 1020560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void 1021560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glDeleteTextures__I_3II 1022560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (JNIEnv *_env, jobject _this, jint n, jintArray textures_ref, jint offset) { 10232545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer jint _exception = 0; 10242ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian const char * _exceptionType = NULL; 10252ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian const char * _exceptionMessage = NULL; 1026560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich GLuint *textures_base = (GLuint *) 0; 1027560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich jint _remaining; 1028560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich GLuint *textures = (GLuint *) 0; 1029560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 1030560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich if (!textures_ref) { 10312545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exception = 1; 10322545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionType = "java/lang/IllegalArgumentException"; 10332545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionMessage = "textures == null"; 1034560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich goto exit; 1035560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich } 1036560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich if (offset < 0) { 10372545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exception = 1; 10382545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionType = "java/lang/IllegalArgumentException"; 10392545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionMessage = "offset < 0"; 1040560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich goto exit; 1041560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich } 1042560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich _remaining = _env->GetArrayLength(textures_ref) - offset; 1043560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich if (_remaining < n) { 10442545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exception = 1; 10452545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionType = "java/lang/IllegalArgumentException"; 10462545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionMessage = "length - offset < n < needed"; 1047560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich goto exit; 1048560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich } 1049560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich textures_base = (GLuint *) 1050560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich _env->GetPrimitiveArrayCritical(textures_ref, (jboolean *)0); 1051560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich textures = textures_base + offset; 1052560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 1053560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich glDeleteTextures( 1054560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLsizei)n, 1055560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLuint *)textures 1056560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich ); 1057560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 1058560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichexit: 1059560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich if (textures_base) { 1060560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich _env->ReleasePrimitiveArrayCritical(textures_ref, textures_base, 1061560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich JNI_ABORT); 1062560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich } 10632545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer if (_exception) { 10642545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer jniThrowException(_env, _exceptionType, _exceptionMessage); 10652545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer } 1066560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich} 1067560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 1068560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glDeleteTextures ( GLsizei n, const GLuint *textures ) */ 1069560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void 1070560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glDeleteTextures__ILjava_nio_IntBuffer_2 1071560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (JNIEnv *_env, jobject _this, jint n, jobject textures_buf) { 10722545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer jint _exception = 0; 10732ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian const char * _exceptionType = NULL; 10742ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian const char * _exceptionMessage = NULL; 1075560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich jarray _array = (jarray) 0; 107617045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer jint _bufferOffset = (jint) 0; 1077560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich jint _remaining; 1078560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich GLuint *textures = (GLuint *) 0; 1079560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 108017045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer textures = (GLuint *)getPointer(_env, textures_buf, &_array, &_remaining, &_bufferOffset); 1081560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich if (_remaining < n) { 10822545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exception = 1; 10832545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionType = "java/lang/IllegalArgumentException"; 10842545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionMessage = "remaining() < n < needed"; 1085560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich goto exit; 1086560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich } 108717045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer if (textures == NULL) { 108817045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer char * _texturesBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); 108917045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer textures = (GLuint *) (_texturesBase + _bufferOffset); 109017045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer } 1091560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich glDeleteTextures( 1092560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLsizei)n, 1093560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLuint *)textures 1094560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich ); 1095560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 1096560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichexit: 1097560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich if (_array) { 1098560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich releasePointer(_env, _array, textures, JNI_FALSE); 1099560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich } 11002545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer if (_exception) { 11012545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer jniThrowException(_env, _exceptionType, _exceptionMessage); 11022545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer } 1103560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich} 1104560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 1105560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glDepthFunc ( GLenum func ) */ 1106560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void 1107560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glDepthFunc__I 1108560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (JNIEnv *_env, jobject _this, jint func) { 1109560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich glDepthFunc( 1110560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLenum)func 1111560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich ); 1112560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich} 1113560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 1114560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glDepthMask ( GLboolean flag ) */ 1115560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void 1116560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glDepthMask__Z 1117560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (JNIEnv *_env, jobject _this, jboolean flag) { 1118560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich glDepthMask( 1119560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLboolean)flag 1120560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich ); 1121560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich} 1122560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 1123560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glDepthRangef ( GLclampf zNear, GLclampf zFar ) */ 1124560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void 1125560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glDepthRangef__FF 1126560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (JNIEnv *_env, jobject _this, jfloat zNear, jfloat zFar) { 1127560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich glDepthRangef( 1128560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLclampf)zNear, 1129560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLclampf)zFar 1130560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich ); 1131560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich} 1132560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 1133560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glDetachShader ( GLuint program, GLuint shader ) */ 1134560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void 1135560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glDetachShader__II 1136560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (JNIEnv *_env, jobject _this, jint program, jint shader) { 1137560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich glDetachShader( 1138560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLuint)program, 1139560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLuint)shader 1140560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich ); 1141560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich} 1142560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 1143560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glDisable ( GLenum cap ) */ 1144560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void 1145560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glDisable__I 1146560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (JNIEnv *_env, jobject _this, jint cap) { 1147560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich glDisable( 1148560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLenum)cap 1149560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich ); 1150560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich} 1151560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 1152560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glDisableVertexAttribArray ( GLuint index ) */ 1153560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void 1154560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glDisableVertexAttribArray__I 1155560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (JNIEnv *_env, jobject _this, jint index) { 1156560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich glDisableVertexAttribArray( 1157560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLuint)index 1158560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich ); 1159560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich} 1160560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 1161560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glDrawArrays ( GLenum mode, GLint first, GLsizei count ) */ 1162560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void 1163560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glDrawArrays__III 1164560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (JNIEnv *_env, jobject _this, jint mode, jint first, jint count) { 1165560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich glDrawArrays( 1166560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLenum)mode, 1167560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLint)first, 1168560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLsizei)count 1169560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich ); 1170560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich} 1171560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 1172224107a421e2611b15d1ec736df54bca9ee3e78dJack Palevich/* void glDrawElements ( GLenum mode, GLsizei count, GLenum type, GLint offset ) */ 1173224107a421e2611b15d1ec736df54bca9ee3e78dJack Palevichstatic void 1174224107a421e2611b15d1ec736df54bca9ee3e78dJack Palevichandroid_glDrawElements__IIII 1175224107a421e2611b15d1ec736df54bca9ee3e78dJack Palevich (JNIEnv *_env, jobject _this, jint mode, jint count, jint type, jint offset) { 11762545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer jint _exception = 0; 11772ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian const char * _exceptionType = NULL; 11782ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian const char * _exceptionMessage = NULL; 1179224107a421e2611b15d1ec736df54bca9ee3e78dJack Palevich glDrawElements( 1180224107a421e2611b15d1ec736df54bca9ee3e78dJack Palevich (GLenum)mode, 1181224107a421e2611b15d1ec736df54bca9ee3e78dJack Palevich (GLsizei)count, 1182224107a421e2611b15d1ec736df54bca9ee3e78dJack Palevich (GLenum)type, 118301c26ea89d4bbea3cf550e9328742302dd9a2b25Ashok Bhat reinterpret_cast<GLvoid *>(offset) 1184224107a421e2611b15d1ec736df54bca9ee3e78dJack Palevich ); 11852545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer if (_exception) { 11862545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer jniThrowException(_env, _exceptionType, _exceptionMessage); 11872545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer } 1188224107a421e2611b15d1ec736df54bca9ee3e78dJack Palevich} 1189224107a421e2611b15d1ec736df54bca9ee3e78dJack Palevich 1190560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glDrawElements ( GLenum mode, GLsizei count, GLenum type, const GLvoid *indices ) */ 1191560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void 1192560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glDrawElements__IIILjava_nio_Buffer_2 1193560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (JNIEnv *_env, jobject _this, jint mode, jint count, jint type, jobject indices_buf) { 11942545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer jint _exception = 0; 11952ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian const char * _exceptionType = NULL; 11962ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian const char * _exceptionMessage = NULL; 1197560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich jarray _array = (jarray) 0; 119817045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer jint _bufferOffset = (jint) 0; 1199560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich jint _remaining; 1200560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich GLvoid *indices = (GLvoid *) 0; 1201560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 120217045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer indices = (GLvoid *)getPointer(_env, indices_buf, &_array, &_remaining, &_bufferOffset); 1203560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich if (_remaining < count) { 12042545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exception = 1; 12052545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionType = "java/lang/ArrayIndexOutOfBoundsException"; 12062545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionMessage = "remaining() < count < needed"; 1207560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich goto exit; 1208560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich } 120917045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer if (indices == NULL) { 121017045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer char * _indicesBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); 121117045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer indices = (GLvoid *) (_indicesBase + _bufferOffset); 121217045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer } 1213560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich glDrawElements( 1214560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLenum)mode, 1215560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLsizei)count, 1216560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLenum)type, 1217560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLvoid *)indices 1218560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich ); 1219560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 1220560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichexit: 1221560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich if (_array) { 1222560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich releasePointer(_env, _array, indices, JNI_FALSE); 1223560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich } 12242545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer if (_exception) { 12252545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer jniThrowException(_env, _exceptionType, _exceptionMessage); 12262545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer } 1227560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich} 1228560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 1229560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glEnable ( GLenum cap ) */ 1230560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void 1231560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glEnable__I 1232560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (JNIEnv *_env, jobject _this, jint cap) { 1233560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich glEnable( 1234560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLenum)cap 1235560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich ); 1236560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich} 1237560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 1238560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glEnableVertexAttribArray ( GLuint index ) */ 1239560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void 1240560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glEnableVertexAttribArray__I 1241560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (JNIEnv *_env, jobject _this, jint index) { 1242560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich glEnableVertexAttribArray( 1243560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLuint)index 1244560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich ); 1245560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich} 1246560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 1247560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glFinish ( void ) */ 1248560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void 1249560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glFinish__ 1250560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (JNIEnv *_env, jobject _this) { 1251560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich glFinish(); 1252560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich} 1253560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 1254560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glFlush ( void ) */ 1255560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void 1256560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glFlush__ 1257560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (JNIEnv *_env, jobject _this) { 1258560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich glFlush(); 1259560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich} 1260560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 1261560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glFramebufferRenderbuffer ( GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer ) */ 1262560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void 1263560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glFramebufferRenderbuffer__IIII 1264560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (JNIEnv *_env, jobject _this, jint target, jint attachment, jint renderbuffertarget, jint renderbuffer) { 1265560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich glFramebufferRenderbuffer( 1266560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLenum)target, 1267560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLenum)attachment, 1268560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLenum)renderbuffertarget, 1269560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLuint)renderbuffer 1270560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich ); 1271560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich} 1272560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 1273560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glFramebufferTexture2D ( GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level ) */ 1274560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void 1275560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glFramebufferTexture2D__IIIII 1276560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (JNIEnv *_env, jobject _this, jint target, jint attachment, jint textarget, jint texture, jint level) { 1277560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich glFramebufferTexture2D( 1278560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLenum)target, 1279560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLenum)attachment, 1280560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLenum)textarget, 1281560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLuint)texture, 1282560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLint)level 1283560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich ); 1284560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich} 1285560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 1286560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glFrontFace ( GLenum mode ) */ 1287560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void 1288560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glFrontFace__I 1289560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (JNIEnv *_env, jobject _this, jint mode) { 1290560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich glFrontFace( 1291560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLenum)mode 1292560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich ); 1293560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich} 1294560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 1295560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glGenBuffers ( GLsizei n, GLuint *buffers ) */ 1296560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void 1297560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glGenBuffers__I_3II 1298560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (JNIEnv *_env, jobject _this, jint n, jintArray buffers_ref, jint offset) { 1299560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich jint _exception = 0; 13002ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian const char * _exceptionType = NULL; 13012ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian const char * _exceptionMessage = NULL; 1302560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich GLuint *buffers_base = (GLuint *) 0; 1303560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich jint _remaining; 1304560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich GLuint *buffers = (GLuint *) 0; 1305560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 1306560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich if (!buffers_ref) { 1307560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich _exception = 1; 13082545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionType = "java/lang/IllegalArgumentException"; 13092545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionMessage = "buffers == null"; 1310560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich goto exit; 1311560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich } 1312560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich if (offset < 0) { 1313560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich _exception = 1; 13142545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionType = "java/lang/IllegalArgumentException"; 13152545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionMessage = "offset < 0"; 1316560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich goto exit; 1317560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich } 1318560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich _remaining = _env->GetArrayLength(buffers_ref) - offset; 1319560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich if (_remaining < n) { 1320560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich _exception = 1; 13212545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionType = "java/lang/IllegalArgumentException"; 13222545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionMessage = "length - offset < n < needed"; 1323560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich goto exit; 1324560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich } 1325560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich buffers_base = (GLuint *) 1326560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich _env->GetPrimitiveArrayCritical(buffers_ref, (jboolean *)0); 1327560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich buffers = buffers_base + offset; 1328560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 1329560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich glGenBuffers( 1330560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLsizei)n, 1331560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLuint *)buffers 1332560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich ); 1333560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 1334560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichexit: 1335560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich if (buffers_base) { 1336560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich _env->ReleasePrimitiveArrayCritical(buffers_ref, buffers_base, 1337560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich _exception ? JNI_ABORT: 0); 1338560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich } 13392545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer if (_exception) { 13402545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer jniThrowException(_env, _exceptionType, _exceptionMessage); 13412545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer } 1342560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich} 1343560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 1344560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glGenBuffers ( GLsizei n, GLuint *buffers ) */ 1345560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void 1346560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glGenBuffers__ILjava_nio_IntBuffer_2 1347560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (JNIEnv *_env, jobject _this, jint n, jobject buffers_buf) { 1348560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich jint _exception = 0; 13492ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian const char * _exceptionType = NULL; 13502ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian const char * _exceptionMessage = NULL; 1351560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich jarray _array = (jarray) 0; 135217045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer jint _bufferOffset = (jint) 0; 1353560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich jint _remaining; 1354560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich GLuint *buffers = (GLuint *) 0; 1355560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 135617045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer buffers = (GLuint *)getPointer(_env, buffers_buf, &_array, &_remaining, &_bufferOffset); 1357560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich if (_remaining < n) { 1358560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich _exception = 1; 13592545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionType = "java/lang/IllegalArgumentException"; 13602545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionMessage = "remaining() < n < needed"; 1361560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich goto exit; 1362560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich } 136317045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer if (buffers == NULL) { 136417045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer char * _buffersBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); 136517045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer buffers = (GLuint *) (_buffersBase + _bufferOffset); 136617045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer } 1367560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich glGenBuffers( 1368560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLsizei)n, 1369560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLuint *)buffers 1370560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich ); 1371560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 1372560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichexit: 1373560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich if (_array) { 1374560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich releasePointer(_env, _array, buffers, _exception ? JNI_FALSE : JNI_TRUE); 1375560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich } 13762545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer if (_exception) { 13772545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer jniThrowException(_env, _exceptionType, _exceptionMessage); 13782545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer } 1379560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich} 1380560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 1381560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glGenerateMipmap ( GLenum target ) */ 1382560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void 1383560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glGenerateMipmap__I 1384560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (JNIEnv *_env, jobject _this, jint target) { 1385560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich glGenerateMipmap( 1386560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLenum)target 1387560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich ); 1388560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich} 1389560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 1390560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glGenFramebuffers ( GLsizei n, GLuint *framebuffers ) */ 1391560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void 1392560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glGenFramebuffers__I_3II 1393560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (JNIEnv *_env, jobject _this, jint n, jintArray framebuffers_ref, jint offset) { 1394560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich jint _exception = 0; 13952ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian const char * _exceptionType = NULL; 13962ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian const char * _exceptionMessage = NULL; 1397560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich GLuint *framebuffers_base = (GLuint *) 0; 1398560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich jint _remaining; 1399560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich GLuint *framebuffers = (GLuint *) 0; 1400560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 1401560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich if (!framebuffers_ref) { 1402560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich _exception = 1; 14032545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionType = "java/lang/IllegalArgumentException"; 14042545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionMessage = "framebuffers == null"; 1405560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich goto exit; 1406560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich } 1407560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich if (offset < 0) { 1408560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich _exception = 1; 14092545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionType = "java/lang/IllegalArgumentException"; 14102545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionMessage = "offset < 0"; 1411560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich goto exit; 1412560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich } 1413560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich _remaining = _env->GetArrayLength(framebuffers_ref) - offset; 14142ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian if (_remaining < n) { 14152ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian _exception = 1; 14162ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian _exceptionType = "java/lang/IllegalArgumentException"; 14172ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian _exceptionMessage = "length - offset < n < needed"; 14182ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian goto exit; 14192ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian } 1420560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich framebuffers_base = (GLuint *) 1421560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich _env->GetPrimitiveArrayCritical(framebuffers_ref, (jboolean *)0); 1422560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich framebuffers = framebuffers_base + offset; 1423560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 1424560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich glGenFramebuffers( 1425560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLsizei)n, 1426560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLuint *)framebuffers 1427560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich ); 1428560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 1429560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichexit: 1430560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich if (framebuffers_base) { 1431560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich _env->ReleasePrimitiveArrayCritical(framebuffers_ref, framebuffers_base, 1432560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich _exception ? JNI_ABORT: 0); 1433560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich } 14342545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer if (_exception) { 14352545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer jniThrowException(_env, _exceptionType, _exceptionMessage); 14362545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer } 1437560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich} 1438560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 1439560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glGenFramebuffers ( GLsizei n, GLuint *framebuffers ) */ 1440560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void 1441560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glGenFramebuffers__ILjava_nio_IntBuffer_2 1442560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (JNIEnv *_env, jobject _this, jint n, jobject framebuffers_buf) { 14432ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian jint _exception = 0; 14442ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian const char * _exceptionType = NULL; 14452ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian const char * _exceptionMessage = NULL; 1446560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich jarray _array = (jarray) 0; 144717045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer jint _bufferOffset = (jint) 0; 1448560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich jint _remaining; 1449560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich GLuint *framebuffers = (GLuint *) 0; 1450560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 145117045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer framebuffers = (GLuint *)getPointer(_env, framebuffers_buf, &_array, &_remaining, &_bufferOffset); 14522ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian if (_remaining < n) { 14532ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian _exception = 1; 14542ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian _exceptionType = "java/lang/IllegalArgumentException"; 14552ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian _exceptionMessage = "remaining() < n < needed"; 14562ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian goto exit; 14572ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian } 145817045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer if (framebuffers == NULL) { 145917045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer char * _framebuffersBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); 146017045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer framebuffers = (GLuint *) (_framebuffersBase + _bufferOffset); 146117045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer } 1462560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich glGenFramebuffers( 1463560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLsizei)n, 1464560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLuint *)framebuffers 1465560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich ); 14662ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian 14672ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopianexit: 1468560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich if (_array) { 14692ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian releasePointer(_env, _array, framebuffers, _exception ? JNI_FALSE : JNI_TRUE); 14702ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian } 14712ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian if (_exception) { 14722ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian jniThrowException(_env, _exceptionType, _exceptionMessage); 1473560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich } 1474560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich} 1475560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 1476560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glGenRenderbuffers ( GLsizei n, GLuint *renderbuffers ) */ 1477560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void 1478560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glGenRenderbuffers__I_3II 1479560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (JNIEnv *_env, jobject _this, jint n, jintArray renderbuffers_ref, jint offset) { 1480560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich jint _exception = 0; 14812ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian const char * _exceptionType = NULL; 14822ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian const char * _exceptionMessage = NULL; 1483560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich GLuint *renderbuffers_base = (GLuint *) 0; 1484560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich jint _remaining; 1485560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich GLuint *renderbuffers = (GLuint *) 0; 1486560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 1487560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich if (!renderbuffers_ref) { 1488560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich _exception = 1; 14892545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionType = "java/lang/IllegalArgumentException"; 14902545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionMessage = "renderbuffers == null"; 1491560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich goto exit; 1492560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich } 1493560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich if (offset < 0) { 1494560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich _exception = 1; 14952545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionType = "java/lang/IllegalArgumentException"; 14962545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionMessage = "offset < 0"; 1497560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich goto exit; 1498560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich } 1499560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich _remaining = _env->GetArrayLength(renderbuffers_ref) - offset; 15002ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian if (_remaining < n) { 15012ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian _exception = 1; 15022ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian _exceptionType = "java/lang/IllegalArgumentException"; 15032ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian _exceptionMessage = "length - offset < n < needed"; 15042ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian goto exit; 15052ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian } 1506560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich renderbuffers_base = (GLuint *) 1507560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich _env->GetPrimitiveArrayCritical(renderbuffers_ref, (jboolean *)0); 1508560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich renderbuffers = renderbuffers_base + offset; 1509560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 1510560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich glGenRenderbuffers( 1511560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLsizei)n, 1512560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLuint *)renderbuffers 1513560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich ); 1514560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 1515560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichexit: 1516560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich if (renderbuffers_base) { 1517560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich _env->ReleasePrimitiveArrayCritical(renderbuffers_ref, renderbuffers_base, 1518560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich _exception ? JNI_ABORT: 0); 1519560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich } 15202545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer if (_exception) { 15212545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer jniThrowException(_env, _exceptionType, _exceptionMessage); 15222545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer } 1523560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich} 1524560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 1525560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glGenRenderbuffers ( GLsizei n, GLuint *renderbuffers ) */ 1526560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void 1527560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glGenRenderbuffers__ILjava_nio_IntBuffer_2 1528560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (JNIEnv *_env, jobject _this, jint n, jobject renderbuffers_buf) { 15292ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian jint _exception = 0; 15302ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian const char * _exceptionType = NULL; 15312ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian const char * _exceptionMessage = NULL; 1532560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich jarray _array = (jarray) 0; 153317045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer jint _bufferOffset = (jint) 0; 1534560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich jint _remaining; 1535560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich GLuint *renderbuffers = (GLuint *) 0; 1536560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 153717045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer renderbuffers = (GLuint *)getPointer(_env, renderbuffers_buf, &_array, &_remaining, &_bufferOffset); 15382ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian if (_remaining < n) { 15392ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian _exception = 1; 15402ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian _exceptionType = "java/lang/IllegalArgumentException"; 15412ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian _exceptionMessage = "remaining() < n < needed"; 15422ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian goto exit; 15432ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian } 154417045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer if (renderbuffers == NULL) { 154517045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer char * _renderbuffersBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); 154617045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer renderbuffers = (GLuint *) (_renderbuffersBase + _bufferOffset); 154717045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer } 1548560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich glGenRenderbuffers( 1549560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLsizei)n, 1550560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLuint *)renderbuffers 1551560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich ); 15522ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian 15532ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopianexit: 1554560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich if (_array) { 15552ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian releasePointer(_env, _array, renderbuffers, _exception ? JNI_FALSE : JNI_TRUE); 15562ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian } 15572ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian if (_exception) { 15582ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian jniThrowException(_env, _exceptionType, _exceptionMessage); 1559560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich } 1560560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich} 1561560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 1562560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glGenTextures ( GLsizei n, GLuint *textures ) */ 1563560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void 1564560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glGenTextures__I_3II 1565560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (JNIEnv *_env, jobject _this, jint n, jintArray textures_ref, jint offset) { 1566560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich jint _exception = 0; 15672ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian const char * _exceptionType = NULL; 15682ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian const char * _exceptionMessage = NULL; 1569560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich GLuint *textures_base = (GLuint *) 0; 1570560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich jint _remaining; 1571560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich GLuint *textures = (GLuint *) 0; 1572560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 1573560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich if (!textures_ref) { 1574560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich _exception = 1; 15752545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionType = "java/lang/IllegalArgumentException"; 15762545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionMessage = "textures == null"; 1577560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich goto exit; 1578560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich } 1579560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich if (offset < 0) { 1580560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich _exception = 1; 15812545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionType = "java/lang/IllegalArgumentException"; 15822545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionMessage = "offset < 0"; 1583560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich goto exit; 1584560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich } 1585560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich _remaining = _env->GetArrayLength(textures_ref) - offset; 1586560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich if (_remaining < n) { 1587560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich _exception = 1; 15882545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionType = "java/lang/IllegalArgumentException"; 15892545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionMessage = "length - offset < n < needed"; 1590560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich goto exit; 1591560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich } 1592560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich textures_base = (GLuint *) 1593560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich _env->GetPrimitiveArrayCritical(textures_ref, (jboolean *)0); 1594560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich textures = textures_base + offset; 1595560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 1596560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich glGenTextures( 1597560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLsizei)n, 1598560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLuint *)textures 1599560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich ); 1600560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 1601560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichexit: 1602560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich if (textures_base) { 1603560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich _env->ReleasePrimitiveArrayCritical(textures_ref, textures_base, 1604560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich _exception ? JNI_ABORT: 0); 1605560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich } 16062545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer if (_exception) { 16072545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer jniThrowException(_env, _exceptionType, _exceptionMessage); 16082545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer } 1609560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich} 1610560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 1611560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glGenTextures ( GLsizei n, GLuint *textures ) */ 1612560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void 1613560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glGenTextures__ILjava_nio_IntBuffer_2 1614560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (JNIEnv *_env, jobject _this, jint n, jobject textures_buf) { 1615560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich jint _exception = 0; 16162ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian const char * _exceptionType = NULL; 16172ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian const char * _exceptionMessage = NULL; 1618560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich jarray _array = (jarray) 0; 161917045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer jint _bufferOffset = (jint) 0; 1620560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich jint _remaining; 1621560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich GLuint *textures = (GLuint *) 0; 1622560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 162317045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer textures = (GLuint *)getPointer(_env, textures_buf, &_array, &_remaining, &_bufferOffset); 1624560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich if (_remaining < n) { 1625560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich _exception = 1; 16262545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionType = "java/lang/IllegalArgumentException"; 16272545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionMessage = "remaining() < n < needed"; 1628560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich goto exit; 1629560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich } 163017045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer if (textures == NULL) { 163117045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer char * _texturesBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); 163217045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer textures = (GLuint *) (_texturesBase + _bufferOffset); 163317045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer } 1634560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich glGenTextures( 1635560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLsizei)n, 1636560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLuint *)textures 1637560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich ); 1638560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 1639560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichexit: 1640560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich if (_array) { 1641560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich releasePointer(_env, _array, textures, _exception ? JNI_FALSE : JNI_TRUE); 1642560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich } 16432545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer if (_exception) { 16442545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer jniThrowException(_env, _exceptionType, _exceptionMessage); 16452545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer } 1646560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich} 1647560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 1648560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glGetActiveAttrib ( GLuint program, GLuint index, GLsizei bufsize, GLsizei *length, GLint *size, GLenum *type, char *name ) */ 1649560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void 1650560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glGetActiveAttrib__III_3II_3II_3II_3BI 1651560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (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) { 1652560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich jint _exception = 0; 16532545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer const char * _exceptionType; 16542545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer const char * _exceptionMessage; 1655560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich GLsizei *length_base = (GLsizei *) 0; 1656560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich jint _lengthRemaining; 1657560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich GLsizei *length = (GLsizei *) 0; 1658560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich GLint *size_base = (GLint *) 0; 1659560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich jint _sizeRemaining; 1660560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich GLint *size = (GLint *) 0; 1661560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich GLenum *type_base = (GLenum *) 0; 1662560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich jint _typeRemaining; 1663560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich GLenum *type = (GLenum *) 0; 1664560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich char *name_base = (char *) 0; 1665560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich jint _nameRemaining; 1666560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich char *name = (char *) 0; 1667560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 1668560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich if (!length_ref) { 1669560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich _exception = 1; 16702545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionType = "java/lang/IllegalArgumentException"; 16712545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionMessage = "length == null"; 1672560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich goto exit; 1673560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich } 1674560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich if (lengthOffset < 0) { 1675560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich _exception = 1; 16762545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionType = "java/lang/IllegalArgumentException"; 16772545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionMessage = "lengthOffset < 0"; 1678560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich goto exit; 1679560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich } 1680560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich _lengthRemaining = _env->GetArrayLength(length_ref) - lengthOffset; 1681560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich length_base = (GLsizei *) 1682560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich _env->GetPrimitiveArrayCritical(length_ref, (jboolean *)0); 1683560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich length = length_base + lengthOffset; 1684560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 1685560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich if (!size_ref) { 1686560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich _exception = 1; 16872545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionType = "java/lang/IllegalArgumentException"; 16882545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionMessage = "size == null"; 1689560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich goto exit; 1690560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich } 1691560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich if (sizeOffset < 0) { 1692560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich _exception = 1; 16932545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionType = "java/lang/IllegalArgumentException"; 16942545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionMessage = "sizeOffset < 0"; 1695560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich goto exit; 1696560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich } 1697560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich _sizeRemaining = _env->GetArrayLength(size_ref) - sizeOffset; 1698560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich size_base = (GLint *) 1699560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich _env->GetPrimitiveArrayCritical(size_ref, (jboolean *)0); 1700560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich size = size_base + sizeOffset; 1701560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 1702560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich if (!type_ref) { 1703560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich _exception = 1; 17042545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionType = "java/lang/IllegalArgumentException"; 17052545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionMessage = "type == null"; 1706560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich goto exit; 1707560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich } 1708560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich if (typeOffset < 0) { 1709560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich _exception = 1; 17102545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionType = "java/lang/IllegalArgumentException"; 17112545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionMessage = "typeOffset < 0"; 1712560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich goto exit; 1713560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich } 1714560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich _typeRemaining = _env->GetArrayLength(type_ref) - typeOffset; 1715560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich type_base = (GLenum *) 1716560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich _env->GetPrimitiveArrayCritical(type_ref, (jboolean *)0); 1717560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich type = type_base + typeOffset; 1718560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 1719560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich if (!name_ref) { 1720560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich _exception = 1; 17212545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionType = "java/lang/IllegalArgumentException"; 17222545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionMessage = "name == null"; 1723560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich goto exit; 1724560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich } 1725560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich if (nameOffset < 0) { 1726560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich _exception = 1; 17272545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionType = "java/lang/IllegalArgumentException"; 17282545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionMessage = "nameOffset < 0"; 1729560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich goto exit; 1730560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich } 1731560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich _nameRemaining = _env->GetArrayLength(name_ref) - nameOffset; 1732560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich name_base = (char *) 1733560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich _env->GetPrimitiveArrayCritical(name_ref, (jboolean *)0); 1734560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich name = name_base + nameOffset; 1735560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 1736560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich glGetActiveAttrib( 1737560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLuint)program, 1738560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLuint)index, 1739560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLsizei)bufsize, 1740560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLsizei *)length, 1741560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLint *)size, 1742560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLenum *)type, 1743560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (char *)name 1744560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich ); 1745560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 1746560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichexit: 1747560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich if (name_base) { 1748560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich _env->ReleasePrimitiveArrayCritical(name_ref, name_base, 1749560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich _exception ? JNI_ABORT: 0); 1750560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich } 1751560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich if (type_base) { 1752560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich _env->ReleasePrimitiveArrayCritical(type_ref, type_base, 1753560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich _exception ? JNI_ABORT: 0); 1754560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich } 1755560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich if (size_base) { 1756560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich _env->ReleasePrimitiveArrayCritical(size_ref, size_base, 1757560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich _exception ? JNI_ABORT: 0); 1758560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich } 1759560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich if (length_base) { 1760560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich _env->ReleasePrimitiveArrayCritical(length_ref, length_base, 1761560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich _exception ? JNI_ABORT: 0); 1762560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich } 17632545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer if (_exception) { 17642545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer jniThrowException(_env, _exceptionType, _exceptionMessage); 17652545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer } 1766560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich} 1767560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 1768560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glGetActiveAttrib ( GLuint program, GLuint index, GLsizei bufsize, GLsizei *length, GLint *size, GLenum *type, char *name ) */ 1769560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void 1770560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glGetActiveAttrib__IIILjava_nio_IntBuffer_2Ljava_nio_IntBuffer_2Ljava_nio_IntBuffer_2B 1771560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (JNIEnv *_env, jobject _this, jint program, jint index, jint bufsize, jobject length_buf, jobject size_buf, jobject type_buf, jbyte name) { 1772560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich jarray _lengthArray = (jarray) 0; 177317045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer jint _lengthBufferOffset = (jint) 0; 1774560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich jarray _sizeArray = (jarray) 0; 177517045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer jint _sizeBufferOffset = (jint) 0; 1776560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich jarray _typeArray = (jarray) 0; 177717045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer jint _typeBufferOffset = (jint) 0; 1778560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich jint _lengthRemaining; 1779560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich GLsizei *length = (GLsizei *) 0; 1780560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich jint _sizeRemaining; 1781560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich GLint *size = (GLint *) 0; 1782560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich jint _typeRemaining; 1783560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich GLenum *type = (GLenum *) 0; 1784560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 178517045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer length = (GLsizei *)getPointer(_env, length_buf, &_lengthArray, &_lengthRemaining, &_lengthBufferOffset); 178617045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer size = (GLint *)getPointer(_env, size_buf, &_sizeArray, &_sizeRemaining, &_sizeBufferOffset); 178717045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer type = (GLenum *)getPointer(_env, type_buf, &_typeArray, &_typeRemaining, &_typeBufferOffset); 178817045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer if (length == NULL) { 178917045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer char * _lengthBase = (char *)_env->GetPrimitiveArrayCritical(_lengthArray, (jboolean *) 0); 179017045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer length = (GLsizei *) (_lengthBase + _lengthBufferOffset); 179117045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer } 179217045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer if (size == NULL) { 179317045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer char * _sizeBase = (char *)_env->GetPrimitiveArrayCritical(_sizeArray, (jboolean *) 0); 179417045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer size = (GLint *) (_sizeBase + _sizeBufferOffset); 179517045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer } 179617045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer if (type == NULL) { 179717045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer char * _typeBase = (char *)_env->GetPrimitiveArrayCritical(_typeArray, (jboolean *) 0); 179817045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer type = (GLenum *) (_typeBase + _typeBufferOffset); 179917045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer } 1800560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich glGetActiveAttrib( 1801560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLuint)program, 1802560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLuint)index, 1803560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLsizei)bufsize, 1804560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLsizei *)length, 1805560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLint *)size, 1806560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLenum *)type, 180701c26ea89d4bbea3cf550e9328742302dd9a2b25Ashok Bhat reinterpret_cast<char *>(name) 1808560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich ); 180917045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer if (_typeArray) { 181017045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer releasePointer(_env, _typeArray, type, JNI_TRUE); 1811560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich } 1812560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich if (_sizeArray) { 18132545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer releasePointer(_env, _sizeArray, size, JNI_TRUE); 1814560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich } 181517045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer if (_lengthArray) { 181617045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer releasePointer(_env, _lengthArray, length, JNI_TRUE); 1817560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich } 1818560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich} 1819560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 1820dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer/* void glGetActiveAttrib ( GLuint program, GLuint index, GLsizei bufsize, GLsizei *length, GLint *size, GLenum *type, char *name ) */ 1821dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshoferstatic jstring 1822dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshoferandroid_glGetActiveAttrib1 1823dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer (JNIEnv *_env, jobject _this, jint program, jint index, jintArray size_ref, jint sizeOffset, jintArray type_ref, jint typeOffset) { 1824dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer jint _exception = 0; 1825dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer const char * _exceptionType; 1826dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer const char * _exceptionMessage; 1827dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer GLint *size_base = (GLint *) 0; 1828dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer jint _sizeRemaining; 1829dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer GLint *size = (GLint *) 0; 1830dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer GLenum *type_base = (GLenum *) 0; 1831dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer jint _typeRemaining; 1832dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer GLenum *type = (GLenum *) 0; 1833dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer 1834dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer jstring result = 0; 1835dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer 1836dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer GLint len = 0; 1837dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer glGetProgramiv((GLuint)program, GL_ACTIVE_ATTRIBUTE_MAX_LENGTH, &len); 1838dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer if (!len) { 1839dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer return _env->NewStringUTF(""); 1840dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer } 1841dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer char* buf = (char*) malloc(len); 1842dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer 1843dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer if (buf == NULL) { 1844dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer jniThrowException(_env, "java/lang/IllegalArgumentException", "out of memory"); 1845dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer return NULL; 1846dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer } 1847dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer if (!size_ref) { 1848dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer _exception = 1; 1849dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer _exceptionType = "java/lang/IllegalArgumentException"; 1850dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer _exceptionMessage = "size == null"; 1851dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer goto exit; 1852dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer } 1853dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer if (sizeOffset < 0) { 1854dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer _exception = 1; 1855dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer _exceptionType = "java/lang/IllegalArgumentException"; 1856dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer _exceptionMessage = "sizeOffset < 0"; 1857dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer goto exit; 1858dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer } 1859dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer _sizeRemaining = _env->GetArrayLength(size_ref) - sizeOffset; 1860dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer size_base = (GLint *) 1861dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer _env->GetPrimitiveArrayCritical(size_ref, (jboolean *)0); 1862dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer size = size_base + sizeOffset; 1863dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer 1864dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer if (!type_ref) { 1865dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer _exception = 1; 1866dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer _exceptionType = "java/lang/IllegalArgumentException"; 1867dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer _exceptionMessage = "type == null"; 1868dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer goto exit; 1869dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer } 1870dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer if (typeOffset < 0) { 1871dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer _exception = 1; 1872dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer _exceptionType = "java/lang/IllegalArgumentException"; 1873dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer _exceptionMessage = "typeOffset < 0"; 1874dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer goto exit; 1875dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer } 1876dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer _typeRemaining = _env->GetArrayLength(type_ref) - typeOffset; 1877dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer type_base = (GLenum *) 1878dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer _env->GetPrimitiveArrayCritical(type_ref, (jboolean *)0); 1879dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer type = type_base + typeOffset; 1880dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer 1881dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer glGetActiveAttrib( 1882dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer (GLuint)program, 1883dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer (GLuint)index, 1884dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer (GLsizei)len, 1885dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer NULL, 1886dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer (GLint *)size, 1887dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer (GLenum *)type, 1888dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer (char *)buf 1889dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer ); 1890dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshoferexit: 1891dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer if (type_base) { 1892dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer _env->ReleasePrimitiveArrayCritical(type_ref, type_base, 1893dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer _exception ? JNI_ABORT: 0); 1894dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer } 1895dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer if (size_base) { 1896dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer _env->ReleasePrimitiveArrayCritical(size_ref, size_base, 1897dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer _exception ? JNI_ABORT: 0); 1898dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer } 1899dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer if (_exception != 1) { 1900dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer result = _env->NewStringUTF(buf); 1901dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer } 1902dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer if (buf) { 1903dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer free(buf); 1904dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer } 1905dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer if (_exception) { 1906dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer jniThrowException(_env, _exceptionType, _exceptionMessage); 1907dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer } 1908dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer if (result == 0) { 1909dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer result = _env->NewStringUTF(""); 1910dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer } 1911dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer 1912dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer return result; 1913dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer} 1914dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer 1915dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer/* void glGetActiveAttrib ( GLuint program, GLuint index, GLsizei bufsize, GLsizei *length, GLint *size, GLenum *type, char *name ) */ 1916dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshoferstatic jstring 1917dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshoferandroid_glGetActiveAttrib2 1918dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer (JNIEnv *_env, jobject _this, jint program, jint index, jobject size_buf, jobject type_buf) { 1919dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer jarray _sizeArray = (jarray) 0; 1920dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer jint _sizeBufferOffset = (jint) 0; 1921dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer jarray _typeArray = (jarray) 0; 1922dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer jint _typeBufferOffset = (jint) 0; 1923dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer jint _lengthRemaining; 1924dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer GLsizei *length = (GLsizei *) 0; 1925dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer jint _sizeRemaining; 1926dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer GLint *size = (GLint *) 0; 1927dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer jint _typeRemaining; 1928dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer GLenum *type = (GLenum *) 0; 1929dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer 1930dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer jstring result = 0; 1931dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer 1932dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer GLint len = 0; 1933dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer glGetProgramiv((GLuint)program, GL_ACTIVE_ATTRIBUTE_MAX_LENGTH, &len); 1934dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer if (!len) { 1935dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer return _env->NewStringUTF(""); 1936dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer } 1937dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer char* buf = (char*) malloc(len); 1938dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer 1939dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer if (buf == NULL) { 1940dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer jniThrowException(_env, "java/lang/IllegalArgumentException", "out of memory"); 1941dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer return NULL; 1942dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer } 1943dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer 1944dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer size = (GLint *)getPointer(_env, size_buf, &_sizeArray, &_sizeRemaining, &_sizeBufferOffset); 1945dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer type = (GLenum *)getPointer(_env, type_buf, &_typeArray, &_typeRemaining, &_typeBufferOffset); 1946dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer if (size == NULL) { 1947dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer char * _sizeBase = (char *)_env->GetPrimitiveArrayCritical(_sizeArray, (jboolean *) 0); 1948dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer size = (GLint *) (_sizeBase + _sizeBufferOffset); 1949dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer } 1950dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer if (type == NULL) { 1951dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer char * _typeBase = (char *)_env->GetPrimitiveArrayCritical(_typeArray, (jboolean *) 0); 1952dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer type = (GLenum *) (_typeBase + _typeBufferOffset); 1953dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer } 1954dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer glGetActiveAttrib( 1955dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer (GLuint)program, 1956dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer (GLuint)index, 1957dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer (GLsizei)len, 1958dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer NULL, 1959dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer (GLint *)size, 1960dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer (GLenum *)type, 1961dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer (char *)buf 1962dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer ); 1963dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer 1964dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer if (_typeArray) { 1965dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer releasePointer(_env, _typeArray, type, JNI_TRUE); 1966dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer } 1967dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer if (_sizeArray) { 1968dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer releasePointer(_env, _sizeArray, size, JNI_TRUE); 1969dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer } 1970dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer result = _env->NewStringUTF(buf); 1971dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer if (buf) { 1972dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer free(buf); 1973dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer } 1974dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer return result; 1975dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer} 1976560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glGetActiveUniform ( GLuint program, GLuint index, GLsizei bufsize, GLsizei *length, GLint *size, GLenum *type, char *name ) */ 1977560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void 1978560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glGetActiveUniform__III_3II_3II_3II_3BI 1979560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (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) { 1980560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich jint _exception = 0; 19812545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer const char * _exceptionType; 19822545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer const char * _exceptionMessage; 1983560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich GLsizei *length_base = (GLsizei *) 0; 1984560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich jint _lengthRemaining; 1985560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich GLsizei *length = (GLsizei *) 0; 1986560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich GLint *size_base = (GLint *) 0; 1987560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich jint _sizeRemaining; 1988560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich GLint *size = (GLint *) 0; 1989560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich GLenum *type_base = (GLenum *) 0; 1990560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich jint _typeRemaining; 1991560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich GLenum *type = (GLenum *) 0; 1992560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich char *name_base = (char *) 0; 1993560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich jint _nameRemaining; 1994560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich char *name = (char *) 0; 1995560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 1996560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich if (!length_ref) { 1997560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich _exception = 1; 19982545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionType = "java/lang/IllegalArgumentException"; 19992545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionMessage = "length == null"; 2000560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich goto exit; 2001560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich } 2002560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich if (lengthOffset < 0) { 2003560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich _exception = 1; 20042545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionType = "java/lang/IllegalArgumentException"; 20052545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionMessage = "lengthOffset < 0"; 2006560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich goto exit; 2007560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich } 2008560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich _lengthRemaining = _env->GetArrayLength(length_ref) - lengthOffset; 2009560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich length_base = (GLsizei *) 2010560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich _env->GetPrimitiveArrayCritical(length_ref, (jboolean *)0); 2011560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich length = length_base + lengthOffset; 2012560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 2013560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich if (!size_ref) { 2014560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich _exception = 1; 20152545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionType = "java/lang/IllegalArgumentException"; 20162545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionMessage = "size == null"; 2017560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich goto exit; 2018560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich } 2019560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich if (sizeOffset < 0) { 2020560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich _exception = 1; 20212545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionType = "java/lang/IllegalArgumentException"; 20222545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionMessage = "sizeOffset < 0"; 2023560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich goto exit; 2024560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich } 2025560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich _sizeRemaining = _env->GetArrayLength(size_ref) - sizeOffset; 2026560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich size_base = (GLint *) 2027560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich _env->GetPrimitiveArrayCritical(size_ref, (jboolean *)0); 2028560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich size = size_base + sizeOffset; 2029560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 2030560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich if (!type_ref) { 2031560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich _exception = 1; 20322545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionType = "java/lang/IllegalArgumentException"; 20332545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionMessage = "type == null"; 2034560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich goto exit; 2035560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich } 2036560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich if (typeOffset < 0) { 2037560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich _exception = 1; 20382545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionType = "java/lang/IllegalArgumentException"; 20392545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionMessage = "typeOffset < 0"; 2040560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich goto exit; 2041560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich } 2042560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich _typeRemaining = _env->GetArrayLength(type_ref) - typeOffset; 2043560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich type_base = (GLenum *) 2044560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich _env->GetPrimitiveArrayCritical(type_ref, (jboolean *)0); 2045560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich type = type_base + typeOffset; 2046560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 2047560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich if (!name_ref) { 2048560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich _exception = 1; 20492545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionType = "java/lang/IllegalArgumentException"; 20502545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionMessage = "name == null"; 2051560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich goto exit; 2052560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich } 2053560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich if (nameOffset < 0) { 2054560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich _exception = 1; 20552545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionType = "java/lang/IllegalArgumentException"; 20562545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionMessage = "nameOffset < 0"; 2057560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich goto exit; 2058560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich } 2059560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich _nameRemaining = _env->GetArrayLength(name_ref) - nameOffset; 2060560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich name_base = (char *) 2061560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich _env->GetPrimitiveArrayCritical(name_ref, (jboolean *)0); 2062560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich name = name_base + nameOffset; 2063560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 2064560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich glGetActiveUniform( 2065560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLuint)program, 2066560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLuint)index, 2067560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLsizei)bufsize, 2068560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLsizei *)length, 2069560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLint *)size, 2070560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLenum *)type, 2071560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (char *)name 2072560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich ); 2073560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 2074560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichexit: 2075560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich if (name_base) { 2076560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich _env->ReleasePrimitiveArrayCritical(name_ref, name_base, 2077560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich _exception ? JNI_ABORT: 0); 2078560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich } 2079560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich if (type_base) { 2080560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich _env->ReleasePrimitiveArrayCritical(type_ref, type_base, 2081560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich _exception ? JNI_ABORT: 0); 2082560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich } 2083560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich if (size_base) { 2084560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich _env->ReleasePrimitiveArrayCritical(size_ref, size_base, 2085560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich _exception ? JNI_ABORT: 0); 2086560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich } 2087560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich if (length_base) { 2088560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich _env->ReleasePrimitiveArrayCritical(length_ref, length_base, 2089560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich _exception ? JNI_ABORT: 0); 2090560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich } 20912545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer if (_exception) { 20922545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer jniThrowException(_env, _exceptionType, _exceptionMessage); 20932545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer } 2094560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich} 2095560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 2096560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glGetActiveUniform ( GLuint program, GLuint index, GLsizei bufsize, GLsizei *length, GLint *size, GLenum *type, char *name ) */ 2097560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void 2098560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glGetActiveUniform__IIILjava_nio_IntBuffer_2Ljava_nio_IntBuffer_2Ljava_nio_IntBuffer_2B 2099560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (JNIEnv *_env, jobject _this, jint program, jint index, jint bufsize, jobject length_buf, jobject size_buf, jobject type_buf, jbyte name) { 2100560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich jarray _lengthArray = (jarray) 0; 210117045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer jint _lengthBufferOffset = (jint) 0; 2102560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich jarray _sizeArray = (jarray) 0; 210317045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer jint _sizeBufferOffset = (jint) 0; 2104560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich jarray _typeArray = (jarray) 0; 210517045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer jint _typeBufferOffset = (jint) 0; 2106560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich jint _lengthRemaining; 2107560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich GLsizei *length = (GLsizei *) 0; 2108560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich jint _sizeRemaining; 2109560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich GLint *size = (GLint *) 0; 2110560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich jint _typeRemaining; 2111560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich GLenum *type = (GLenum *) 0; 2112560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 211317045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer length = (GLsizei *)getPointer(_env, length_buf, &_lengthArray, &_lengthRemaining, &_lengthBufferOffset); 211417045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer size = (GLint *)getPointer(_env, size_buf, &_sizeArray, &_sizeRemaining, &_sizeBufferOffset); 211517045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer type = (GLenum *)getPointer(_env, type_buf, &_typeArray, &_typeRemaining, &_typeBufferOffset); 211617045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer if (length == NULL) { 211717045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer char * _lengthBase = (char *)_env->GetPrimitiveArrayCritical(_lengthArray, (jboolean *) 0); 211817045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer length = (GLsizei *) (_lengthBase + _lengthBufferOffset); 211917045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer } 212017045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer if (size == NULL) { 212117045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer char * _sizeBase = (char *)_env->GetPrimitiveArrayCritical(_sizeArray, (jboolean *) 0); 212217045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer size = (GLint *) (_sizeBase + _sizeBufferOffset); 212317045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer } 212417045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer if (type == NULL) { 212517045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer char * _typeBase = (char *)_env->GetPrimitiveArrayCritical(_typeArray, (jboolean *) 0); 212617045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer type = (GLenum *) (_typeBase + _typeBufferOffset); 212717045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer } 2128560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich glGetActiveUniform( 2129560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLuint)program, 2130560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLuint)index, 2131560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLsizei)bufsize, 2132560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLsizei *)length, 2133560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLint *)size, 2134560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLenum *)type, 213501c26ea89d4bbea3cf550e9328742302dd9a2b25Ashok Bhat reinterpret_cast<char *>(name) 2136560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich ); 213717045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer if (_typeArray) { 213817045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer releasePointer(_env, _typeArray, type, JNI_TRUE); 2139560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich } 2140560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich if (_sizeArray) { 21412545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer releasePointer(_env, _sizeArray, size, JNI_TRUE); 2142560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich } 214317045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer if (_lengthArray) { 214417045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer releasePointer(_env, _lengthArray, length, JNI_TRUE); 2145560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich } 2146560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich} 2147560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 2148dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer/* void glGetActiveUniform ( GLuint program, GLuint index, GLsizei bufsize, GLsizei *length, GLint *size, GLenum *type, char *name ) */ 2149dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshoferstatic jstring 2150dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshoferandroid_glGetActiveUniform1 2151dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer (JNIEnv *_env, jobject _this, jint program, jint index, jintArray size_ref, jint sizeOffset, jintArray type_ref, jint typeOffset) { 2152dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer jint _exception = 0; 2153dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer const char * _exceptionType; 2154dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer const char * _exceptionMessage; 2155dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer 2156dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer GLint *size_base = (GLint *) 0; 2157dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer jint _sizeRemaining; 2158dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer GLint *size = (GLint *) 0; 2159dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer 2160dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer GLenum *type_base = (GLenum *) 0; 2161dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer jint _typeRemaining; 2162dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer GLenum *type = (GLenum *) 0; 2163dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer 2164dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer jstring result = 0; 2165dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer 2166dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer GLint len = 0; 2167dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer glGetProgramiv((GLuint)program, GL_ACTIVE_UNIFORM_MAX_LENGTH, &len); 2168dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer if (!len) { 2169dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer return _env->NewStringUTF(""); 2170dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer } 2171dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer char* buf = (char*) malloc(len); 2172dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer 2173dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer if (buf == NULL) { 2174dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer jniThrowException(_env, "java/lang/IllegalArgumentException", "out of memory"); 2175dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer return NULL; 2176dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer } 2177dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer 2178dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer if (!size_ref) { 2179dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer _exception = 1; 2180dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer _exceptionType = "java/lang/IllegalArgumentException"; 2181dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer _exceptionMessage = "size == null"; 2182dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer goto exit; 2183dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer } 2184dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer if (sizeOffset < 0) { 2185dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer _exception = 1; 2186dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer _exceptionType = "java/lang/IllegalArgumentException"; 2187dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer _exceptionMessage = "sizeOffset < 0"; 2188dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer goto exit; 2189dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer } 2190dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer _sizeRemaining = _env->GetArrayLength(size_ref) - sizeOffset; 2191dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer size_base = (GLint *) 2192dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer _env->GetPrimitiveArrayCritical(size_ref, (jboolean *)0); 2193dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer size = size_base + sizeOffset; 2194dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer 2195dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer if (!type_ref) { 2196dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer _exception = 1; 2197dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer _exceptionType = "java/lang/IllegalArgumentException"; 2198dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer _exceptionMessage = "type == null"; 2199dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer goto exit; 2200dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer } 2201dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer if (typeOffset < 0) { 2202dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer _exception = 1; 2203dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer _exceptionType = "java/lang/IllegalArgumentException"; 2204dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer _exceptionMessage = "typeOffset < 0"; 2205dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer goto exit; 2206dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer } 2207dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer _typeRemaining = _env->GetArrayLength(type_ref) - typeOffset; 2208dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer type_base = (GLenum *) 2209dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer _env->GetPrimitiveArrayCritical(type_ref, (jboolean *)0); 2210dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer type = type_base + typeOffset; 2211dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer 2212dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer glGetActiveUniform( 2213dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer (GLuint)program, 2214dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer (GLuint)index, 2215dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer (GLsizei)len, 2216dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer NULL, 2217dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer (GLint *)size, 2218dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer (GLenum *)type, 2219dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer (char *)buf 2220dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer ); 2221dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer 2222dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshoferexit: 2223dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer if (type_base) { 2224dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer _env->ReleasePrimitiveArrayCritical(type_ref, type_base, 2225dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer _exception ? JNI_ABORT: 0); 2226dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer } 2227dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer if (size_base) { 2228dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer _env->ReleasePrimitiveArrayCritical(size_ref, size_base, 2229dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer _exception ? JNI_ABORT: 0); 2230dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer } 2231dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer if (_exception != 1) { 2232dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer result = _env->NewStringUTF(buf); 2233dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer } 2234dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer if (buf) { 2235dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer free(buf); 2236dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer } 2237dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer if (_exception) { 2238dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer jniThrowException(_env, _exceptionType, _exceptionMessage); 2239dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer } 2240dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer if (result == 0) { 2241dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer result = _env->NewStringUTF(""); 2242dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer } 2243dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer return result; 2244dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer} 2245dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer 2246dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer/* void glGetActiveUniform ( GLuint program, GLuint index, GLsizei bufsize, GLsizei *length, GLint *size, GLenum *type, char *name ) */ 2247dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshoferstatic jstring 2248dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshoferandroid_glGetActiveUniform2 2249dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer (JNIEnv *_env, jobject _this, jint program, jint index, jobject size_buf, jobject type_buf) { 2250dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer jarray _sizeArray = (jarray) 0; 2251dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer jint _sizeBufferOffset = (jint) 0; 2252dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer jarray _typeArray = (jarray) 0; 2253dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer jint _typeBufferOffset = (jint) 0; 2254dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer jint _sizeRemaining; 2255dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer GLint *size = (GLint *) 0; 2256dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer jint _typeRemaining; 2257dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer GLenum *type = (GLenum *) 0; 2258dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer 2259dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer jstring result = 0; 2260dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer GLint len = 0; 2261dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer glGetProgramiv((GLuint)program, GL_ACTIVE_UNIFORM_MAX_LENGTH, &len); 2262dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer if (!len) { 2263dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer return _env->NewStringUTF(""); 2264dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer } 2265dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer char* buf = (char*) malloc(len); 2266dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer 2267dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer if (buf == NULL) { 2268dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer jniThrowException(_env, "java/lang/IllegalArgumentException", "out of memory"); 2269dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer return NULL; 2270dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer } 2271dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer 2272dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer size = (GLint *)getPointer(_env, size_buf, &_sizeArray, &_sizeRemaining, &_sizeBufferOffset); 2273dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer type = (GLenum *)getPointer(_env, type_buf, &_typeArray, &_typeRemaining, &_typeBufferOffset); 2274dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer 2275dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer if (size == NULL) { 2276dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer char * _sizeBase = (char *)_env->GetPrimitiveArrayCritical(_sizeArray, (jboolean *) 0); 2277dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer size = (GLint *) (_sizeBase + _sizeBufferOffset); 2278dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer } 2279dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer if (type == NULL) { 2280dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer char * _typeBase = (char *)_env->GetPrimitiveArrayCritical(_typeArray, (jboolean *) 0); 2281dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer type = (GLenum *) (_typeBase + _typeBufferOffset); 2282dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer } 2283dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer glGetActiveUniform( 2284dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer (GLuint)program, 2285dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer (GLuint)index, 2286dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer len, 2287dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer NULL, 2288dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer (GLint *)size, 2289dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer (GLenum *)type, 2290dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer (char *)buf 2291dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer ); 2292dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer 2293dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer if (_typeArray) { 2294dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer releasePointer(_env, _typeArray, type, JNI_TRUE); 2295dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer } 2296dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer if (_sizeArray) { 2297dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer releasePointer(_env, _sizeArray, size, JNI_TRUE); 2298dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer } 2299dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer result = _env->NewStringUTF(buf); 2300dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer if (buf) { 2301dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer free(buf); 2302dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer } 2303dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer return result; 2304dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer} 2305560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glGetAttachedShaders ( GLuint program, GLsizei maxcount, GLsizei *count, GLuint *shaders ) */ 2306560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void 2307560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glGetAttachedShaders__II_3II_3II 2308560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (JNIEnv *_env, jobject _this, jint program, jint maxcount, jintArray count_ref, jint countOffset, jintArray shaders_ref, jint shadersOffset) { 2309560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich jint _exception = 0; 23102ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian const char * _exceptionType = NULL; 23112ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian const char * _exceptionMessage = NULL; 2312560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich GLsizei *count_base = (GLsizei *) 0; 2313560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich jint _countRemaining; 2314560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich GLsizei *count = (GLsizei *) 0; 2315560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich GLuint *shaders_base = (GLuint *) 0; 2316560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich jint _shadersRemaining; 2317560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich GLuint *shaders = (GLuint *) 0; 2318560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 2319560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich if (!count_ref) { 2320560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich _exception = 1; 23212545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionType = "java/lang/IllegalArgumentException"; 23222545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionMessage = "count == null"; 2323560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich goto exit; 2324560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich } 2325560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich if (countOffset < 0) { 2326560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich _exception = 1; 23272545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionType = "java/lang/IllegalArgumentException"; 23282545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionMessage = "countOffset < 0"; 2329560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich goto exit; 2330560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich } 2331560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich _countRemaining = _env->GetArrayLength(count_ref) - countOffset; 23322ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian if (_countRemaining < 1) { 23332ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian _exception = 1; 23342ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian _exceptionType = "java/lang/IllegalArgumentException"; 23352ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian _exceptionMessage = "length - countOffset < 1 < needed"; 23362ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian goto exit; 23372ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian } 2338560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich count_base = (GLsizei *) 2339560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich _env->GetPrimitiveArrayCritical(count_ref, (jboolean *)0); 2340560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich count = count_base + countOffset; 2341560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 2342560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich if (!shaders_ref) { 2343560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich _exception = 1; 23442545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionType = "java/lang/IllegalArgumentException"; 23452545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionMessage = "shaders == null"; 2346560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich goto exit; 2347560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich } 2348560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich if (shadersOffset < 0) { 2349560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich _exception = 1; 23502545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionType = "java/lang/IllegalArgumentException"; 23512545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionMessage = "shadersOffset < 0"; 2352560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich goto exit; 2353560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich } 2354560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich _shadersRemaining = _env->GetArrayLength(shaders_ref) - shadersOffset; 23552ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian if (_shadersRemaining < maxcount) { 23562ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian _exception = 1; 23572ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian _exceptionType = "java/lang/IllegalArgumentException"; 23582ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian _exceptionMessage = "length - shadersOffset < maxcount < needed"; 23592ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian goto exit; 23602ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian } 2361560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich shaders_base = (GLuint *) 2362560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich _env->GetPrimitiveArrayCritical(shaders_ref, (jboolean *)0); 2363560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich shaders = shaders_base + shadersOffset; 2364560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 2365560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich glGetAttachedShaders( 2366560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLuint)program, 2367560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLsizei)maxcount, 2368560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLsizei *)count, 2369560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLuint *)shaders 2370560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich ); 2371560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 2372560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichexit: 2373560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich if (shaders_base) { 2374560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich _env->ReleasePrimitiveArrayCritical(shaders_ref, shaders_base, 2375560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich _exception ? JNI_ABORT: 0); 2376560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich } 2377560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich if (count_base) { 2378560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich _env->ReleasePrimitiveArrayCritical(count_ref, count_base, 2379560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich _exception ? JNI_ABORT: 0); 2380560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich } 23812545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer if (_exception) { 23822545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer jniThrowException(_env, _exceptionType, _exceptionMessage); 23832545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer } 2384560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich} 2385560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 2386560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glGetAttachedShaders ( GLuint program, GLsizei maxcount, GLsizei *count, GLuint *shaders ) */ 2387560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void 2388560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glGetAttachedShaders__IILjava_nio_IntBuffer_2Ljava_nio_IntBuffer_2 2389560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (JNIEnv *_env, jobject _this, jint program, jint maxcount, jobject count_buf, jobject shaders_buf) { 23902ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian jint _exception = 0; 23912ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian const char * _exceptionType = NULL; 23922ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian const char * _exceptionMessage = NULL; 2393560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich jarray _countArray = (jarray) 0; 239417045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer jint _countBufferOffset = (jint) 0; 2395560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich jarray _shadersArray = (jarray) 0; 239617045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer jint _shadersBufferOffset = (jint) 0; 2397560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich jint _countRemaining; 2398560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich GLsizei *count = (GLsizei *) 0; 2399560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich jint _shadersRemaining; 2400560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich GLuint *shaders = (GLuint *) 0; 2401560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 24022ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian if (count_buf) { 24032ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian count = (GLsizei *)getPointer(_env, count_buf, &_countArray, &_countRemaining, &_countBufferOffset); 24042ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian if (_countRemaining < 1) { 24052ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian _exception = 1; 24062ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian _exceptionType = "java/lang/IllegalArgumentException"; 24072ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian _exceptionMessage = "remaining() < 1 < needed"; 24082ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian goto exit; 24092ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian } 24102ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian } 24112ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian if (shaders_buf) { 24122ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian shaders = (GLuint *)getPointer(_env, shaders_buf, &_shadersArray, &_shadersRemaining, &_shadersBufferOffset); 24132ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian if (_shadersRemaining < maxcount) { 24142ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian _exception = 1; 24152ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian _exceptionType = "java/lang/IllegalArgumentException"; 24162ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian _exceptionMessage = "remaining() < maxcount < needed"; 24172ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian goto exit; 24182ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian } 24192ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian } 24202ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian if (count_buf && count == NULL) { 24212ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian char * _countBase = (char *)_env->GetPrimitiveArrayCritical(_countArray, (jboolean *) 0); 24222ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian count = (GLsizei *) (_countBase + _countBufferOffset); 24232ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian } 24242ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian if (shaders_buf && shaders == NULL) { 24252ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian char * _shadersBase = (char *)_env->GetPrimitiveArrayCritical(_shadersArray, (jboolean *) 0); 242617045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer shaders = (GLuint *) (_shadersBase + _shadersBufferOffset); 242717045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer } 2428560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich glGetAttachedShaders( 2429560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLuint)program, 2430560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLsizei)maxcount, 2431560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLsizei *)count, 2432560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLuint *)shaders 2433560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich ); 24342ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian 24352ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopianexit: 2436560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich if (_shadersArray) { 24372ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian releasePointer(_env, _shadersArray, shaders, _exception ? JNI_FALSE : JNI_TRUE); 243817045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer } 243917045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer if (_countArray) { 24402ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian releasePointer(_env, _countArray, count, _exception ? JNI_FALSE : JNI_TRUE); 24412ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian } 24422ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian if (_exception) { 24432ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian jniThrowException(_env, _exceptionType, _exceptionMessage); 2444560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich } 2445560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich} 2446560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 244789be00bcda2b5965757e83bdf70a650b64373045Mathias Agopian/* GLint glGetAttribLocation ( GLuint program, const char *name ) */ 2448560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic jint 2449560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glGetAttribLocation__ILjava_lang_String_2 2450560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (JNIEnv *_env, jobject _this, jint program, jstring name) { 24512545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer jint _exception = 0; 24522ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian const char * _exceptionType = NULL; 24532ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian const char * _exceptionMessage = NULL; 245489be00bcda2b5965757e83bdf70a650b64373045Mathias Agopian GLint _returnValue = 0; 2455560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich const char* _nativename = 0; 2456560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 2457560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich if (!name) { 2458428d3fcbe3596b18549cdada9fc68a29f159a946Elliott Hughes _exception = 1; 24592545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionType = "java/lang/IllegalArgumentException"; 24602545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionMessage = "name == null"; 2461560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich goto exit; 2462560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich } 2463560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich _nativename = _env->GetStringUTFChars(name, 0); 2464560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 2465560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich _returnValue = glGetAttribLocation( 2466560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLuint)program, 2467560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (char *)_nativename 2468560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich ); 2469560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 2470560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichexit: 2471560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich if (_nativename) { 2472560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich _env->ReleaseStringUTFChars(name, _nativename); 2473560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich } 2474560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 24752545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer if (_exception) { 24762545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer jniThrowException(_env, _exceptionType, _exceptionMessage); 24772545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer } 2478cee5198e7199fcbb131ff0d30165fb1d5c0107cfAndy McFadden return (jint)_returnValue; 2479560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich} 2480560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 2481560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glGetBooleanv ( GLenum pname, GLboolean *params ) */ 2482560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void 2483560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glGetBooleanv__I_3ZI 2484560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (JNIEnv *_env, jobject _this, jint pname, jbooleanArray params_ref, jint offset) { 24852ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian get<jbooleanArray, GLboolean, glGetBooleanv>(_env, _this, pname, params_ref, offset); 2486560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich} 2487560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 2488560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glGetBooleanv ( GLenum pname, GLboolean *params ) */ 2489560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void 2490560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glGetBooleanv__ILjava_nio_IntBuffer_2 2491560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (JNIEnv *_env, jobject _this, jint pname, jobject params_buf) { 24922ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian getarray<GLboolean, glGetBooleanv>(_env, _this, pname, params_buf); 2493560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich} 2494560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glGetBufferParameteriv ( GLenum target, GLenum pname, GLint *params ) */ 2495560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void 2496560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glGetBufferParameteriv__II_3II 2497560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (JNIEnv *_env, jobject _this, jint target, jint pname, jintArray params_ref, jint offset) { 249873108675c944ab4ee89631dced23566b12341b66Jack Palevich jint _exception = 0; 24992ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian const char * _exceptionType = NULL; 25002ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian const char * _exceptionMessage = NULL; 250173108675c944ab4ee89631dced23566b12341b66Jack Palevich GLint *params_base = (GLint *) 0; 250273108675c944ab4ee89631dced23566b12341b66Jack Palevich jint _remaining; 250373108675c944ab4ee89631dced23566b12341b66Jack Palevich GLint *params = (GLint *) 0; 250473108675c944ab4ee89631dced23566b12341b66Jack Palevich 250573108675c944ab4ee89631dced23566b12341b66Jack Palevich if (!params_ref) { 250673108675c944ab4ee89631dced23566b12341b66Jack Palevich _exception = 1; 25072545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionType = "java/lang/IllegalArgumentException"; 25082545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionMessage = "params == null"; 250973108675c944ab4ee89631dced23566b12341b66Jack Palevich goto exit; 251073108675c944ab4ee89631dced23566b12341b66Jack Palevich } 251173108675c944ab4ee89631dced23566b12341b66Jack Palevich if (offset < 0) { 251273108675c944ab4ee89631dced23566b12341b66Jack Palevich _exception = 1; 25132545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionType = "java/lang/IllegalArgumentException"; 25142545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionMessage = "offset < 0"; 251573108675c944ab4ee89631dced23566b12341b66Jack Palevich goto exit; 251673108675c944ab4ee89631dced23566b12341b66Jack Palevich } 251773108675c944ab4ee89631dced23566b12341b66Jack Palevich _remaining = _env->GetArrayLength(params_ref) - offset; 251873108675c944ab4ee89631dced23566b12341b66Jack Palevich if (_remaining < 1) { 251973108675c944ab4ee89631dced23566b12341b66Jack Palevich _exception = 1; 25202545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionType = "java/lang/IllegalArgumentException"; 25212545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionMessage = "length - offset < 1 < needed"; 252273108675c944ab4ee89631dced23566b12341b66Jack Palevich goto exit; 252373108675c944ab4ee89631dced23566b12341b66Jack Palevich } 252473108675c944ab4ee89631dced23566b12341b66Jack Palevich params_base = (GLint *) 252573108675c944ab4ee89631dced23566b12341b66Jack Palevich _env->GetPrimitiveArrayCritical(params_ref, (jboolean *)0); 252673108675c944ab4ee89631dced23566b12341b66Jack Palevich params = params_base + offset; 252773108675c944ab4ee89631dced23566b12341b66Jack Palevich 252873108675c944ab4ee89631dced23566b12341b66Jack Palevich glGetBufferParameteriv( 252973108675c944ab4ee89631dced23566b12341b66Jack Palevich (GLenum)target, 253073108675c944ab4ee89631dced23566b12341b66Jack Palevich (GLenum)pname, 253173108675c944ab4ee89631dced23566b12341b66Jack Palevich (GLint *)params 253273108675c944ab4ee89631dced23566b12341b66Jack Palevich ); 253373108675c944ab4ee89631dced23566b12341b66Jack Palevich 253473108675c944ab4ee89631dced23566b12341b66Jack Palevichexit: 253573108675c944ab4ee89631dced23566b12341b66Jack Palevich if (params_base) { 253673108675c944ab4ee89631dced23566b12341b66Jack Palevich _env->ReleasePrimitiveArrayCritical(params_ref, params_base, 253773108675c944ab4ee89631dced23566b12341b66Jack Palevich _exception ? JNI_ABORT: 0); 253873108675c944ab4ee89631dced23566b12341b66Jack Palevich } 25392545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer if (_exception) { 25402545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer jniThrowException(_env, _exceptionType, _exceptionMessage); 25412545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer } 2542560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich} 2543560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 2544560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glGetBufferParameteriv ( GLenum target, GLenum pname, GLint *params ) */ 2545560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void 2546560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glGetBufferParameteriv__IILjava_nio_IntBuffer_2 2547560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (JNIEnv *_env, jobject _this, jint target, jint pname, jobject params_buf) { 254873108675c944ab4ee89631dced23566b12341b66Jack Palevich jint _exception = 0; 25492ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian const char * _exceptionType = NULL; 25502ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian const char * _exceptionMessage = NULL; 255173108675c944ab4ee89631dced23566b12341b66Jack Palevich jarray _array = (jarray) 0; 255217045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer jint _bufferOffset = (jint) 0; 255373108675c944ab4ee89631dced23566b12341b66Jack Palevich jint _remaining; 255473108675c944ab4ee89631dced23566b12341b66Jack Palevich GLint *params = (GLint *) 0; 255573108675c944ab4ee89631dced23566b12341b66Jack Palevich 255617045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer params = (GLint *)getPointer(_env, params_buf, &_array, &_remaining, &_bufferOffset); 255773108675c944ab4ee89631dced23566b12341b66Jack Palevich if (_remaining < 1) { 255873108675c944ab4ee89631dced23566b12341b66Jack Palevich _exception = 1; 25592545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionType = "java/lang/IllegalArgumentException"; 25602545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionMessage = "remaining() < 1 < needed"; 256173108675c944ab4ee89631dced23566b12341b66Jack Palevich goto exit; 256273108675c944ab4ee89631dced23566b12341b66Jack Palevich } 256317045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer if (params == NULL) { 256417045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer char * _paramsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); 256517045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer params = (GLint *) (_paramsBase + _bufferOffset); 256617045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer } 256773108675c944ab4ee89631dced23566b12341b66Jack Palevich glGetBufferParameteriv( 256873108675c944ab4ee89631dced23566b12341b66Jack Palevich (GLenum)target, 256973108675c944ab4ee89631dced23566b12341b66Jack Palevich (GLenum)pname, 257073108675c944ab4ee89631dced23566b12341b66Jack Palevich (GLint *)params 257173108675c944ab4ee89631dced23566b12341b66Jack Palevich ); 257273108675c944ab4ee89631dced23566b12341b66Jack Palevich 257373108675c944ab4ee89631dced23566b12341b66Jack Palevichexit: 257473108675c944ab4ee89631dced23566b12341b66Jack Palevich if (_array) { 257573108675c944ab4ee89631dced23566b12341b66Jack Palevich releasePointer(_env, _array, params, _exception ? JNI_FALSE : JNI_TRUE); 257673108675c944ab4ee89631dced23566b12341b66Jack Palevich } 25772545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer if (_exception) { 25782545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer jniThrowException(_env, _exceptionType, _exceptionMessage); 25792545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer } 2580560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich} 2581560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 2582560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* GLenum glGetError ( void ) */ 2583560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic jint 2584560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glGetError__ 2585560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (JNIEnv *_env, jobject _this) { 2586560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich GLenum _returnValue; 2587560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich _returnValue = glGetError(); 2588cee5198e7199fcbb131ff0d30165fb1d5c0107cfAndy McFadden return (jint)_returnValue; 2589560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich} 2590560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 2591560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glGetFloatv ( GLenum pname, GLfloat *params ) */ 2592560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void 2593560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glGetFloatv__I_3FI 2594560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (JNIEnv *_env, jobject _this, jint pname, jfloatArray params_ref, jint offset) { 25952ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian get<jfloatArray, GLfloat, glGetFloatv>(_env, _this, pname, params_ref, offset); 2596560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich} 2597560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 2598560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glGetFloatv ( GLenum pname, GLfloat *params ) */ 2599560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void 2600560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glGetFloatv__ILjava_nio_FloatBuffer_2 2601560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (JNIEnv *_env, jobject _this, jint pname, jobject params_buf) { 26022ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian getarray<GLfloat, glGetFloatv>(_env, _this, pname, params_buf); 2603560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich} 2604560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glGetFramebufferAttachmentParameteriv ( GLenum target, GLenum attachment, GLenum pname, GLint *params ) */ 2605560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void 2606560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glGetFramebufferAttachmentParameteriv__III_3II 2607560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (JNIEnv *_env, jobject _this, jint target, jint attachment, jint pname, jintArray params_ref, jint offset) { 2608560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich jint _exception = 0; 26092ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian const char * _exceptionType = NULL; 26102ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian const char * _exceptionMessage = NULL; 2611560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich GLint *params_base = (GLint *) 0; 2612560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich jint _remaining; 2613560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich GLint *params = (GLint *) 0; 2614560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 2615560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich if (!params_ref) { 2616560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich _exception = 1; 26172545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionType = "java/lang/IllegalArgumentException"; 26182545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionMessage = "params == null"; 2619560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich goto exit; 2620560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich } 2621560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich if (offset < 0) { 2622560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich _exception = 1; 26232545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionType = "java/lang/IllegalArgumentException"; 26242545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionMessage = "offset < 0"; 2625560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich goto exit; 2626560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich } 2627560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich _remaining = _env->GetArrayLength(params_ref) - offset; 2628560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich params_base = (GLint *) 2629560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich _env->GetPrimitiveArrayCritical(params_ref, (jboolean *)0); 2630560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich params = params_base + offset; 2631560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 2632560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich glGetFramebufferAttachmentParameteriv( 2633560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLenum)target, 2634560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLenum)attachment, 2635560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLenum)pname, 2636560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLint *)params 2637560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich ); 2638560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 2639560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichexit: 2640560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich if (params_base) { 2641560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich _env->ReleasePrimitiveArrayCritical(params_ref, params_base, 2642560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich _exception ? JNI_ABORT: 0); 2643560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich } 26442545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer if (_exception) { 26452545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer jniThrowException(_env, _exceptionType, _exceptionMessage); 26462545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer } 2647560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich} 2648560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 2649560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glGetFramebufferAttachmentParameteriv ( GLenum target, GLenum attachment, GLenum pname, GLint *params ) */ 2650560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void 2651560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glGetFramebufferAttachmentParameteriv__IIILjava_nio_IntBuffer_2 2652560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (JNIEnv *_env, jobject _this, jint target, jint attachment, jint pname, jobject params_buf) { 2653560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich jarray _array = (jarray) 0; 265417045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer jint _bufferOffset = (jint) 0; 2655560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich jint _remaining; 2656560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich GLint *params = (GLint *) 0; 2657560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 265817045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer params = (GLint *)getPointer(_env, params_buf, &_array, &_remaining, &_bufferOffset); 265917045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer if (params == NULL) { 266017045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer char * _paramsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); 266117045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer params = (GLint *) (_paramsBase + _bufferOffset); 266217045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer } 2663560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich glGetFramebufferAttachmentParameteriv( 2664560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLenum)target, 2665560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLenum)attachment, 2666560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLenum)pname, 2667560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLint *)params 2668560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich ); 2669560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich if (_array) { 26702545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer releasePointer(_env, _array, params, JNI_TRUE); 2671560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich } 2672560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich} 2673560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 2674560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glGetIntegerv ( GLenum pname, GLint *params ) */ 2675560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void 2676560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glGetIntegerv__I_3II 2677560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (JNIEnv *_env, jobject _this, jint pname, jintArray params_ref, jint offset) { 26782ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian get<jintArray, GLint, glGetIntegerv>(_env, _this, pname, params_ref, offset); 2679560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich} 2680560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 2681560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glGetIntegerv ( GLenum pname, GLint *params ) */ 2682560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void 2683560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glGetIntegerv__ILjava_nio_IntBuffer_2 2684560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (JNIEnv *_env, jobject _this, jint pname, jobject params_buf) { 26852ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian getarray<GLint, glGetIntegerv>(_env, _this, pname, params_buf); 2686560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich} 2687560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 2688560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glGetProgramiv ( GLuint program, GLenum pname, GLint *params ) */ 2689560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void 2690560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glGetProgramiv__II_3II 2691560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (JNIEnv *_env, jobject _this, jint program, jint pname, jintArray params_ref, jint offset) { 2692560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich jint _exception = 0; 26932ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian const char * _exceptionType = NULL; 26942ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian const char * _exceptionMessage = NULL; 2695560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich GLint *params_base = (GLint *) 0; 2696560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich jint _remaining; 2697560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich GLint *params = (GLint *) 0; 2698560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 2699560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich if (!params_ref) { 2700560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich _exception = 1; 27012545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionType = "java/lang/IllegalArgumentException"; 27022545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionMessage = "params == null"; 2703560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich goto exit; 2704560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich } 2705560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich if (offset < 0) { 2706560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich _exception = 1; 27072545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionType = "java/lang/IllegalArgumentException"; 27082545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionMessage = "offset < 0"; 2709560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich goto exit; 2710560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich } 2711560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich _remaining = _env->GetArrayLength(params_ref) - offset; 27122ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian if (_remaining < 1) { 27132ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian _exception = 1; 27142ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian _exceptionType = "java/lang/IllegalArgumentException"; 27152ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian _exceptionMessage = "length - offset < 1 < needed"; 27162ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian goto exit; 27172ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian } 2718560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich params_base = (GLint *) 2719560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich _env->GetPrimitiveArrayCritical(params_ref, (jboolean *)0); 2720560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich params = params_base + offset; 2721560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 2722560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich glGetProgramiv( 2723560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLuint)program, 2724560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLenum)pname, 2725560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLint *)params 2726560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich ); 2727560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 2728560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichexit: 2729560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich if (params_base) { 2730560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich _env->ReleasePrimitiveArrayCritical(params_ref, params_base, 2731560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich _exception ? JNI_ABORT: 0); 2732560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich } 27332545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer if (_exception) { 27342545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer jniThrowException(_env, _exceptionType, _exceptionMessage); 27352545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer } 2736560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich} 2737560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 2738560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glGetProgramiv ( GLuint program, GLenum pname, GLint *params ) */ 2739560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void 2740560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glGetProgramiv__IILjava_nio_IntBuffer_2 2741560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (JNIEnv *_env, jobject _this, jint program, jint pname, jobject params_buf) { 27422ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian jint _exception = 0; 27432ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian const char * _exceptionType = NULL; 27442ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian const char * _exceptionMessage = NULL; 2745560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich jarray _array = (jarray) 0; 274617045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer jint _bufferOffset = (jint) 0; 2747560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich jint _remaining; 2748560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich GLint *params = (GLint *) 0; 2749560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 275017045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer params = (GLint *)getPointer(_env, params_buf, &_array, &_remaining, &_bufferOffset); 27512ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian if (_remaining < 1) { 27522ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian _exception = 1; 27532ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian _exceptionType = "java/lang/IllegalArgumentException"; 27542ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian _exceptionMessage = "remaining() < 1 < needed"; 27552ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian goto exit; 27562ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian } 275717045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer if (params == NULL) { 275817045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer char * _paramsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); 275917045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer params = (GLint *) (_paramsBase + _bufferOffset); 276017045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer } 2761560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich glGetProgramiv( 2762560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLuint)program, 2763560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLenum)pname, 2764560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLint *)params 2765560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich ); 27662ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian 27672ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopianexit: 2768560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich if (_array) { 27692ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian releasePointer(_env, _array, params, _exception ? JNI_FALSE : JNI_TRUE); 27702ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian } 27712ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian if (_exception) { 27722ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian jniThrowException(_env, _exceptionType, _exceptionMessage); 2773560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich } 2774560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich} 2775560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 277624ce5fb2cc09d0a14406e7b935f8648c5720d27eElliott Hughes#include <stdlib.h> 2777560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 2778560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glGetProgramInfoLog ( GLuint shader, GLsizei maxLength, GLsizei* length, GLchar* infoLog ) */ 277924ce5fb2cc09d0a14406e7b935f8648c5720d27eElliott Hughesstatic jstring android_glGetProgramInfoLog(JNIEnv *_env, jobject, jint shader) { 2780560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich GLint infoLen = 0; 2781560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich glGetProgramiv(shader, GL_INFO_LOG_LENGTH, &infoLen); 278224ce5fb2cc09d0a14406e7b935f8648c5720d27eElliott Hughes if (!infoLen) { 278324ce5fb2cc09d0a14406e7b935f8648c5720d27eElliott Hughes return _env->NewStringUTF(""); 2784560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich } 278524ce5fb2cc09d0a14406e7b935f8648c5720d27eElliott Hughes char* buf = (char*) malloc(infoLen); 278624ce5fb2cc09d0a14406e7b935f8648c5720d27eElliott Hughes if (buf == NULL) { 278724ce5fb2cc09d0a14406e7b935f8648c5720d27eElliott Hughes jniThrowException(_env, "java/lang/IllegalArgumentException", "out of memory"); 278824ce5fb2cc09d0a14406e7b935f8648c5720d27eElliott Hughes return NULL; 2789560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich } 279024ce5fb2cc09d0a14406e7b935f8648c5720d27eElliott Hughes glGetProgramInfoLog(shader, infoLen, NULL, buf); 279124ce5fb2cc09d0a14406e7b935f8648c5720d27eElliott Hughes jstring result = _env->NewStringUTF(buf); 279224ce5fb2cc09d0a14406e7b935f8648c5720d27eElliott Hughes free(buf); 279324ce5fb2cc09d0a14406e7b935f8648c5720d27eElliott Hughes return result; 2794560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich} 2795560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glGetRenderbufferParameteriv ( GLenum target, GLenum pname, GLint *params ) */ 2796560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void 2797560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glGetRenderbufferParameteriv__II_3II 2798560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (JNIEnv *_env, jobject _this, jint target, jint pname, jintArray params_ref, jint offset) { 2799560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich jint _exception = 0; 28002ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian const char * _exceptionType = NULL; 28012ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian const char * _exceptionMessage = NULL; 2802560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich GLint *params_base = (GLint *) 0; 2803560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich jint _remaining; 2804560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich GLint *params = (GLint *) 0; 2805560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 2806560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich if (!params_ref) { 2807560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich _exception = 1; 28082545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionType = "java/lang/IllegalArgumentException"; 28092545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionMessage = "params == null"; 2810560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich goto exit; 2811560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich } 2812560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich if (offset < 0) { 2813560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich _exception = 1; 28142545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionType = "java/lang/IllegalArgumentException"; 28152545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionMessage = "offset < 0"; 2816560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich goto exit; 2817560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich } 2818560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich _remaining = _env->GetArrayLength(params_ref) - offset; 28192ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian if (_remaining < 1) { 28202ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian _exception = 1; 28212ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian _exceptionType = "java/lang/IllegalArgumentException"; 28222ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian _exceptionMessage = "length - offset < 1 < needed"; 28232ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian goto exit; 28242ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian } 2825560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich params_base = (GLint *) 2826560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich _env->GetPrimitiveArrayCritical(params_ref, (jboolean *)0); 2827560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich params = params_base + offset; 2828560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 2829560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich glGetRenderbufferParameteriv( 2830560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLenum)target, 2831560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLenum)pname, 2832560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLint *)params 2833560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich ); 2834560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 2835560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichexit: 2836560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich if (params_base) { 2837560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich _env->ReleasePrimitiveArrayCritical(params_ref, params_base, 2838560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich _exception ? JNI_ABORT: 0); 2839560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich } 28402545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer if (_exception) { 28412545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer jniThrowException(_env, _exceptionType, _exceptionMessage); 28422545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer } 2843560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich} 2844560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 2845560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glGetRenderbufferParameteriv ( GLenum target, GLenum pname, GLint *params ) */ 2846560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void 2847560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glGetRenderbufferParameteriv__IILjava_nio_IntBuffer_2 2848560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (JNIEnv *_env, jobject _this, jint target, jint pname, jobject params_buf) { 28492ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian jint _exception = 0; 28502ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian const char * _exceptionType = NULL; 28512ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian const char * _exceptionMessage = NULL; 2852560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich jarray _array = (jarray) 0; 285317045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer jint _bufferOffset = (jint) 0; 2854560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich jint _remaining; 2855560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich GLint *params = (GLint *) 0; 2856560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 285717045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer params = (GLint *)getPointer(_env, params_buf, &_array, &_remaining, &_bufferOffset); 28582ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian if (_remaining < 1) { 28592ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian _exception = 1; 28602ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian _exceptionType = "java/lang/IllegalArgumentException"; 28612ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian _exceptionMessage = "remaining() < 1 < needed"; 28622ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian goto exit; 28632ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian } 286417045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer if (params == NULL) { 286517045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer char * _paramsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); 286617045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer params = (GLint *) (_paramsBase + _bufferOffset); 286717045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer } 2868560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich glGetRenderbufferParameteriv( 2869560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLenum)target, 2870560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLenum)pname, 2871560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLint *)params 2872560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich ); 28732ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian 28742ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopianexit: 2875560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich if (_array) { 28762ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian releasePointer(_env, _array, params, _exception ? JNI_FALSE : JNI_TRUE); 28772ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian } 28782ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian if (_exception) { 28792ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian jniThrowException(_env, _exceptionType, _exceptionMessage); 2880560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich } 2881560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich} 2882560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 2883560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glGetShaderiv ( GLuint shader, GLenum pname, GLint *params ) */ 2884560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void 2885560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glGetShaderiv__II_3II 2886560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (JNIEnv *_env, jobject _this, jint shader, jint pname, jintArray params_ref, jint offset) { 2887560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich jint _exception = 0; 28882ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian const char * _exceptionType = NULL; 28892ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian const char * _exceptionMessage = NULL; 2890560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich GLint *params_base = (GLint *) 0; 2891560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich jint _remaining; 2892560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich GLint *params = (GLint *) 0; 2893560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 2894560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich if (!params_ref) { 2895560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich _exception = 1; 28962545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionType = "java/lang/IllegalArgumentException"; 28972545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionMessage = "params == null"; 2898560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich goto exit; 2899560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich } 2900560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich if (offset < 0) { 2901560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich _exception = 1; 29022545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionType = "java/lang/IllegalArgumentException"; 29032545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionMessage = "offset < 0"; 2904560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich goto exit; 2905560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich } 2906560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich _remaining = _env->GetArrayLength(params_ref) - offset; 29072ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian if (_remaining < 1) { 29082ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian _exception = 1; 29092ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian _exceptionType = "java/lang/IllegalArgumentException"; 29102ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian _exceptionMessage = "length - offset < 1 < needed"; 29112ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian goto exit; 29122ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian } 2913560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich params_base = (GLint *) 2914560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich _env->GetPrimitiveArrayCritical(params_ref, (jboolean *)0); 2915560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich params = params_base + offset; 2916560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 2917560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich glGetShaderiv( 2918560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLuint)shader, 2919560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLenum)pname, 2920560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLint *)params 2921560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich ); 2922560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 2923560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichexit: 2924560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich if (params_base) { 2925560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich _env->ReleasePrimitiveArrayCritical(params_ref, params_base, 2926560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich _exception ? JNI_ABORT: 0); 2927560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich } 29282545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer if (_exception) { 29292545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer jniThrowException(_env, _exceptionType, _exceptionMessage); 29302545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer } 2931560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich} 2932560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 2933560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glGetShaderiv ( GLuint shader, GLenum pname, GLint *params ) */ 2934560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void 2935560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glGetShaderiv__IILjava_nio_IntBuffer_2 2936560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (JNIEnv *_env, jobject _this, jint shader, jint pname, jobject params_buf) { 29372ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian jint _exception = 0; 29382ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian const char * _exceptionType = NULL; 29392ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian const char * _exceptionMessage = NULL; 2940560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich jarray _array = (jarray) 0; 294117045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer jint _bufferOffset = (jint) 0; 2942560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich jint _remaining; 2943560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich GLint *params = (GLint *) 0; 2944560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 294517045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer params = (GLint *)getPointer(_env, params_buf, &_array, &_remaining, &_bufferOffset); 29462ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian if (_remaining < 1) { 29472ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian _exception = 1; 29482ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian _exceptionType = "java/lang/IllegalArgumentException"; 29492ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian _exceptionMessage = "remaining() < 1 < needed"; 29502ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian goto exit; 29512ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian } 295217045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer if (params == NULL) { 295317045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer char * _paramsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); 295417045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer params = (GLint *) (_paramsBase + _bufferOffset); 295517045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer } 2956560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich glGetShaderiv( 2957560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLuint)shader, 2958560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLenum)pname, 2959560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLint *)params 2960560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich ); 29612ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian 29622ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopianexit: 2963560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich if (_array) { 29642ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian releasePointer(_env, _array, params, _exception ? JNI_FALSE : JNI_TRUE); 29652ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian } 29662ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian if (_exception) { 29672ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian jniThrowException(_env, _exceptionType, _exceptionMessage); 2968560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich } 2969560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich} 2970560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 297124ce5fb2cc09d0a14406e7b935f8648c5720d27eElliott Hughes#include <stdlib.h> 2972560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 2973560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glGetShaderInfoLog ( GLuint shader, GLsizei maxLength, GLsizei* length, GLchar* infoLog ) */ 297424ce5fb2cc09d0a14406e7b935f8648c5720d27eElliott Hughesstatic jstring android_glGetShaderInfoLog(JNIEnv *_env, jobject, jint shader) { 2975560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich GLint infoLen = 0; 2976560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich glGetShaderiv(shader, GL_INFO_LOG_LENGTH, &infoLen); 297724ce5fb2cc09d0a14406e7b935f8648c5720d27eElliott Hughes if (!infoLen) { 297824ce5fb2cc09d0a14406e7b935f8648c5720d27eElliott Hughes return _env->NewStringUTF(""); 2979560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich } 298024ce5fb2cc09d0a14406e7b935f8648c5720d27eElliott Hughes char* buf = (char*) malloc(infoLen); 298124ce5fb2cc09d0a14406e7b935f8648c5720d27eElliott Hughes if (buf == NULL) { 298224ce5fb2cc09d0a14406e7b935f8648c5720d27eElliott Hughes jniThrowException(_env, "java/lang/IllegalArgumentException", "out of memory"); 298324ce5fb2cc09d0a14406e7b935f8648c5720d27eElliott Hughes return NULL; 2984560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich } 298524ce5fb2cc09d0a14406e7b935f8648c5720d27eElliott Hughes glGetShaderInfoLog(shader, infoLen, NULL, buf); 298624ce5fb2cc09d0a14406e7b935f8648c5720d27eElliott Hughes jstring result = _env->NewStringUTF(buf); 298724ce5fb2cc09d0a14406e7b935f8648c5720d27eElliott Hughes free(buf); 298824ce5fb2cc09d0a14406e7b935f8648c5720d27eElliott Hughes return result; 2989560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich} 2990560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glGetShaderPrecisionFormat ( GLenum shadertype, GLenum precisiontype, GLint *range, GLint *precision ) */ 2991560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void 2992560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glGetShaderPrecisionFormat__II_3II_3II 2993560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (JNIEnv *_env, jobject _this, jint shadertype, jint precisiontype, jintArray range_ref, jint rangeOffset, jintArray precision_ref, jint precisionOffset) { 2994560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich jint _exception = 0; 29952ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian const char * _exceptionType = NULL; 29962ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian const char * _exceptionMessage = NULL; 2997560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich GLint *range_base = (GLint *) 0; 2998560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich jint _rangeRemaining; 2999560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich GLint *range = (GLint *) 0; 3000560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich GLint *precision_base = (GLint *) 0; 3001560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich jint _precisionRemaining; 3002560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich GLint *precision = (GLint *) 0; 3003560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 3004560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich if (!range_ref) { 3005560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich _exception = 1; 30062545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionType = "java/lang/IllegalArgumentException"; 30072545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionMessage = "range == null"; 3008560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich goto exit; 3009560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich } 3010560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich if (rangeOffset < 0) { 3011560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich _exception = 1; 30122545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionType = "java/lang/IllegalArgumentException"; 30132545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionMessage = "rangeOffset < 0"; 3014560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich goto exit; 3015560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich } 3016560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich _rangeRemaining = _env->GetArrayLength(range_ref) - rangeOffset; 30172ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian if (_rangeRemaining < 1) { 30182ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian _exception = 1; 30192ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian _exceptionType = "java/lang/IllegalArgumentException"; 30202ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian _exceptionMessage = "length - rangeOffset < 1 < needed"; 30212ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian goto exit; 30222ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian } 3023560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich range_base = (GLint *) 3024560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich _env->GetPrimitiveArrayCritical(range_ref, (jboolean *)0); 3025560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich range = range_base + rangeOffset; 3026560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 3027560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich if (!precision_ref) { 3028560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich _exception = 1; 30292545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionType = "java/lang/IllegalArgumentException"; 30302545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionMessage = "precision == null"; 3031560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich goto exit; 3032560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich } 3033560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich if (precisionOffset < 0) { 3034560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich _exception = 1; 30352545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionType = "java/lang/IllegalArgumentException"; 30362545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionMessage = "precisionOffset < 0"; 3037560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich goto exit; 3038560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich } 3039560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich _precisionRemaining = _env->GetArrayLength(precision_ref) - precisionOffset; 30402ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian if (_precisionRemaining < 1) { 30412ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian _exception = 1; 30422ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian _exceptionType = "java/lang/IllegalArgumentException"; 30432ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian _exceptionMessage = "length - precisionOffset < 1 < needed"; 30442ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian goto exit; 30452ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian } 3046560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich precision_base = (GLint *) 3047560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich _env->GetPrimitiveArrayCritical(precision_ref, (jboolean *)0); 3048560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich precision = precision_base + precisionOffset; 3049560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 3050560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich glGetShaderPrecisionFormat( 3051560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLenum)shadertype, 3052560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLenum)precisiontype, 3053560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLint *)range, 3054560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLint *)precision 3055560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich ); 3056560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 3057560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichexit: 3058560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich if (precision_base) { 3059560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich _env->ReleasePrimitiveArrayCritical(precision_ref, precision_base, 3060560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich _exception ? JNI_ABORT: 0); 3061560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich } 3062560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich if (range_base) { 3063560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich _env->ReleasePrimitiveArrayCritical(range_ref, range_base, 3064560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich _exception ? JNI_ABORT: 0); 3065560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich } 30662545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer if (_exception) { 30672545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer jniThrowException(_env, _exceptionType, _exceptionMessage); 30682545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer } 3069560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich} 3070560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 3071560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glGetShaderPrecisionFormat ( GLenum shadertype, GLenum precisiontype, GLint *range, GLint *precision ) */ 3072560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void 3073560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glGetShaderPrecisionFormat__IILjava_nio_IntBuffer_2Ljava_nio_IntBuffer_2 3074560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (JNIEnv *_env, jobject _this, jint shadertype, jint precisiontype, jobject range_buf, jobject precision_buf) { 30752ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian jint _exception = 0; 30762ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian const char * _exceptionType = NULL; 30772ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian const char * _exceptionMessage = NULL; 3078560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich jarray _rangeArray = (jarray) 0; 307917045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer jint _rangeBufferOffset = (jint) 0; 3080560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich jarray _precisionArray = (jarray) 0; 308117045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer jint _precisionBufferOffset = (jint) 0; 3082560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich jint _rangeRemaining; 3083560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich GLint *range = (GLint *) 0; 3084560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich jint _precisionRemaining; 3085560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich GLint *precision = (GLint *) 0; 3086560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 308717045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer range = (GLint *)getPointer(_env, range_buf, &_rangeArray, &_rangeRemaining, &_rangeBufferOffset); 30882ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian if (_rangeRemaining < 1) { 30892ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian _exception = 1; 30902ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian _exceptionType = "java/lang/IllegalArgumentException"; 30912ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian _exceptionMessage = "remaining() < 1 < needed"; 30922ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian goto exit; 30932ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian } 309417045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer precision = (GLint *)getPointer(_env, precision_buf, &_precisionArray, &_precisionRemaining, &_precisionBufferOffset); 30952ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian if (_precisionRemaining < 1) { 30962ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian _exception = 1; 30972ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian _exceptionType = "java/lang/IllegalArgumentException"; 30982ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian _exceptionMessage = "remaining() < 1 < needed"; 30992ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian goto exit; 31002ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian } 310117045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer if (range == NULL) { 310217045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer char * _rangeBase = (char *)_env->GetPrimitiveArrayCritical(_rangeArray, (jboolean *) 0); 310317045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer range = (GLint *) (_rangeBase + _rangeBufferOffset); 310417045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer } 310517045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer if (precision == NULL) { 310617045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer char * _precisionBase = (char *)_env->GetPrimitiveArrayCritical(_precisionArray, (jboolean *) 0); 310717045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer precision = (GLint *) (_precisionBase + _precisionBufferOffset); 310817045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer } 3109560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich glGetShaderPrecisionFormat( 3110560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLenum)shadertype, 3111560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLenum)precisiontype, 3112560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLint *)range, 3113560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLint *)precision 3114560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich ); 31152ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian 31162ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopianexit: 3117560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich if (_precisionArray) { 31182ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian releasePointer(_env, _precisionArray, precision, _exception ? JNI_FALSE : JNI_TRUE); 311917045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer } 312017045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer if (_rangeArray) { 31212ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian releasePointer(_env, _rangeArray, range, _exception ? JNI_FALSE : JNI_TRUE); 31222ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian } 31232ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian if (_exception) { 31242ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian jniThrowException(_env, _exceptionType, _exceptionMessage); 3125560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich } 3126560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich} 3127560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 3128560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glGetShaderSource ( GLuint shader, GLsizei bufsize, GLsizei *length, char *source ) */ 3129560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void 3130560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glGetShaderSource__II_3II_3BI 3131560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (JNIEnv *_env, jobject _this, jint shader, jint bufsize, jintArray length_ref, jint lengthOffset, jbyteArray source_ref, jint sourceOffset) { 3132560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich jint _exception = 0; 31332545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer const char * _exceptionType; 31342545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer const char * _exceptionMessage; 3135560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich GLsizei *length_base = (GLsizei *) 0; 3136560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich jint _lengthRemaining; 3137560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich GLsizei *length = (GLsizei *) 0; 3138560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich char *source_base = (char *) 0; 3139560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich jint _sourceRemaining; 3140560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich char *source = (char *) 0; 3141560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 3142560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich if (!length_ref) { 3143560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich _exception = 1; 31442545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionType = "java/lang/IllegalArgumentException"; 31452545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionMessage = "length == null"; 3146560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich goto exit; 3147560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich } 3148560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich if (lengthOffset < 0) { 3149560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich _exception = 1; 31502545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionType = "java/lang/IllegalArgumentException"; 31512545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionMessage = "lengthOffset < 0"; 3152560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich goto exit; 3153560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich } 3154560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich _lengthRemaining = _env->GetArrayLength(length_ref) - lengthOffset; 3155560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich length_base = (GLsizei *) 3156560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich _env->GetPrimitiveArrayCritical(length_ref, (jboolean *)0); 3157560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich length = length_base + lengthOffset; 3158560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 3159560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich if (!source_ref) { 3160560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich _exception = 1; 31612545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionType = "java/lang/IllegalArgumentException"; 31622545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionMessage = "source == null"; 3163560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich goto exit; 3164560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich } 3165560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich if (sourceOffset < 0) { 3166560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich _exception = 1; 31672545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionType = "java/lang/IllegalArgumentException"; 31682545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionMessage = "sourceOffset < 0"; 3169560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich goto exit; 3170560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich } 3171560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich _sourceRemaining = _env->GetArrayLength(source_ref) - sourceOffset; 3172560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich source_base = (char *) 3173560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich _env->GetPrimitiveArrayCritical(source_ref, (jboolean *)0); 3174560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich source = source_base + sourceOffset; 3175560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 3176560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich glGetShaderSource( 3177560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLuint)shader, 3178560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLsizei)bufsize, 3179560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLsizei *)length, 3180560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (char *)source 3181560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich ); 3182560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 3183560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichexit: 3184560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich if (source_base) { 3185560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich _env->ReleasePrimitiveArrayCritical(source_ref, source_base, 3186560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich _exception ? JNI_ABORT: 0); 3187560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich } 3188560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich if (length_base) { 3189560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich _env->ReleasePrimitiveArrayCritical(length_ref, length_base, 3190560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich _exception ? JNI_ABORT: 0); 3191560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich } 31922545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer if (_exception) { 31932545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer jniThrowException(_env, _exceptionType, _exceptionMessage); 31942545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer } 3195560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich} 3196560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 3197560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glGetShaderSource ( GLuint shader, GLsizei bufsize, GLsizei *length, char *source ) */ 3198560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void 3199560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glGetShaderSource__IILjava_nio_IntBuffer_2B 3200560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (JNIEnv *_env, jobject _this, jint shader, jint bufsize, jobject length_buf, jbyte source) { 3201560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich jarray _array = (jarray) 0; 320217045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer jint _bufferOffset = (jint) 0; 3203560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich jint _remaining; 3204560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich GLsizei *length = (GLsizei *) 0; 3205560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 320617045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer length = (GLsizei *)getPointer(_env, length_buf, &_array, &_remaining, &_bufferOffset); 320717045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer if (length == NULL) { 320817045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer char * _lengthBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); 320917045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer length = (GLsizei *) (_lengthBase + _bufferOffset); 321017045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer } 3211560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich glGetShaderSource( 3212560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLuint)shader, 3213560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLsizei)bufsize, 3214560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLsizei *)length, 321501c26ea89d4bbea3cf550e9328742302dd9a2b25Ashok Bhat reinterpret_cast<char *>(source) 3216560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich ); 3217560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich if (_array) { 32182545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer releasePointer(_env, _array, length, JNI_TRUE); 3219560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich } 3220560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich} 3221560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 3222dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer/* void glGetShaderSource ( GLuint shader, GLsizei bufsize, GLsizei *length, char *source ) */ 3223dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshoferstatic jstring android_glGetShaderSource(JNIEnv *_env, jobject, jint shader) { 3224dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer GLint shaderLen = 0; 3225dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer glGetShaderiv((GLuint)shader, GL_SHADER_SOURCE_LENGTH, &shaderLen); 3226dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer if (!shaderLen) { 3227dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer return _env->NewStringUTF(""); 3228dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer } 3229dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer char* buf = (char*) malloc(shaderLen); 3230dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer if (buf == NULL) { 3231dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer jniThrowException(_env, "java/lang/IllegalArgumentException", "out of memory"); 3232dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer return NULL; 3233dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer } 3234dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer glGetShaderSource(shader, shaderLen, NULL, buf); 3235dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer jstring result = _env->NewStringUTF(buf); 3236dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer free(buf); 3237dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer return result; 3238dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer} 3239560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* const GLubyte * glGetString ( GLenum name ) */ 324024ce5fb2cc09d0a14406e7b935f8648c5720d27eElliott Hughesstatic jstring android_glGetString(JNIEnv* _env, jobject, jint name) { 324124ce5fb2cc09d0a14406e7b935f8648c5720d27eElliott Hughes const char* chars = (const char*) glGetString((GLenum) name); 324224ce5fb2cc09d0a14406e7b935f8648c5720d27eElliott Hughes return _env->NewStringUTF(chars); 3243560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich} 3244560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glGetTexParameterfv ( GLenum target, GLenum pname, GLfloat *params ) */ 3245560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void 3246560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glGetTexParameterfv__II_3FI 3247560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (JNIEnv *_env, jobject _this, jint target, jint pname, jfloatArray params_ref, jint offset) { 3248560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich jint _exception = 0; 32492ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian const char * _exceptionType = NULL; 32502ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian const char * _exceptionMessage = NULL; 3251560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich GLfloat *params_base = (GLfloat *) 0; 3252560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich jint _remaining; 3253560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich GLfloat *params = (GLfloat *) 0; 3254560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 3255560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich if (!params_ref) { 3256560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich _exception = 1; 32572545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionType = "java/lang/IllegalArgumentException"; 32582545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionMessage = "params == null"; 3259560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich goto exit; 3260560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich } 3261560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich if (offset < 0) { 3262560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich _exception = 1; 32632545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionType = "java/lang/IllegalArgumentException"; 32642545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionMessage = "offset < 0"; 3265560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich goto exit; 3266560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich } 3267560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich _remaining = _env->GetArrayLength(params_ref) - offset; 3268560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich if (_remaining < 1) { 3269560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich _exception = 1; 32702545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionType = "java/lang/IllegalArgumentException"; 32712545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionMessage = "length - offset < 1 < needed"; 3272560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich goto exit; 3273560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich } 3274560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich params_base = (GLfloat *) 3275560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich _env->GetPrimitiveArrayCritical(params_ref, (jboolean *)0); 3276560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich params = params_base + offset; 3277560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 3278560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich glGetTexParameterfv( 3279560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLenum)target, 3280560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLenum)pname, 3281560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLfloat *)params 3282560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich ); 3283560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 3284560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichexit: 3285560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich if (params_base) { 3286560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich _env->ReleasePrimitiveArrayCritical(params_ref, params_base, 3287560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich _exception ? JNI_ABORT: 0); 3288560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich } 32892545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer if (_exception) { 32902545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer jniThrowException(_env, _exceptionType, _exceptionMessage); 32912545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer } 3292560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich} 3293560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 3294560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glGetTexParameterfv ( GLenum target, GLenum pname, GLfloat *params ) */ 3295560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void 3296560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glGetTexParameterfv__IILjava_nio_FloatBuffer_2 3297560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (JNIEnv *_env, jobject _this, jint target, jint pname, jobject params_buf) { 3298560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich jint _exception = 0; 32992ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian const char * _exceptionType = NULL; 33002ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian const char * _exceptionMessage = NULL; 3301560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich jarray _array = (jarray) 0; 330217045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer jint _bufferOffset = (jint) 0; 3303560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich jint _remaining; 3304560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich GLfloat *params = (GLfloat *) 0; 3305560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 330617045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer params = (GLfloat *)getPointer(_env, params_buf, &_array, &_remaining, &_bufferOffset); 3307560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich if (_remaining < 1) { 3308560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich _exception = 1; 33092545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionType = "java/lang/IllegalArgumentException"; 33102545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionMessage = "remaining() < 1 < needed"; 3311560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich goto exit; 3312560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich } 331317045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer if (params == NULL) { 331417045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer char * _paramsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); 331517045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer params = (GLfloat *) (_paramsBase + _bufferOffset); 331617045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer } 3317560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich glGetTexParameterfv( 3318560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLenum)target, 3319560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLenum)pname, 3320560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLfloat *)params 3321560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich ); 3322560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 3323560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichexit: 3324560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich if (_array) { 3325560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich releasePointer(_env, _array, params, _exception ? JNI_FALSE : JNI_TRUE); 3326560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich } 33272545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer if (_exception) { 33282545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer jniThrowException(_env, _exceptionType, _exceptionMessage); 33292545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer } 3330560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich} 3331560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 3332560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glGetTexParameteriv ( GLenum target, GLenum pname, GLint *params ) */ 3333560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void 3334560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glGetTexParameteriv__II_3II 3335560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (JNIEnv *_env, jobject _this, jint target, jint pname, jintArray params_ref, jint offset) { 3336560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich jint _exception = 0; 33372ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian const char * _exceptionType = NULL; 33382ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian const char * _exceptionMessage = NULL; 3339560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich GLint *params_base = (GLint *) 0; 3340560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich jint _remaining; 3341560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich GLint *params = (GLint *) 0; 3342560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 3343560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich if (!params_ref) { 3344560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich _exception = 1; 33452545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionType = "java/lang/IllegalArgumentException"; 33462545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionMessage = "params == null"; 3347560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich goto exit; 3348560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich } 3349560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich if (offset < 0) { 3350560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich _exception = 1; 33512545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionType = "java/lang/IllegalArgumentException"; 33522545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionMessage = "offset < 0"; 3353560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich goto exit; 3354560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich } 3355560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich _remaining = _env->GetArrayLength(params_ref) - offset; 3356560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich if (_remaining < 1) { 3357560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich _exception = 1; 33582545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionType = "java/lang/IllegalArgumentException"; 33592545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionMessage = "length - offset < 1 < needed"; 3360560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich goto exit; 3361560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich } 3362560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich params_base = (GLint *) 3363560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich _env->GetPrimitiveArrayCritical(params_ref, (jboolean *)0); 3364560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich params = params_base + offset; 3365560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 3366560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich glGetTexParameteriv( 3367560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLenum)target, 3368560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLenum)pname, 3369560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLint *)params 3370560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich ); 3371560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 3372560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichexit: 3373560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich if (params_base) { 3374560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich _env->ReleasePrimitiveArrayCritical(params_ref, params_base, 3375560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich _exception ? JNI_ABORT: 0); 3376560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich } 33772545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer if (_exception) { 33782545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer jniThrowException(_env, _exceptionType, _exceptionMessage); 33792545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer } 3380560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich} 3381560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 3382560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glGetTexParameteriv ( GLenum target, GLenum pname, GLint *params ) */ 3383560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void 3384560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glGetTexParameteriv__IILjava_nio_IntBuffer_2 3385560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (JNIEnv *_env, jobject _this, jint target, jint pname, jobject params_buf) { 3386560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich jint _exception = 0; 33872ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian const char * _exceptionType = NULL; 33882ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian const char * _exceptionMessage = NULL; 3389560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich jarray _array = (jarray) 0; 339017045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer jint _bufferOffset = (jint) 0; 3391560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich jint _remaining; 3392560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich GLint *params = (GLint *) 0; 3393560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 339417045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer params = (GLint *)getPointer(_env, params_buf, &_array, &_remaining, &_bufferOffset); 3395560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich if (_remaining < 1) { 3396560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich _exception = 1; 33972545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionType = "java/lang/IllegalArgumentException"; 33982545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionMessage = "remaining() < 1 < needed"; 3399560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich goto exit; 3400560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich } 340117045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer if (params == NULL) { 340217045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer char * _paramsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); 340317045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer params = (GLint *) (_paramsBase + _bufferOffset); 340417045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer } 3405560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich glGetTexParameteriv( 3406560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLenum)target, 3407560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLenum)pname, 3408560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLint *)params 3409560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich ); 3410560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 3411560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichexit: 3412560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich if (_array) { 3413560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich releasePointer(_env, _array, params, _exception ? JNI_FALSE : JNI_TRUE); 3414560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich } 34152545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer if (_exception) { 34162545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer jniThrowException(_env, _exceptionType, _exceptionMessage); 34172545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer } 3418560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich} 3419560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 3420560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glGetUniformfv ( GLuint program, GLint location, GLfloat *params ) */ 3421560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void 3422560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glGetUniformfv__II_3FI 3423560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (JNIEnv *_env, jobject _this, jint program, jint location, jfloatArray params_ref, jint offset) { 3424560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich jint _exception = 0; 34252ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian const char * _exceptionType = NULL; 34262ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian const char * _exceptionMessage = NULL; 3427560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich GLfloat *params_base = (GLfloat *) 0; 3428560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich jint _remaining; 3429560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich GLfloat *params = (GLfloat *) 0; 3430560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 3431560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich if (!params_ref) { 3432560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich _exception = 1; 34332545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionType = "java/lang/IllegalArgumentException"; 34342545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionMessage = "params == null"; 3435560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich goto exit; 3436560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich } 3437560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich if (offset < 0) { 3438560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich _exception = 1; 34392545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionType = "java/lang/IllegalArgumentException"; 34402545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionMessage = "offset < 0"; 3441560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich goto exit; 3442560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich } 3443560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich _remaining = _env->GetArrayLength(params_ref) - offset; 34442ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian if (_remaining < 1) { 34452ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian _exception = 1; 34462ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian _exceptionType = "java/lang/IllegalArgumentException"; 34472ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian _exceptionMessage = "length - offset < 1 < needed"; 34482ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian goto exit; 34492ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian } 3450560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich params_base = (GLfloat *) 3451560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich _env->GetPrimitiveArrayCritical(params_ref, (jboolean *)0); 3452560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich params = params_base + offset; 3453560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 3454560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich glGetUniformfv( 3455560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLuint)program, 3456560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLint)location, 3457560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLfloat *)params 3458560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich ); 3459560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 3460560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichexit: 3461560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich if (params_base) { 3462560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich _env->ReleasePrimitiveArrayCritical(params_ref, params_base, 3463560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich _exception ? JNI_ABORT: 0); 3464560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich } 34652545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer if (_exception) { 34662545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer jniThrowException(_env, _exceptionType, _exceptionMessage); 34672545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer } 3468560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich} 3469560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 3470560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glGetUniformfv ( GLuint program, GLint location, GLfloat *params ) */ 3471560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void 3472560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glGetUniformfv__IILjava_nio_FloatBuffer_2 3473560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (JNIEnv *_env, jobject _this, jint program, jint location, jobject params_buf) { 34742ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian jint _exception = 0; 34752ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian const char * _exceptionType = NULL; 34762ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian const char * _exceptionMessage = NULL; 3477560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich jarray _array = (jarray) 0; 347817045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer jint _bufferOffset = (jint) 0; 3479560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich jint _remaining; 3480560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich GLfloat *params = (GLfloat *) 0; 3481560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 348217045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer params = (GLfloat *)getPointer(_env, params_buf, &_array, &_remaining, &_bufferOffset); 34832ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian if (_remaining < 1) { 34842ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian _exception = 1; 34852ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian _exceptionType = "java/lang/IllegalArgumentException"; 34862ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian _exceptionMessage = "remaining() < 1 < needed"; 34872ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian goto exit; 34882ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian } 348917045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer if (params == NULL) { 349017045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer char * _paramsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); 349117045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer params = (GLfloat *) (_paramsBase + _bufferOffset); 349217045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer } 3493560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich glGetUniformfv( 3494560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLuint)program, 3495560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLint)location, 3496560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLfloat *)params 3497560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich ); 34982ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian 34992ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopianexit: 3500560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich if (_array) { 35012ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian releasePointer(_env, _array, params, _exception ? JNI_FALSE : JNI_TRUE); 35022ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian } 35032ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian if (_exception) { 35042ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian jniThrowException(_env, _exceptionType, _exceptionMessage); 3505560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich } 3506560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich} 3507560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 3508560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glGetUniformiv ( GLuint program, GLint location, GLint *params ) */ 3509560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void 3510560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glGetUniformiv__II_3II 3511560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (JNIEnv *_env, jobject _this, jint program, jint location, jintArray params_ref, jint offset) { 3512560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich jint _exception = 0; 35132ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian const char * _exceptionType = NULL; 35142ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian const char * _exceptionMessage = NULL; 3515560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich GLint *params_base = (GLint *) 0; 3516560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich jint _remaining; 3517560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich GLint *params = (GLint *) 0; 3518560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 3519560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich if (!params_ref) { 3520560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich _exception = 1; 35212545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionType = "java/lang/IllegalArgumentException"; 35222545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionMessage = "params == null"; 3523560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich goto exit; 3524560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich } 3525560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich if (offset < 0) { 3526560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich _exception = 1; 35272545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionType = "java/lang/IllegalArgumentException"; 35282545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionMessage = "offset < 0"; 3529560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich goto exit; 3530560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich } 3531560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich _remaining = _env->GetArrayLength(params_ref) - offset; 35322ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian if (_remaining < 1) { 35332ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian _exception = 1; 35342ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian _exceptionType = "java/lang/IllegalArgumentException"; 35352ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian _exceptionMessage = "length - offset < 1 < needed"; 35362ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian goto exit; 35372ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian } 3538560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich params_base = (GLint *) 3539560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich _env->GetPrimitiveArrayCritical(params_ref, (jboolean *)0); 3540560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich params = params_base + offset; 3541560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 3542560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich glGetUniformiv( 3543560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLuint)program, 3544560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLint)location, 3545560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLint *)params 3546560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich ); 3547560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 3548560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichexit: 3549560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich if (params_base) { 3550560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich _env->ReleasePrimitiveArrayCritical(params_ref, params_base, 3551560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich _exception ? JNI_ABORT: 0); 3552560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich } 35532545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer if (_exception) { 35542545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer jniThrowException(_env, _exceptionType, _exceptionMessage); 35552545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer } 3556560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich} 3557560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 3558560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glGetUniformiv ( GLuint program, GLint location, GLint *params ) */ 3559560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void 3560560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glGetUniformiv__IILjava_nio_IntBuffer_2 3561560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (JNIEnv *_env, jobject _this, jint program, jint location, jobject params_buf) { 35622ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian jint _exception = 0; 35632ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian const char * _exceptionType = NULL; 35642ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian const char * _exceptionMessage = NULL; 3565560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich jarray _array = (jarray) 0; 356617045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer jint _bufferOffset = (jint) 0; 3567560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich jint _remaining; 3568560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich GLint *params = (GLint *) 0; 3569560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 357017045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer params = (GLint *)getPointer(_env, params_buf, &_array, &_remaining, &_bufferOffset); 35712ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian if (_remaining < 1) { 35722ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian _exception = 1; 35732ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian _exceptionType = "java/lang/IllegalArgumentException"; 35742ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian _exceptionMessage = "remaining() < 1 < needed"; 35752ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian goto exit; 35762ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian } 357717045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer if (params == NULL) { 357817045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer char * _paramsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); 357917045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer params = (GLint *) (_paramsBase + _bufferOffset); 358017045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer } 3581560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich glGetUniformiv( 3582560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLuint)program, 3583560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLint)location, 3584560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLint *)params 3585560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich ); 35862ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian 35872ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopianexit: 3588560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich if (_array) { 35892ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian releasePointer(_env, _array, params, _exception ? JNI_FALSE : JNI_TRUE); 35902ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian } 35912ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian if (_exception) { 35922ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian jniThrowException(_env, _exceptionType, _exceptionMessage); 3593560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich } 3594560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich} 3595560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 359689be00bcda2b5965757e83bdf70a650b64373045Mathias Agopian/* GLint glGetUniformLocation ( GLuint program, const char *name ) */ 3597560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic jint 3598560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glGetUniformLocation__ILjava_lang_String_2 3599560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (JNIEnv *_env, jobject _this, jint program, jstring name) { 36002545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer jint _exception = 0; 36012ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian const char * _exceptionType = NULL; 36022ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian const char * _exceptionMessage = NULL; 360389be00bcda2b5965757e83bdf70a650b64373045Mathias Agopian GLint _returnValue = 0; 3604560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich const char* _nativename = 0; 3605560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 3606560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich if (!name) { 3607428d3fcbe3596b18549cdada9fc68a29f159a946Elliott Hughes _exception = 1; 36082545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionType = "java/lang/IllegalArgumentException"; 36092545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionMessage = "name == null"; 3610560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich goto exit; 3611560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich } 3612560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich _nativename = _env->GetStringUTFChars(name, 0); 3613560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 3614560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich _returnValue = glGetUniformLocation( 3615560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLuint)program, 3616560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (char *)_nativename 3617560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich ); 3618560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 3619560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichexit: 3620560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich if (_nativename) { 3621560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich _env->ReleaseStringUTFChars(name, _nativename); 3622560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich } 3623560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 36242545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer if (_exception) { 36252545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer jniThrowException(_env, _exceptionType, _exceptionMessage); 36262545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer } 3627cee5198e7199fcbb131ff0d30165fb1d5c0107cfAndy McFadden return (jint)_returnValue; 3628560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich} 3629560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 3630560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glGetVertexAttribfv ( GLuint index, GLenum pname, GLfloat *params ) */ 3631560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void 3632560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glGetVertexAttribfv__II_3FI 3633560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (JNIEnv *_env, jobject _this, jint index, jint pname, jfloatArray params_ref, jint offset) { 3634560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich jint _exception = 0; 36352ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian const char * _exceptionType = NULL; 36362ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian const char * _exceptionMessage = NULL; 3637560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich GLfloat *params_base = (GLfloat *) 0; 3638560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich jint _remaining; 3639560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich GLfloat *params = (GLfloat *) 0; 3640560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 3641560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich if (!params_ref) { 3642560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich _exception = 1; 36432545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionType = "java/lang/IllegalArgumentException"; 36442545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionMessage = "params == null"; 3645560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich goto exit; 3646560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich } 3647560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich if (offset < 0) { 3648560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich _exception = 1; 36492545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionType = "java/lang/IllegalArgumentException"; 36502545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionMessage = "offset < 0"; 3651560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich goto exit; 3652560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich } 3653560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich _remaining = _env->GetArrayLength(params_ref) - offset; 36542ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian int _needed; 36552ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian switch (pname) { 36562ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian#if defined(GL_CURRENT_VERTEX_ATTRIB) 36572ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian case GL_CURRENT_VERTEX_ATTRIB: 36582ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian#endif // defined(GL_CURRENT_VERTEX_ATTRIB) 36592ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian _needed = 4; 36602ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian break; 36612ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian default: 36622ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian _needed = 1; 36632ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian break; 36642ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian } 36652ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian if (_remaining < _needed) { 36662ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian _exception = 1; 36672ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian _exceptionType = "java/lang/IllegalArgumentException"; 36682ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian _exceptionMessage = "length - offset < needed"; 36692ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian goto exit; 36702ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian } 3671560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich params_base = (GLfloat *) 3672560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich _env->GetPrimitiveArrayCritical(params_ref, (jboolean *)0); 3673560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich params = params_base + offset; 3674560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 3675560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich glGetVertexAttribfv( 3676560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLuint)index, 3677560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLenum)pname, 3678560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLfloat *)params 3679560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich ); 3680560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 3681560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichexit: 3682560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich if (params_base) { 3683560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich _env->ReleasePrimitiveArrayCritical(params_ref, params_base, 3684560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich _exception ? JNI_ABORT: 0); 3685560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich } 36862545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer if (_exception) { 36872545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer jniThrowException(_env, _exceptionType, _exceptionMessage); 36882545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer } 3689560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich} 3690560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 3691560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glGetVertexAttribfv ( GLuint index, GLenum pname, GLfloat *params ) */ 3692560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void 3693560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glGetVertexAttribfv__IILjava_nio_FloatBuffer_2 3694560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (JNIEnv *_env, jobject _this, jint index, jint pname, jobject params_buf) { 36952ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian jint _exception = 0; 36962ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian const char * _exceptionType = NULL; 36972ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian const char * _exceptionMessage = NULL; 3698560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich jarray _array = (jarray) 0; 369917045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer jint _bufferOffset = (jint) 0; 3700560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich jint _remaining; 3701560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich GLfloat *params = (GLfloat *) 0; 3702560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 370317045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer params = (GLfloat *)getPointer(_env, params_buf, &_array, &_remaining, &_bufferOffset); 37042ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian int _needed; 37052ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian switch (pname) { 37062ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian#if defined(GL_CURRENT_VERTEX_ATTRIB) 37072ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian case GL_CURRENT_VERTEX_ATTRIB: 37082ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian#endif // defined(GL_CURRENT_VERTEX_ATTRIB) 37092ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian _needed = 4; 37102ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian break; 37112ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian default: 37122ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian _needed = 1; 37132ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian break; 37142ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian } 37152ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian if (_remaining < _needed) { 37162ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian _exception = 1; 37172ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian _exceptionType = "java/lang/IllegalArgumentException"; 37182ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian _exceptionMessage = "remaining() < needed"; 37192ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian goto exit; 37202ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian } 372117045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer if (params == NULL) { 372217045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer char * _paramsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); 372317045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer params = (GLfloat *) (_paramsBase + _bufferOffset); 372417045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer } 3725560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich glGetVertexAttribfv( 3726560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLuint)index, 3727560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLenum)pname, 3728560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLfloat *)params 3729560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich ); 37302ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian 37312ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopianexit: 3732560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich if (_array) { 37332ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian releasePointer(_env, _array, params, _exception ? JNI_FALSE : JNI_TRUE); 37342ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian } 37352ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian if (_exception) { 37362ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian jniThrowException(_env, _exceptionType, _exceptionMessage); 3737560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich } 3738560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich} 3739560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 3740560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glGetVertexAttribiv ( GLuint index, GLenum pname, GLint *params ) */ 3741560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void 3742560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glGetVertexAttribiv__II_3II 3743560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (JNIEnv *_env, jobject _this, jint index, jint pname, jintArray params_ref, jint offset) { 3744560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich jint _exception = 0; 37452ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian const char * _exceptionType = NULL; 37462ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian const char * _exceptionMessage = NULL; 3747560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich GLint *params_base = (GLint *) 0; 3748560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich jint _remaining; 3749560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich GLint *params = (GLint *) 0; 3750560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 3751560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich if (!params_ref) { 3752560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich _exception = 1; 37532545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionType = "java/lang/IllegalArgumentException"; 37542545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionMessage = "params == null"; 3755560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich goto exit; 3756560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich } 3757560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich if (offset < 0) { 3758560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich _exception = 1; 37592545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionType = "java/lang/IllegalArgumentException"; 37602545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionMessage = "offset < 0"; 3761560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich goto exit; 3762560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich } 3763560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich _remaining = _env->GetArrayLength(params_ref) - offset; 37642ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian int _needed; 37652ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian switch (pname) { 37662ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian#if defined(GL_CURRENT_VERTEX_ATTRIB) 37672ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian case GL_CURRENT_VERTEX_ATTRIB: 37682ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian#endif // defined(GL_CURRENT_VERTEX_ATTRIB) 37692ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian _needed = 4; 37702ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian break; 37712ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian default: 37722ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian _needed = 1; 37732ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian break; 37742ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian } 37752ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian if (_remaining < _needed) { 37762ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian _exception = 1; 37772ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian _exceptionType = "java/lang/IllegalArgumentException"; 37782ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian _exceptionMessage = "length - offset < needed"; 37792ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian goto exit; 37802ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian } 3781560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich params_base = (GLint *) 3782560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich _env->GetPrimitiveArrayCritical(params_ref, (jboolean *)0); 3783560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich params = params_base + offset; 3784560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 3785560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich glGetVertexAttribiv( 3786560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLuint)index, 3787560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLenum)pname, 3788560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLint *)params 3789560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich ); 3790560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 3791560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichexit: 3792560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich if (params_base) { 3793560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich _env->ReleasePrimitiveArrayCritical(params_ref, params_base, 3794560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich _exception ? JNI_ABORT: 0); 3795560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich } 37962545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer if (_exception) { 37972545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer jniThrowException(_env, _exceptionType, _exceptionMessage); 37982545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer } 3799560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich} 3800560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 3801560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glGetVertexAttribiv ( GLuint index, GLenum pname, GLint *params ) */ 3802560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void 3803560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glGetVertexAttribiv__IILjava_nio_IntBuffer_2 3804560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (JNIEnv *_env, jobject _this, jint index, jint pname, jobject params_buf) { 38052ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian jint _exception = 0; 38062ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian const char * _exceptionType = NULL; 38072ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian const char * _exceptionMessage = NULL; 3808560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich jarray _array = (jarray) 0; 380917045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer jint _bufferOffset = (jint) 0; 3810560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich jint _remaining; 3811560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich GLint *params = (GLint *) 0; 3812560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 381317045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer params = (GLint *)getPointer(_env, params_buf, &_array, &_remaining, &_bufferOffset); 38142ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian int _needed; 38152ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian switch (pname) { 38162ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian#if defined(GL_CURRENT_VERTEX_ATTRIB) 38172ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian case GL_CURRENT_VERTEX_ATTRIB: 38182ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian#endif // defined(GL_CURRENT_VERTEX_ATTRIB) 38192ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian _needed = 4; 38202ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian break; 38212ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian default: 38222ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian _needed = 1; 38232ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian break; 38242ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian } 38252ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian if (_remaining < _needed) { 38262ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian _exception = 1; 38272ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian _exceptionType = "java/lang/IllegalArgumentException"; 38282ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian _exceptionMessage = "remaining() < needed"; 38292ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian goto exit; 38302ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian } 383117045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer if (params == NULL) { 383217045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer char * _paramsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); 383317045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer params = (GLint *) (_paramsBase + _bufferOffset); 383417045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer } 3835560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich glGetVertexAttribiv( 3836560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLuint)index, 3837560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLenum)pname, 3838560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLint *)params 3839560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich ); 38402ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian 38412ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopianexit: 3842560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich if (_array) { 38432ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian releasePointer(_env, _array, params, _exception ? JNI_FALSE : JNI_TRUE); 38442ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian } 38452ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian if (_exception) { 38462ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian jniThrowException(_env, _exceptionType, _exceptionMessage); 3847560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich } 3848560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich} 3849560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 3850560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glHint ( GLenum target, GLenum mode ) */ 3851560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void 3852560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glHint__II 3853560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (JNIEnv *_env, jobject _this, jint target, jint mode) { 3854560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich glHint( 3855560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLenum)target, 3856560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLenum)mode 3857560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich ); 3858560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich} 3859560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 3860560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* GLboolean glIsBuffer ( GLuint buffer ) */ 3861560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic jboolean 3862560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glIsBuffer__I 3863560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (JNIEnv *_env, jobject _this, jint buffer) { 3864560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich GLboolean _returnValue; 3865560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich _returnValue = glIsBuffer( 3866560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLuint)buffer 3867560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich ); 3868cee5198e7199fcbb131ff0d30165fb1d5c0107cfAndy McFadden return (jboolean)_returnValue; 3869560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich} 3870560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 3871560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* GLboolean glIsEnabled ( GLenum cap ) */ 3872560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic jboolean 3873560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glIsEnabled__I 3874560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (JNIEnv *_env, jobject _this, jint cap) { 3875560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich GLboolean _returnValue; 3876560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich _returnValue = glIsEnabled( 3877560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLenum)cap 3878560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich ); 3879cee5198e7199fcbb131ff0d30165fb1d5c0107cfAndy McFadden return (jboolean)_returnValue; 3880560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich} 3881560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 3882560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* GLboolean glIsFramebuffer ( GLuint framebuffer ) */ 3883560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic jboolean 3884560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glIsFramebuffer__I 3885560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (JNIEnv *_env, jobject _this, jint framebuffer) { 3886560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich GLboolean _returnValue; 3887560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich _returnValue = glIsFramebuffer( 3888560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLuint)framebuffer 3889560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich ); 3890cee5198e7199fcbb131ff0d30165fb1d5c0107cfAndy McFadden return (jboolean)_returnValue; 3891560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich} 3892560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 3893560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* GLboolean glIsProgram ( GLuint program ) */ 3894560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic jboolean 3895560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glIsProgram__I 3896560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (JNIEnv *_env, jobject _this, jint program) { 3897560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich GLboolean _returnValue; 3898560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich _returnValue = glIsProgram( 3899560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLuint)program 3900560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich ); 3901cee5198e7199fcbb131ff0d30165fb1d5c0107cfAndy McFadden return (jboolean)_returnValue; 3902560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich} 3903560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 3904560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* GLboolean glIsRenderbuffer ( GLuint renderbuffer ) */ 3905560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic jboolean 3906560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glIsRenderbuffer__I 3907560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (JNIEnv *_env, jobject _this, jint renderbuffer) { 3908560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich GLboolean _returnValue; 3909560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich _returnValue = glIsRenderbuffer( 3910560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLuint)renderbuffer 3911560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich ); 3912cee5198e7199fcbb131ff0d30165fb1d5c0107cfAndy McFadden return (jboolean)_returnValue; 3913560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich} 3914560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 3915560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* GLboolean glIsShader ( GLuint shader ) */ 3916560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic jboolean 3917560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glIsShader__I 3918560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (JNIEnv *_env, jobject _this, jint shader) { 3919560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich GLboolean _returnValue; 3920560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich _returnValue = glIsShader( 3921560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLuint)shader 3922560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich ); 3923cee5198e7199fcbb131ff0d30165fb1d5c0107cfAndy McFadden return (jboolean)_returnValue; 3924560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich} 3925560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 3926560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* GLboolean glIsTexture ( GLuint texture ) */ 3927560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic jboolean 3928560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glIsTexture__I 3929560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (JNIEnv *_env, jobject _this, jint texture) { 3930560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich GLboolean _returnValue; 3931560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich _returnValue = glIsTexture( 3932560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLuint)texture 3933560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich ); 3934cee5198e7199fcbb131ff0d30165fb1d5c0107cfAndy McFadden return (jboolean)_returnValue; 3935560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich} 3936560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 3937560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glLineWidth ( GLfloat width ) */ 3938560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void 3939560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glLineWidth__F 3940560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (JNIEnv *_env, jobject _this, jfloat width) { 3941560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich glLineWidth( 3942560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLfloat)width 3943560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich ); 3944560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich} 3945560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 3946560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glLinkProgram ( GLuint program ) */ 3947560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void 3948560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glLinkProgram__I 3949560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (JNIEnv *_env, jobject _this, jint program) { 3950560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich glLinkProgram( 3951560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLuint)program 3952560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich ); 3953560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich} 3954560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 3955560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glPixelStorei ( GLenum pname, GLint param ) */ 3956560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void 3957560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glPixelStorei__II 3958560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (JNIEnv *_env, jobject _this, jint pname, jint param) { 3959560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich glPixelStorei( 3960560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLenum)pname, 3961560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLint)param 3962560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich ); 3963560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich} 3964560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 3965560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glPolygonOffset ( GLfloat factor, GLfloat units ) */ 3966560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void 3967560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glPolygonOffset__FF 3968560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (JNIEnv *_env, jobject _this, jfloat factor, jfloat units) { 3969560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich glPolygonOffset( 3970560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLfloat)factor, 3971560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLfloat)units 3972560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich ); 3973560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich} 3974560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 3975560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glReadPixels ( GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLvoid *pixels ) */ 3976560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void 3977560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glReadPixels__IIIIIILjava_nio_Buffer_2 3978560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (JNIEnv *_env, jobject _this, jint x, jint y, jint width, jint height, jint format, jint type, jobject pixels_buf) { 3979560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich jarray _array = (jarray) 0; 398017045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer jint _bufferOffset = (jint) 0; 3981560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich jint _remaining; 3982560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich GLvoid *pixels = (GLvoid *) 0; 3983560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 398417045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer pixels = (GLvoid *)getPointer(_env, pixels_buf, &_array, &_remaining, &_bufferOffset); 398517045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer if (pixels == NULL) { 398617045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer char * _pixelsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); 398717045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer pixels = (GLvoid *) (_pixelsBase + _bufferOffset); 398817045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer } 3989560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich glReadPixels( 3990560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLint)x, 3991560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLint)y, 3992560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLsizei)width, 3993560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLsizei)height, 3994560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLenum)format, 3995560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLenum)type, 3996560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLvoid *)pixels 3997560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich ); 3998560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich if (_array) { 39992545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer releasePointer(_env, _array, pixels, JNI_TRUE); 4000560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich } 4001560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich} 4002560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 4003560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glReleaseShaderCompiler ( void ) */ 4004560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void 4005560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glReleaseShaderCompiler__ 4006560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (JNIEnv *_env, jobject _this) { 4007560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich glReleaseShaderCompiler(); 4008560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich} 4009560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 4010560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glRenderbufferStorage ( GLenum target, GLenum internalformat, GLsizei width, GLsizei height ) */ 4011560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void 4012560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glRenderbufferStorage__IIII 4013560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (JNIEnv *_env, jobject _this, jint target, jint internalformat, jint width, jint height) { 4014560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich glRenderbufferStorage( 4015560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLenum)target, 4016560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLenum)internalformat, 4017560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLsizei)width, 4018560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLsizei)height 4019560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich ); 4020560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich} 4021560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 4022560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glSampleCoverage ( GLclampf value, GLboolean invert ) */ 4023560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void 4024560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glSampleCoverage__FZ 4025560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (JNIEnv *_env, jobject _this, jfloat value, jboolean invert) { 4026560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich glSampleCoverage( 4027560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLclampf)value, 4028560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLboolean)invert 4029560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich ); 4030560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich} 4031560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 4032560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glScissor ( GLint x, GLint y, GLsizei width, GLsizei height ) */ 4033560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void 4034560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glScissor__IIII 4035560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (JNIEnv *_env, jobject _this, jint x, jint y, jint width, jint height) { 4036560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich glScissor( 4037560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLint)x, 4038560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLint)y, 4039560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLsizei)width, 4040560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLsizei)height 4041560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich ); 4042560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich} 4043560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 4044560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glShaderBinary ( GLsizei n, const GLuint *shaders, GLenum binaryformat, const GLvoid *binary, GLsizei length ) */ 4045560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void 4046560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glShaderBinary__I_3IIILjava_nio_Buffer_2I 4047560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (JNIEnv *_env, jobject _this, jint n, jintArray shaders_ref, jint offset, jint binaryformat, jobject binary_buf, jint length) { 40482545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer jint _exception = 0; 40492ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian const char * _exceptionType = NULL; 40502ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian const char * _exceptionMessage = NULL; 4051560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich jarray _array = (jarray) 0; 405217045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer jint _bufferOffset = (jint) 0; 4053560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich GLuint *shaders_base = (GLuint *) 0; 4054560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich jint _shadersRemaining; 4055560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich GLuint *shaders = (GLuint *) 0; 4056560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich jint _binaryRemaining; 4057560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich GLvoid *binary = (GLvoid *) 0; 4058560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 4059560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich if (!shaders_ref) { 40602545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exception = 1; 40612545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionType = "java/lang/IllegalArgumentException"; 40622545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionMessage = "shaders == null"; 4063560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich goto exit; 4064560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich } 4065560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich if (offset < 0) { 40662545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exception = 1; 40672545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionType = "java/lang/IllegalArgumentException"; 40682545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionMessage = "offset < 0"; 4069560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich goto exit; 4070560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich } 4071560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich _shadersRemaining = _env->GetArrayLength(shaders_ref) - offset; 4072560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich shaders_base = (GLuint *) 4073560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich _env->GetPrimitiveArrayCritical(shaders_ref, (jboolean *)0); 4074560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich shaders = shaders_base + offset; 4075560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 407617045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer binary = (GLvoid *)getPointer(_env, binary_buf, &_array, &_binaryRemaining, &_bufferOffset); 40772ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian if (_binaryRemaining < length) { 40782ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian _exception = 1; 40792ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian _exceptionType = "java/lang/IllegalArgumentException"; 40802ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian _exceptionMessage = "remaining() < length < needed"; 40812ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian goto exit; 40822ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian } 408317045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer if (binary == NULL) { 408417045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer char * _binaryBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); 408517045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer binary = (GLvoid *) (_binaryBase + _bufferOffset); 408617045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer } 4087560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich glShaderBinary( 4088560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLsizei)n, 4089560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLuint *)shaders, 4090560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLenum)binaryformat, 4091560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLvoid *)binary, 4092560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLsizei)length 4093560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich ); 4094560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 4095560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichexit: 4096560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich if (_array) { 4097560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich releasePointer(_env, _array, binary, JNI_FALSE); 4098560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich } 4099560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich if (shaders_base) { 4100560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich _env->ReleasePrimitiveArrayCritical(shaders_ref, shaders_base, 4101560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich JNI_ABORT); 4102560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich } 41032545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer if (_exception) { 41042545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer jniThrowException(_env, _exceptionType, _exceptionMessage); 41052545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer } 4106560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich} 4107560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 4108560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glShaderBinary ( GLsizei n, const GLuint *shaders, GLenum binaryformat, const GLvoid *binary, GLsizei length ) */ 4109560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void 4110560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glShaderBinary__ILjava_nio_IntBuffer_2ILjava_nio_Buffer_2I 4111560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (JNIEnv *_env, jobject _this, jint n, jobject shaders_buf, jint binaryformat, jobject binary_buf, jint length) { 41122ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian jint _exception = 0; 41132ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian const char * _exceptionType = NULL; 41142ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian const char * _exceptionMessage = NULL; 4115560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich jarray _shadersArray = (jarray) 0; 411617045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer jint _shadersBufferOffset = (jint) 0; 4117560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich jarray _binaryArray = (jarray) 0; 411817045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer jint _binaryBufferOffset = (jint) 0; 4119560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich jint _shadersRemaining; 4120560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich GLuint *shaders = (GLuint *) 0; 4121560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich jint _binaryRemaining; 4122560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich GLvoid *binary = (GLvoid *) 0; 4123560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 412417045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer shaders = (GLuint *)getPointer(_env, shaders_buf, &_shadersArray, &_shadersRemaining, &_shadersBufferOffset); 412517045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer binary = (GLvoid *)getPointer(_env, binary_buf, &_binaryArray, &_binaryRemaining, &_binaryBufferOffset); 41262ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian if (_binaryRemaining < length) { 41272ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian _exception = 1; 41282ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian _exceptionType = "java/lang/IllegalArgumentException"; 41292ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian _exceptionMessage = "remaining() < length < needed"; 41302ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian goto exit; 41312ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian } 413217045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer if (shaders == NULL) { 413317045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer char * _shadersBase = (char *)_env->GetPrimitiveArrayCritical(_shadersArray, (jboolean *) 0); 413417045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer shaders = (GLuint *) (_shadersBase + _shadersBufferOffset); 413517045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer } 413617045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer if (binary == NULL) { 413717045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer char * _binaryBase = (char *)_env->GetPrimitiveArrayCritical(_binaryArray, (jboolean *) 0); 413817045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer binary = (GLvoid *) (_binaryBase + _binaryBufferOffset); 413917045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer } 4140560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich glShaderBinary( 4141560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLsizei)n, 4142560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLuint *)shaders, 4143560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLenum)binaryformat, 4144560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLvoid *)binary, 4145560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLsizei)length 4146560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich ); 41472ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian 41482ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopianexit: 4149560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich if (_binaryArray) { 415017045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer releasePointer(_env, _binaryArray, binary, JNI_FALSE); 415117045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer } 415217045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer if (_shadersArray) { 415317045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer releasePointer(_env, _shadersArray, shaders, JNI_FALSE); 4154560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich } 41552ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian if (_exception) { 41562ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian jniThrowException(_env, _exceptionType, _exceptionMessage); 41572ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian } 4158560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich} 4159560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 4160560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 4161560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glShaderSource ( GLuint shader, GLsizei count, const GLchar ** string, const GLint * length ) */ 4162560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic 4163560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichvoid 4164560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glShaderSource 4165560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (JNIEnv *_env, jobject _this, jint shader, jstring string) { 4166560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 4167560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich if (!string) { 416824ce5fb2cc09d0a14406e7b935f8648c5720d27eElliott Hughes jniThrowException(_env, "java/lang/IllegalArgumentException", "string == null"); 4169560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich return; 4170560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich } 4171560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 4172560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich const char* nativeString = _env->GetStringUTFChars(string, 0); 4173560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich const char* strings[] = {nativeString}; 4174560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich glShaderSource(shader, 1, strings, 0); 4175560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich _env->ReleaseStringUTFChars(string, nativeString); 4176560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich} 4177560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glStencilFunc ( GLenum func, GLint ref, GLuint mask ) */ 4178560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void 4179560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glStencilFunc__III 4180560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (JNIEnv *_env, jobject _this, jint func, jint ref, jint mask) { 4181560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich glStencilFunc( 4182560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLenum)func, 4183560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLint)ref, 4184560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLuint)mask 4185560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich ); 4186560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich} 4187560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 4188560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glStencilFuncSeparate ( GLenum face, GLenum func, GLint ref, GLuint mask ) */ 4189560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void 4190560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glStencilFuncSeparate__IIII 4191560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (JNIEnv *_env, jobject _this, jint face, jint func, jint ref, jint mask) { 4192560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich glStencilFuncSeparate( 4193560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLenum)face, 4194560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLenum)func, 4195560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLint)ref, 4196560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLuint)mask 4197560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich ); 4198560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich} 4199560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 4200560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glStencilMask ( GLuint mask ) */ 4201560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void 4202560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glStencilMask__I 4203560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (JNIEnv *_env, jobject _this, jint mask) { 4204560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich glStencilMask( 4205560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLuint)mask 4206560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich ); 4207560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich} 4208560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 4209560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glStencilMaskSeparate ( GLenum face, GLuint mask ) */ 4210560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void 4211560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glStencilMaskSeparate__II 4212560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (JNIEnv *_env, jobject _this, jint face, jint mask) { 4213560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich glStencilMaskSeparate( 4214560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLenum)face, 4215560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLuint)mask 4216560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich ); 4217560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich} 4218560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 4219560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glStencilOp ( GLenum fail, GLenum zfail, GLenum zpass ) */ 4220560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void 4221560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glStencilOp__III 4222560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (JNIEnv *_env, jobject _this, jint fail, jint zfail, jint zpass) { 4223560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich glStencilOp( 4224560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLenum)fail, 4225560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLenum)zfail, 4226560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLenum)zpass 4227560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich ); 4228560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich} 4229560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 4230560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glStencilOpSeparate ( GLenum face, GLenum fail, GLenum zfail, GLenum zpass ) */ 4231560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void 4232560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glStencilOpSeparate__IIII 4233560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (JNIEnv *_env, jobject _this, jint face, jint fail, jint zfail, jint zpass) { 4234560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich glStencilOpSeparate( 4235560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLenum)face, 4236560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLenum)fail, 4237560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLenum)zfail, 4238560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLenum)zpass 4239560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich ); 4240560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich} 4241560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 4242560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glTexImage2D ( GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const GLvoid *pixels ) */ 4243560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void 4244560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glTexImage2D__IIIIIIIILjava_nio_Buffer_2 4245560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (JNIEnv *_env, jobject _this, jint target, jint level, jint internalformat, jint width, jint height, jint border, jint format, jint type, jobject pixels_buf) { 4246560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich jarray _array = (jarray) 0; 424717045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer jint _bufferOffset = (jint) 0; 4248560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich jint _remaining; 4249560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich GLvoid *pixels = (GLvoid *) 0; 4250560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 4251560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich if (pixels_buf) { 425217045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer pixels = (GLvoid *)getPointer(_env, pixels_buf, &_array, &_remaining, &_bufferOffset); 425317045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer } 425437c9b49ab5eb5a676370fd7081db0967c38e97a6Thomas Tafertshofer if (pixels_buf && pixels == NULL) { 425517045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer char * _pixelsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); 425617045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer pixels = (GLvoid *) (_pixelsBase + _bufferOffset); 4257560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich } 4258560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich glTexImage2D( 4259560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLenum)target, 4260560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLint)level, 4261560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLint)internalformat, 4262560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLsizei)width, 4263560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLsizei)height, 4264560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLint)border, 4265560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLenum)format, 4266560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLenum)type, 4267560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLvoid *)pixels 4268560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich ); 4269560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich if (_array) { 4270560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich releasePointer(_env, _array, pixels, JNI_FALSE); 4271560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich } 4272560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich} 4273560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 4274560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glTexParameterf ( GLenum target, GLenum pname, GLfloat param ) */ 4275560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void 4276560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glTexParameterf__IIF 4277560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (JNIEnv *_env, jobject _this, jint target, jint pname, jfloat param) { 4278560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich glTexParameterf( 4279560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLenum)target, 4280560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLenum)pname, 4281560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLfloat)param 4282560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich ); 4283560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich} 4284560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 4285560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glTexParameterfv ( GLenum target, GLenum pname, const GLfloat *params ) */ 4286560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void 4287560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glTexParameterfv__II_3FI 4288560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (JNIEnv *_env, jobject _this, jint target, jint pname, jfloatArray params_ref, jint offset) { 42892545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer jint _exception = 0; 42902ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian const char * _exceptionType = NULL; 42912ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian const char * _exceptionMessage = NULL; 4292560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich GLfloat *params_base = (GLfloat *) 0; 4293560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich jint _remaining; 4294560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich GLfloat *params = (GLfloat *) 0; 4295560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 4296560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich if (!params_ref) { 42972545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exception = 1; 42982545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionType = "java/lang/IllegalArgumentException"; 42992545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionMessage = "params == null"; 4300560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich goto exit; 4301560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich } 4302560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich if (offset < 0) { 43032545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exception = 1; 43042545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionType = "java/lang/IllegalArgumentException"; 43052545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionMessage = "offset < 0"; 4306560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich goto exit; 4307560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich } 4308560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich _remaining = _env->GetArrayLength(params_ref) - offset; 4309560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich if (_remaining < 1) { 43102545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exception = 1; 43112545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionType = "java/lang/IllegalArgumentException"; 43122545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionMessage = "length - offset < 1 < needed"; 4313560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich goto exit; 4314560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich } 4315560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich params_base = (GLfloat *) 4316560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich _env->GetPrimitiveArrayCritical(params_ref, (jboolean *)0); 4317560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich params = params_base + offset; 4318560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 4319560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich glTexParameterfv( 4320560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLenum)target, 4321560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLenum)pname, 4322560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLfloat *)params 4323560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich ); 4324560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 4325560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichexit: 4326560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich if (params_base) { 4327560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich _env->ReleasePrimitiveArrayCritical(params_ref, params_base, 4328560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich JNI_ABORT); 4329560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich } 43302545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer if (_exception) { 43312545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer jniThrowException(_env, _exceptionType, _exceptionMessage); 43322545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer } 4333560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich} 4334560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 4335560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glTexParameterfv ( GLenum target, GLenum pname, const GLfloat *params ) */ 4336560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void 4337560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glTexParameterfv__IILjava_nio_FloatBuffer_2 4338560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (JNIEnv *_env, jobject _this, jint target, jint pname, jobject params_buf) { 43392545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer jint _exception = 0; 43402ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian const char * _exceptionType = NULL; 43412ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian const char * _exceptionMessage = NULL; 4342560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich jarray _array = (jarray) 0; 434317045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer jint _bufferOffset = (jint) 0; 4344560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich jint _remaining; 4345560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich GLfloat *params = (GLfloat *) 0; 4346560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 434717045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer params = (GLfloat *)getPointer(_env, params_buf, &_array, &_remaining, &_bufferOffset); 4348560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich if (_remaining < 1) { 43492545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exception = 1; 43502545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionType = "java/lang/IllegalArgumentException"; 43512545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionMessage = "remaining() < 1 < needed"; 4352560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich goto exit; 4353560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich } 435417045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer if (params == NULL) { 435517045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer char * _paramsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); 435617045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer params = (GLfloat *) (_paramsBase + _bufferOffset); 435717045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer } 4358560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich glTexParameterfv( 4359560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLenum)target, 4360560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLenum)pname, 4361560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLfloat *)params 4362560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich ); 4363560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 4364560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichexit: 4365560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich if (_array) { 4366560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich releasePointer(_env, _array, params, JNI_FALSE); 4367560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich } 43682545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer if (_exception) { 43692545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer jniThrowException(_env, _exceptionType, _exceptionMessage); 43702545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer } 4371560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich} 4372560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 4373560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glTexParameteri ( GLenum target, GLenum pname, GLint param ) */ 4374560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void 4375560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glTexParameteri__III 4376560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (JNIEnv *_env, jobject _this, jint target, jint pname, jint param) { 4377560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich glTexParameteri( 4378560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLenum)target, 4379560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLenum)pname, 4380560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLint)param 4381560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich ); 4382560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich} 4383560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 4384560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glTexParameteriv ( GLenum target, GLenum pname, const GLint *params ) */ 4385560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void 4386560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glTexParameteriv__II_3II 4387560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (JNIEnv *_env, jobject _this, jint target, jint pname, jintArray params_ref, jint offset) { 43882545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer jint _exception = 0; 43892ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian const char * _exceptionType = NULL; 43902ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian const char * _exceptionMessage = NULL; 4391560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich GLint *params_base = (GLint *) 0; 4392560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich jint _remaining; 4393560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich GLint *params = (GLint *) 0; 4394560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 4395560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich if (!params_ref) { 43962545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exception = 1; 43972545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionType = "java/lang/IllegalArgumentException"; 43982545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionMessage = "params == null"; 4399560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich goto exit; 4400560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich } 4401560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich if (offset < 0) { 44022545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exception = 1; 44032545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionType = "java/lang/IllegalArgumentException"; 44042545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionMessage = "offset < 0"; 4405560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich goto exit; 4406560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich } 4407560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich _remaining = _env->GetArrayLength(params_ref) - offset; 4408560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich if (_remaining < 1) { 44092545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exception = 1; 44102545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionType = "java/lang/IllegalArgumentException"; 44112545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionMessage = "length - offset < 1 < needed"; 4412560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich goto exit; 4413560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich } 4414560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich params_base = (GLint *) 4415560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich _env->GetPrimitiveArrayCritical(params_ref, (jboolean *)0); 4416560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich params = params_base + offset; 4417560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 4418560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich glTexParameteriv( 4419560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLenum)target, 4420560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLenum)pname, 4421560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLint *)params 4422560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich ); 4423560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 4424560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichexit: 4425560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich if (params_base) { 4426560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich _env->ReleasePrimitiveArrayCritical(params_ref, params_base, 4427560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich JNI_ABORT); 4428560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich } 44292545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer if (_exception) { 44302545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer jniThrowException(_env, _exceptionType, _exceptionMessage); 44312545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer } 4432560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich} 4433560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 4434560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glTexParameteriv ( GLenum target, GLenum pname, const GLint *params ) */ 4435560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void 4436560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glTexParameteriv__IILjava_nio_IntBuffer_2 4437560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (JNIEnv *_env, jobject _this, jint target, jint pname, jobject params_buf) { 44382545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer jint _exception = 0; 44392ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian const char * _exceptionType = NULL; 44402ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian const char * _exceptionMessage = NULL; 4441560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich jarray _array = (jarray) 0; 444217045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer jint _bufferOffset = (jint) 0; 4443560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich jint _remaining; 4444560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich GLint *params = (GLint *) 0; 4445560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 444617045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer params = (GLint *)getPointer(_env, params_buf, &_array, &_remaining, &_bufferOffset); 4447560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich if (_remaining < 1) { 44482545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exception = 1; 44492545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionType = "java/lang/IllegalArgumentException"; 44502545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionMessage = "remaining() < 1 < needed"; 4451560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich goto exit; 4452560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich } 445317045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer if (params == NULL) { 445417045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer char * _paramsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); 445517045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer params = (GLint *) (_paramsBase + _bufferOffset); 445617045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer } 4457560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich glTexParameteriv( 4458560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLenum)target, 4459560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLenum)pname, 4460560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLint *)params 4461560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich ); 4462560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 4463560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichexit: 4464560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich if (_array) { 4465560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich releasePointer(_env, _array, params, JNI_FALSE); 4466560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich } 44672545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer if (_exception) { 44682545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer jniThrowException(_env, _exceptionType, _exceptionMessage); 44692545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer } 4470560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich} 4471560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 4472560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glTexSubImage2D ( GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels ) */ 4473560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void 4474560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glTexSubImage2D__IIIIIIIILjava_nio_Buffer_2 4475560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (JNIEnv *_env, jobject _this, jint target, jint level, jint xoffset, jint yoffset, jint width, jint height, jint format, jint type, jobject pixels_buf) { 4476560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich jarray _array = (jarray) 0; 447717045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer jint _bufferOffset = (jint) 0; 4478560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich jint _remaining; 4479560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich GLvoid *pixels = (GLvoid *) 0; 4480560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 4481560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich if (pixels_buf) { 448217045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer pixels = (GLvoid *)getPointer(_env, pixels_buf, &_array, &_remaining, &_bufferOffset); 448317045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer } 448437c9b49ab5eb5a676370fd7081db0967c38e97a6Thomas Tafertshofer if (pixels_buf && pixels == NULL) { 448517045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer char * _pixelsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); 448617045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer pixels = (GLvoid *) (_pixelsBase + _bufferOffset); 4487560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich } 4488560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich glTexSubImage2D( 4489560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLenum)target, 4490560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLint)level, 4491560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLint)xoffset, 4492560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLint)yoffset, 4493560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLsizei)width, 4494560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLsizei)height, 4495560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLenum)format, 4496560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLenum)type, 4497560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLvoid *)pixels 4498560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich ); 4499560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich if (_array) { 4500560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich releasePointer(_env, _array, pixels, JNI_FALSE); 4501560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich } 4502560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich} 4503560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 4504560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glUniform1f ( GLint location, GLfloat x ) */ 4505560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void 4506560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glUniform1f__IF 4507560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (JNIEnv *_env, jobject _this, jint location, jfloat x) { 4508560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich glUniform1f( 4509560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLint)location, 4510560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLfloat)x 4511560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich ); 4512560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich} 4513560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 4514560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glUniform1fv ( GLint location, GLsizei count, const GLfloat *v ) */ 4515560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void 4516560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glUniform1fv__II_3FI 4517560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (JNIEnv *_env, jobject _this, jint location, jint count, jfloatArray v_ref, jint offset) { 45182545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer jint _exception = 0; 45192ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian const char * _exceptionType = NULL; 45202ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian const char * _exceptionMessage = NULL; 4521560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich GLfloat *v_base = (GLfloat *) 0; 4522560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich jint _remaining; 4523560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich GLfloat *v = (GLfloat *) 0; 4524560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 4525560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich if (!v_ref) { 45262545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exception = 1; 45272545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionType = "java/lang/IllegalArgumentException"; 45282545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionMessage = "v == null"; 4529560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich goto exit; 4530560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich } 4531560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich if (offset < 0) { 45322545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exception = 1; 45332545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionType = "java/lang/IllegalArgumentException"; 45342545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionMessage = "offset < 0"; 4535560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich goto exit; 4536560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich } 4537560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich _remaining = _env->GetArrayLength(v_ref) - offset; 45382ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian if (_remaining < count) { 45392ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian _exception = 1; 45402ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian _exceptionType = "java/lang/IllegalArgumentException"; 45412ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian _exceptionMessage = "length - offset < count < needed"; 45422ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian goto exit; 45432ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian } 4544560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich v_base = (GLfloat *) 4545560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich _env->GetPrimitiveArrayCritical(v_ref, (jboolean *)0); 4546560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich v = v_base + offset; 4547560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 4548560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich glUniform1fv( 4549560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLint)location, 4550560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLsizei)count, 4551560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLfloat *)v 4552560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich ); 4553560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 4554560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichexit: 4555560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich if (v_base) { 4556560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich _env->ReleasePrimitiveArrayCritical(v_ref, v_base, 4557560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich JNI_ABORT); 4558560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich } 45592545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer if (_exception) { 45602545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer jniThrowException(_env, _exceptionType, _exceptionMessage); 45612545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer } 4562560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich} 4563560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 4564560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glUniform1fv ( GLint location, GLsizei count, const GLfloat *v ) */ 4565560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void 4566560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glUniform1fv__IILjava_nio_FloatBuffer_2 4567560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (JNIEnv *_env, jobject _this, jint location, jint count, jobject v_buf) { 45682ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian jint _exception = 0; 45692ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian const char * _exceptionType = NULL; 45702ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian const char * _exceptionMessage = NULL; 4571560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich jarray _array = (jarray) 0; 457217045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer jint _bufferOffset = (jint) 0; 4573560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich jint _remaining; 4574560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich GLfloat *v = (GLfloat *) 0; 4575560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 457617045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer v = (GLfloat *)getPointer(_env, v_buf, &_array, &_remaining, &_bufferOffset); 45772ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian if (_remaining < count) { 45782ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian _exception = 1; 45792ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian _exceptionType = "java/lang/IllegalArgumentException"; 45802ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian _exceptionMessage = "remaining() < count < needed"; 45812ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian goto exit; 45822ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian } 458317045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer if (v == NULL) { 458417045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer char * _vBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); 458517045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer v = (GLfloat *) (_vBase + _bufferOffset); 458617045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer } 4587560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich glUniform1fv( 4588560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLint)location, 4589560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLsizei)count, 4590560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLfloat *)v 4591560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich ); 45922ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian 45932ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopianexit: 4594560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich if (_array) { 4595560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich releasePointer(_env, _array, v, JNI_FALSE); 4596560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich } 45972ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian if (_exception) { 45982ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian jniThrowException(_env, _exceptionType, _exceptionMessage); 45992ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian } 4600560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich} 4601560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 4602560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glUniform1i ( GLint location, GLint x ) */ 4603560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void 4604560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glUniform1i__II 4605560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (JNIEnv *_env, jobject _this, jint location, jint x) { 4606560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich glUniform1i( 4607560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLint)location, 4608560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLint)x 4609560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich ); 4610560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich} 4611560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 4612560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glUniform1iv ( GLint location, GLsizei count, const GLint *v ) */ 4613560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void 4614560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glUniform1iv__II_3II 4615560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (JNIEnv *_env, jobject _this, jint location, jint count, jintArray v_ref, jint offset) { 46162545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer jint _exception = 0; 46172ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian const char * _exceptionType = NULL; 46182ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian const char * _exceptionMessage = NULL; 4619560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich GLint *v_base = (GLint *) 0; 4620560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich jint _remaining; 4621560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich GLint *v = (GLint *) 0; 4622560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 4623560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich if (!v_ref) { 46242545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exception = 1; 46252545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionType = "java/lang/IllegalArgumentException"; 46262545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionMessage = "v == null"; 4627560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich goto exit; 4628560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich } 4629560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich if (offset < 0) { 46302545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exception = 1; 46312545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionType = "java/lang/IllegalArgumentException"; 46322545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionMessage = "offset < 0"; 4633560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich goto exit; 4634560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich } 4635560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich _remaining = _env->GetArrayLength(v_ref) - offset; 46362ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian if (_remaining < count) { 46372ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian _exception = 1; 46382ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian _exceptionType = "java/lang/IllegalArgumentException"; 46392ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian _exceptionMessage = "length - offset < count < needed"; 46402ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian goto exit; 46412ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian } 4642560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich v_base = (GLint *) 4643560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich _env->GetPrimitiveArrayCritical(v_ref, (jboolean *)0); 4644560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich v = v_base + offset; 4645560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 4646560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich glUniform1iv( 4647560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLint)location, 4648560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLsizei)count, 4649560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLint *)v 4650560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich ); 4651560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 4652560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichexit: 4653560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich if (v_base) { 4654560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich _env->ReleasePrimitiveArrayCritical(v_ref, v_base, 4655560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich JNI_ABORT); 4656560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich } 46572545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer if (_exception) { 46582545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer jniThrowException(_env, _exceptionType, _exceptionMessage); 46592545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer } 4660560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich} 4661560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 4662560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glUniform1iv ( GLint location, GLsizei count, const GLint *v ) */ 4663560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void 4664560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glUniform1iv__IILjava_nio_IntBuffer_2 4665560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (JNIEnv *_env, jobject _this, jint location, jint count, jobject v_buf) { 46662ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian jint _exception = 0; 46672ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian const char * _exceptionType = NULL; 46682ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian const char * _exceptionMessage = NULL; 4669560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich jarray _array = (jarray) 0; 467017045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer jint _bufferOffset = (jint) 0; 4671560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich jint _remaining; 4672560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich GLint *v = (GLint *) 0; 4673560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 467417045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer v = (GLint *)getPointer(_env, v_buf, &_array, &_remaining, &_bufferOffset); 46752ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian if (_remaining < count) { 46762ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian _exception = 1; 46772ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian _exceptionType = "java/lang/IllegalArgumentException"; 46782ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian _exceptionMessage = "remaining() < count < needed"; 46792ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian goto exit; 46802ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian } 468117045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer if (v == NULL) { 468217045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer char * _vBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); 468317045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer v = (GLint *) (_vBase + _bufferOffset); 468417045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer } 4685560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich glUniform1iv( 4686560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLint)location, 4687560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLsizei)count, 4688560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLint *)v 4689560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich ); 46902ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian 46912ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopianexit: 4692560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich if (_array) { 4693560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich releasePointer(_env, _array, v, JNI_FALSE); 4694560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich } 46952ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian if (_exception) { 46962ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian jniThrowException(_env, _exceptionType, _exceptionMessage); 46972ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian } 4698560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich} 4699560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 4700560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glUniform2f ( GLint location, GLfloat x, GLfloat y ) */ 4701560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void 4702560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glUniform2f__IFF 4703560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (JNIEnv *_env, jobject _this, jint location, jfloat x, jfloat y) { 4704560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich glUniform2f( 4705560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLint)location, 4706560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLfloat)x, 4707560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLfloat)y 4708560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich ); 4709560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich} 4710560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 4711560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glUniform2fv ( GLint location, GLsizei count, const GLfloat *v ) */ 4712560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void 4713560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glUniform2fv__II_3FI 4714560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (JNIEnv *_env, jobject _this, jint location, jint count, jfloatArray v_ref, jint offset) { 47152545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer jint _exception = 0; 47162ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian const char * _exceptionType = NULL; 47172ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian const char * _exceptionMessage = NULL; 4718560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich GLfloat *v_base = (GLfloat *) 0; 4719560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich jint _remaining; 4720560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich GLfloat *v = (GLfloat *) 0; 4721560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 4722560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich if (!v_ref) { 47232545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exception = 1; 47242545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionType = "java/lang/IllegalArgumentException"; 47252545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionMessage = "v == null"; 4726560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich goto exit; 4727560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich } 4728560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich if (offset < 0) { 47292545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exception = 1; 47302545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionType = "java/lang/IllegalArgumentException"; 47312545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionMessage = "offset < 0"; 4732560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich goto exit; 4733560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich } 4734560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich _remaining = _env->GetArrayLength(v_ref) - offset; 47352ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian if (_remaining < count*2) { 47362ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian _exception = 1; 47372ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian _exceptionType = "java/lang/IllegalArgumentException"; 47382ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian _exceptionMessage = "length - offset < count*2 < needed"; 47392ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian goto exit; 47402ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian } 4741560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich v_base = (GLfloat *) 4742560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich _env->GetPrimitiveArrayCritical(v_ref, (jboolean *)0); 4743560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich v = v_base + offset; 4744560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 4745560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich glUniform2fv( 4746560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLint)location, 4747560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLsizei)count, 4748560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLfloat *)v 4749560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich ); 4750560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 4751560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichexit: 4752560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich if (v_base) { 4753560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich _env->ReleasePrimitiveArrayCritical(v_ref, v_base, 4754560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich JNI_ABORT); 4755560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich } 47562545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer if (_exception) { 47572545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer jniThrowException(_env, _exceptionType, _exceptionMessage); 47582545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer } 4759560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich} 4760560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 4761560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glUniform2fv ( GLint location, GLsizei count, const GLfloat *v ) */ 4762560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void 4763560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glUniform2fv__IILjava_nio_FloatBuffer_2 4764560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (JNIEnv *_env, jobject _this, jint location, jint count, jobject v_buf) { 47652ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian jint _exception = 0; 47662ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian const char * _exceptionType = NULL; 47672ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian const char * _exceptionMessage = NULL; 4768560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich jarray _array = (jarray) 0; 476917045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer jint _bufferOffset = (jint) 0; 4770560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich jint _remaining; 4771560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich GLfloat *v = (GLfloat *) 0; 4772560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 477317045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer v = (GLfloat *)getPointer(_env, v_buf, &_array, &_remaining, &_bufferOffset); 47742ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian if (_remaining < count*2) { 47752ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian _exception = 1; 47762ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian _exceptionType = "java/lang/IllegalArgumentException"; 47772ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian _exceptionMessage = "remaining() < count*2 < needed"; 47782ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian goto exit; 47792ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian } 478017045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer if (v == NULL) { 478117045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer char * _vBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); 478217045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer v = (GLfloat *) (_vBase + _bufferOffset); 478317045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer } 4784560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich glUniform2fv( 4785560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLint)location, 4786560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLsizei)count, 4787560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLfloat *)v 4788560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich ); 47892ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian 47902ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopianexit: 4791560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich if (_array) { 4792560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich releasePointer(_env, _array, v, JNI_FALSE); 4793560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich } 47942ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian if (_exception) { 47952ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian jniThrowException(_env, _exceptionType, _exceptionMessage); 47962ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian } 4797560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich} 4798560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 4799560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glUniform2i ( GLint location, GLint x, GLint y ) */ 4800560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void 4801560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glUniform2i__III 4802560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (JNIEnv *_env, jobject _this, jint location, jint x, jint y) { 4803560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich glUniform2i( 4804560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLint)location, 4805560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLint)x, 4806560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLint)y 4807560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich ); 4808560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich} 4809560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 4810560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glUniform2iv ( GLint location, GLsizei count, const GLint *v ) */ 4811560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void 4812560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glUniform2iv__II_3II 4813560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (JNIEnv *_env, jobject _this, jint location, jint count, jintArray v_ref, jint offset) { 48142545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer jint _exception = 0; 48152ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian const char * _exceptionType = NULL; 48162ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian const char * _exceptionMessage = NULL; 4817560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich GLint *v_base = (GLint *) 0; 4818560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich jint _remaining; 4819560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich GLint *v = (GLint *) 0; 4820560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 4821560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich if (!v_ref) { 48222545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exception = 1; 48232545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionType = "java/lang/IllegalArgumentException"; 48242545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionMessage = "v == null"; 4825560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich goto exit; 4826560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich } 4827560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich if (offset < 0) { 48282545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exception = 1; 48292545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionType = "java/lang/IllegalArgumentException"; 48302545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionMessage = "offset < 0"; 4831560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich goto exit; 4832560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich } 4833560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich _remaining = _env->GetArrayLength(v_ref) - offset; 48342ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian if (_remaining < count*2) { 48352ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian _exception = 1; 48362ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian _exceptionType = "java/lang/IllegalArgumentException"; 48372ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian _exceptionMessage = "length - offset < count*2 < needed"; 48382ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian goto exit; 48392ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian } 4840560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich v_base = (GLint *) 4841560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich _env->GetPrimitiveArrayCritical(v_ref, (jboolean *)0); 4842560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich v = v_base + offset; 4843560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 4844560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich glUniform2iv( 4845560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLint)location, 4846560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLsizei)count, 4847560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLint *)v 4848560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich ); 4849560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 4850560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichexit: 4851560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich if (v_base) { 4852560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich _env->ReleasePrimitiveArrayCritical(v_ref, v_base, 4853560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich JNI_ABORT); 4854560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich } 48552545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer if (_exception) { 48562545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer jniThrowException(_env, _exceptionType, _exceptionMessage); 48572545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer } 4858560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich} 4859560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 4860560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glUniform2iv ( GLint location, GLsizei count, const GLint *v ) */ 4861560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void 4862560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glUniform2iv__IILjava_nio_IntBuffer_2 4863560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (JNIEnv *_env, jobject _this, jint location, jint count, jobject v_buf) { 48642ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian jint _exception = 0; 48652ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian const char * _exceptionType = NULL; 48662ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian const char * _exceptionMessage = NULL; 4867560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich jarray _array = (jarray) 0; 486817045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer jint _bufferOffset = (jint) 0; 4869560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich jint _remaining; 4870560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich GLint *v = (GLint *) 0; 4871560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 487217045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer v = (GLint *)getPointer(_env, v_buf, &_array, &_remaining, &_bufferOffset); 48732ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian if (_remaining < count*2) { 48742ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian _exception = 1; 48752ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian _exceptionType = "java/lang/IllegalArgumentException"; 48762ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian _exceptionMessage = "remaining() < count*2 < needed"; 48772ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian goto exit; 48782ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian } 487917045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer if (v == NULL) { 488017045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer char * _vBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); 488117045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer v = (GLint *) (_vBase + _bufferOffset); 488217045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer } 4883560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich glUniform2iv( 4884560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLint)location, 4885560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLsizei)count, 4886560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLint *)v 4887560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich ); 48882ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian 48892ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopianexit: 4890560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich if (_array) { 4891560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich releasePointer(_env, _array, v, JNI_FALSE); 4892560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich } 48932ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian if (_exception) { 48942ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian jniThrowException(_env, _exceptionType, _exceptionMessage); 48952ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian } 4896560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich} 4897560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 4898560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glUniform3f ( GLint location, GLfloat x, GLfloat y, GLfloat z ) */ 4899560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void 4900560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glUniform3f__IFFF 4901560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (JNIEnv *_env, jobject _this, jint location, jfloat x, jfloat y, jfloat z) { 4902560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich glUniform3f( 4903560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLint)location, 4904560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLfloat)x, 4905560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLfloat)y, 4906560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLfloat)z 4907560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich ); 4908560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich} 4909560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 4910560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glUniform3fv ( GLint location, GLsizei count, const GLfloat *v ) */ 4911560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void 4912560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glUniform3fv__II_3FI 4913560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (JNIEnv *_env, jobject _this, jint location, jint count, jfloatArray v_ref, jint offset) { 49142545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer jint _exception = 0; 49152ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian const char * _exceptionType = NULL; 49162ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian const char * _exceptionMessage = NULL; 4917560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich GLfloat *v_base = (GLfloat *) 0; 4918560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich jint _remaining; 4919560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich GLfloat *v = (GLfloat *) 0; 4920560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 4921560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich if (!v_ref) { 49222545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exception = 1; 49232545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionType = "java/lang/IllegalArgumentException"; 49242545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionMessage = "v == null"; 4925560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich goto exit; 4926560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich } 4927560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich if (offset < 0) { 49282545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exception = 1; 49292545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionType = "java/lang/IllegalArgumentException"; 49302545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionMessage = "offset < 0"; 4931560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich goto exit; 4932560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich } 4933560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich _remaining = _env->GetArrayLength(v_ref) - offset; 49342ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian if (_remaining < count*3) { 49352ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian _exception = 1; 49362ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian _exceptionType = "java/lang/IllegalArgumentException"; 49372ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian _exceptionMessage = "length - offset < count*3 < needed"; 49382ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian goto exit; 49392ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian } 4940560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich v_base = (GLfloat *) 4941560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich _env->GetPrimitiveArrayCritical(v_ref, (jboolean *)0); 4942560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich v = v_base + offset; 4943560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 4944560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich glUniform3fv( 4945560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLint)location, 4946560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLsizei)count, 4947560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLfloat *)v 4948560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich ); 4949560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 4950560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichexit: 4951560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich if (v_base) { 4952560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich _env->ReleasePrimitiveArrayCritical(v_ref, v_base, 4953560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich JNI_ABORT); 4954560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich } 49552545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer if (_exception) { 49562545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer jniThrowException(_env, _exceptionType, _exceptionMessage); 49572545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer } 4958560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich} 4959560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 4960560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glUniform3fv ( GLint location, GLsizei count, const GLfloat *v ) */ 4961560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void 4962560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glUniform3fv__IILjava_nio_FloatBuffer_2 4963560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (JNIEnv *_env, jobject _this, jint location, jint count, jobject v_buf) { 49642ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian jint _exception = 0; 49652ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian const char * _exceptionType = NULL; 49662ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian const char * _exceptionMessage = NULL; 4967560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich jarray _array = (jarray) 0; 496817045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer jint _bufferOffset = (jint) 0; 4969560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich jint _remaining; 4970560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich GLfloat *v = (GLfloat *) 0; 4971560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 497217045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer v = (GLfloat *)getPointer(_env, v_buf, &_array, &_remaining, &_bufferOffset); 49732ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian if (_remaining < count*3) { 49742ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian _exception = 1; 49752ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian _exceptionType = "java/lang/IllegalArgumentException"; 49762ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian _exceptionMessage = "remaining() < count*3 < needed"; 49772ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian goto exit; 49782ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian } 497917045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer if (v == NULL) { 498017045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer char * _vBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); 498117045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer v = (GLfloat *) (_vBase + _bufferOffset); 498217045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer } 4983560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich glUniform3fv( 4984560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLint)location, 4985560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLsizei)count, 4986560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLfloat *)v 4987560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich ); 49882ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian 49892ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopianexit: 4990560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich if (_array) { 4991560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich releasePointer(_env, _array, v, JNI_FALSE); 4992560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich } 49932ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian if (_exception) { 49942ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian jniThrowException(_env, _exceptionType, _exceptionMessage); 49952ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian } 4996560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich} 4997560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 4998560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glUniform3i ( GLint location, GLint x, GLint y, GLint z ) */ 4999560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void 5000560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glUniform3i__IIII 5001560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (JNIEnv *_env, jobject _this, jint location, jint x, jint y, jint z) { 5002560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich glUniform3i( 5003560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLint)location, 5004560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLint)x, 5005560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLint)y, 5006560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLint)z 5007560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich ); 5008560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich} 5009560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 5010560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glUniform3iv ( GLint location, GLsizei count, const GLint *v ) */ 5011560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void 5012560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glUniform3iv__II_3II 5013560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (JNIEnv *_env, jobject _this, jint location, jint count, jintArray v_ref, jint offset) { 50142545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer jint _exception = 0; 50152ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian const char * _exceptionType = NULL; 50162ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian const char * _exceptionMessage = NULL; 5017560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich GLint *v_base = (GLint *) 0; 5018560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich jint _remaining; 5019560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich GLint *v = (GLint *) 0; 5020560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 5021560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich if (!v_ref) { 50222545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exception = 1; 50232545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionType = "java/lang/IllegalArgumentException"; 50242545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionMessage = "v == null"; 5025560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich goto exit; 5026560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich } 5027560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich if (offset < 0) { 50282545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exception = 1; 50292545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionType = "java/lang/IllegalArgumentException"; 50302545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionMessage = "offset < 0"; 5031560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich goto exit; 5032560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich } 5033560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich _remaining = _env->GetArrayLength(v_ref) - offset; 50342ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian if (_remaining < count*3) { 50352ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian _exception = 1; 50362ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian _exceptionType = "java/lang/IllegalArgumentException"; 50372ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian _exceptionMessage = "length - offset < count*3 < needed"; 50382ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian goto exit; 50392ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian } 5040560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich v_base = (GLint *) 5041560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich _env->GetPrimitiveArrayCritical(v_ref, (jboolean *)0); 5042560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich v = v_base + offset; 5043560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 5044560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich glUniform3iv( 5045560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLint)location, 5046560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLsizei)count, 5047560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLint *)v 5048560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich ); 5049560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 5050560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichexit: 5051560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich if (v_base) { 5052560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich _env->ReleasePrimitiveArrayCritical(v_ref, v_base, 5053560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich JNI_ABORT); 5054560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich } 50552545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer if (_exception) { 50562545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer jniThrowException(_env, _exceptionType, _exceptionMessage); 50572545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer } 5058560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich} 5059560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 5060560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glUniform3iv ( GLint location, GLsizei count, const GLint *v ) */ 5061560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void 5062560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glUniform3iv__IILjava_nio_IntBuffer_2 5063560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (JNIEnv *_env, jobject _this, jint location, jint count, jobject v_buf) { 50642ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian jint _exception = 0; 50652ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian const char * _exceptionType = NULL; 50662ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian const char * _exceptionMessage = NULL; 5067560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich jarray _array = (jarray) 0; 506817045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer jint _bufferOffset = (jint) 0; 5069560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich jint _remaining; 5070560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich GLint *v = (GLint *) 0; 5071560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 507217045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer v = (GLint *)getPointer(_env, v_buf, &_array, &_remaining, &_bufferOffset); 50732ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian if (_remaining < count*3) { 50742ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian _exception = 1; 50752ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian _exceptionType = "java/lang/IllegalArgumentException"; 50762ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian _exceptionMessage = "remaining() < count*3 < needed"; 50772ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian goto exit; 50782ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian } 507917045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer if (v == NULL) { 508017045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer char * _vBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); 508117045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer v = (GLint *) (_vBase + _bufferOffset); 508217045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer } 5083560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich glUniform3iv( 5084560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLint)location, 5085560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLsizei)count, 5086560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLint *)v 5087560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich ); 50882ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian 50892ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopianexit: 5090560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich if (_array) { 5091560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich releasePointer(_env, _array, v, JNI_FALSE); 5092560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich } 50932ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian if (_exception) { 50942ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian jniThrowException(_env, _exceptionType, _exceptionMessage); 50952ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian } 5096560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich} 5097560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 5098560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glUniform4f ( GLint location, GLfloat x, GLfloat y, GLfloat z, GLfloat w ) */ 5099560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void 5100560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glUniform4f__IFFFF 5101560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (JNIEnv *_env, jobject _this, jint location, jfloat x, jfloat y, jfloat z, jfloat w) { 5102560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich glUniform4f( 5103560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLint)location, 5104560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLfloat)x, 5105560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLfloat)y, 5106560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLfloat)z, 5107560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLfloat)w 5108560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich ); 5109560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich} 5110560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 5111560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glUniform4fv ( GLint location, GLsizei count, const GLfloat *v ) */ 5112560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void 5113560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glUniform4fv__II_3FI 5114560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (JNIEnv *_env, jobject _this, jint location, jint count, jfloatArray v_ref, jint offset) { 51152545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer jint _exception = 0; 51162ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian const char * _exceptionType = NULL; 51172ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian const char * _exceptionMessage = NULL; 5118560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich GLfloat *v_base = (GLfloat *) 0; 5119560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich jint _remaining; 5120560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich GLfloat *v = (GLfloat *) 0; 5121560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 5122560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich if (!v_ref) { 51232545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exception = 1; 51242545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionType = "java/lang/IllegalArgumentException"; 51252545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionMessage = "v == null"; 5126560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich goto exit; 5127560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich } 5128560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich if (offset < 0) { 51292545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exception = 1; 51302545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionType = "java/lang/IllegalArgumentException"; 51312545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionMessage = "offset < 0"; 5132560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich goto exit; 5133560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich } 5134560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich _remaining = _env->GetArrayLength(v_ref) - offset; 51352ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian if (_remaining < count*4) { 51362ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian _exception = 1; 51372ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian _exceptionType = "java/lang/IllegalArgumentException"; 51382ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian _exceptionMessage = "length - offset < count*4 < needed"; 51392ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian goto exit; 51402ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian } 5141560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich v_base = (GLfloat *) 5142560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich _env->GetPrimitiveArrayCritical(v_ref, (jboolean *)0); 5143560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich v = v_base + offset; 5144560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 5145560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich glUniform4fv( 5146560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLint)location, 5147560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLsizei)count, 5148560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLfloat *)v 5149560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich ); 5150560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 5151560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichexit: 5152560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich if (v_base) { 5153560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich _env->ReleasePrimitiveArrayCritical(v_ref, v_base, 5154560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich JNI_ABORT); 5155560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich } 51562545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer if (_exception) { 51572545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer jniThrowException(_env, _exceptionType, _exceptionMessage); 51582545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer } 5159560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich} 5160560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 5161560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glUniform4fv ( GLint location, GLsizei count, const GLfloat *v ) */ 5162560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void 5163560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glUniform4fv__IILjava_nio_FloatBuffer_2 5164560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (JNIEnv *_env, jobject _this, jint location, jint count, jobject v_buf) { 51652ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian jint _exception = 0; 51662ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian const char * _exceptionType = NULL; 51672ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian const char * _exceptionMessage = NULL; 5168560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich jarray _array = (jarray) 0; 516917045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer jint _bufferOffset = (jint) 0; 5170560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich jint _remaining; 5171560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich GLfloat *v = (GLfloat *) 0; 5172560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 517317045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer v = (GLfloat *)getPointer(_env, v_buf, &_array, &_remaining, &_bufferOffset); 51742ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian if (_remaining < count*4) { 51752ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian _exception = 1; 51762ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian _exceptionType = "java/lang/IllegalArgumentException"; 51772ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian _exceptionMessage = "remaining() < count*4 < needed"; 51782ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian goto exit; 51792ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian } 518017045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer if (v == NULL) { 518117045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer char * _vBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); 518217045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer v = (GLfloat *) (_vBase + _bufferOffset); 518317045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer } 5184560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich glUniform4fv( 5185560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLint)location, 5186560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLsizei)count, 5187560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLfloat *)v 5188560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich ); 51892ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian 51902ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopianexit: 5191560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich if (_array) { 5192560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich releasePointer(_env, _array, v, JNI_FALSE); 5193560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich } 51942ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian if (_exception) { 51952ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian jniThrowException(_env, _exceptionType, _exceptionMessage); 51962ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian } 5197560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich} 5198560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 5199560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glUniform4i ( GLint location, GLint x, GLint y, GLint z, GLint w ) */ 5200560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void 5201560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glUniform4i__IIIII 5202560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (JNIEnv *_env, jobject _this, jint location, jint x, jint y, jint z, jint w) { 5203560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich glUniform4i( 5204560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLint)location, 5205560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLint)x, 5206560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLint)y, 5207560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLint)z, 5208560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLint)w 5209560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich ); 5210560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich} 5211560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 5212560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glUniform4iv ( GLint location, GLsizei count, const GLint *v ) */ 5213560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void 5214560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glUniform4iv__II_3II 5215560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (JNIEnv *_env, jobject _this, jint location, jint count, jintArray v_ref, jint offset) { 52162545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer jint _exception = 0; 52172ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian const char * _exceptionType = NULL; 52182ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian const char * _exceptionMessage = NULL; 5219560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich GLint *v_base = (GLint *) 0; 5220560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich jint _remaining; 5221560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich GLint *v = (GLint *) 0; 5222560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 5223560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich if (!v_ref) { 52242545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exception = 1; 52252545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionType = "java/lang/IllegalArgumentException"; 52262545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionMessage = "v == null"; 5227560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich goto exit; 5228560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich } 5229560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich if (offset < 0) { 52302545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exception = 1; 52312545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionType = "java/lang/IllegalArgumentException"; 52322545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionMessage = "offset < 0"; 5233560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich goto exit; 5234560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich } 5235560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich _remaining = _env->GetArrayLength(v_ref) - offset; 52362ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian if (_remaining < count*4) { 52372ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian _exception = 1; 52382ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian _exceptionType = "java/lang/IllegalArgumentException"; 52392ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian _exceptionMessage = "length - offset < count*4 < needed"; 52402ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian goto exit; 52412ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian } 5242560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich v_base = (GLint *) 5243560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich _env->GetPrimitiveArrayCritical(v_ref, (jboolean *)0); 5244560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich v = v_base + offset; 5245560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 5246560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich glUniform4iv( 5247560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLint)location, 5248560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLsizei)count, 5249560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLint *)v 5250560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich ); 5251560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 5252560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichexit: 5253560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich if (v_base) { 5254560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich _env->ReleasePrimitiveArrayCritical(v_ref, v_base, 5255560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich JNI_ABORT); 5256560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich } 52572545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer if (_exception) { 52582545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer jniThrowException(_env, _exceptionType, _exceptionMessage); 52592545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer } 5260560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich} 5261560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 5262560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glUniform4iv ( GLint location, GLsizei count, const GLint *v ) */ 5263560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void 5264560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glUniform4iv__IILjava_nio_IntBuffer_2 5265560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (JNIEnv *_env, jobject _this, jint location, jint count, jobject v_buf) { 52662ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian jint _exception = 0; 52672ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian const char * _exceptionType = NULL; 52682ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian const char * _exceptionMessage = NULL; 5269560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich jarray _array = (jarray) 0; 527017045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer jint _bufferOffset = (jint) 0; 5271560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich jint _remaining; 5272560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich GLint *v = (GLint *) 0; 5273560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 527417045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer v = (GLint *)getPointer(_env, v_buf, &_array, &_remaining, &_bufferOffset); 52752ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian if (_remaining < count*4) { 52762ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian _exception = 1; 52772ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian _exceptionType = "java/lang/IllegalArgumentException"; 52782ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian _exceptionMessage = "remaining() < count*4 < needed"; 52792ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian goto exit; 52802ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian } 528117045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer if (v == NULL) { 528217045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer char * _vBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); 528317045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer v = (GLint *) (_vBase + _bufferOffset); 528417045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer } 5285560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich glUniform4iv( 5286560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLint)location, 5287560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLsizei)count, 5288560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLint *)v 5289560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich ); 52902ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian 52912ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopianexit: 5292560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich if (_array) { 5293560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich releasePointer(_env, _array, v, JNI_FALSE); 5294560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich } 52952ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian if (_exception) { 52962ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian jniThrowException(_env, _exceptionType, _exceptionMessage); 52972ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian } 5298560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich} 5299560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 5300560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glUniformMatrix2fv ( GLint location, GLsizei count, GLboolean transpose, const GLfloat *value ) */ 5301560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void 5302560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glUniformMatrix2fv__IIZ_3FI 5303560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (JNIEnv *_env, jobject _this, jint location, jint count, jboolean transpose, jfloatArray value_ref, jint offset) { 53042545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer jint _exception = 0; 53052ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian const char * _exceptionType = NULL; 53062ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian const char * _exceptionMessage = NULL; 5307560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich GLfloat *value_base = (GLfloat *) 0; 5308560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich jint _remaining; 5309560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich GLfloat *value = (GLfloat *) 0; 5310560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 5311560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich if (!value_ref) { 53122545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exception = 1; 53132545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionType = "java/lang/IllegalArgumentException"; 53142545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionMessage = "value == null"; 5315560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich goto exit; 5316560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich } 5317560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich if (offset < 0) { 53182545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exception = 1; 53192545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionType = "java/lang/IllegalArgumentException"; 53202545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionMessage = "offset < 0"; 5321560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich goto exit; 5322560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich } 5323560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich _remaining = _env->GetArrayLength(value_ref) - offset; 53242ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian if (_remaining < count*4) { 53252ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian _exception = 1; 53262ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian _exceptionType = "java/lang/IllegalArgumentException"; 53272ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian _exceptionMessage = "length - offset < count*4 < needed"; 53282ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian goto exit; 53292ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian } 5330560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich value_base = (GLfloat *) 5331560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich _env->GetPrimitiveArrayCritical(value_ref, (jboolean *)0); 5332560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich value = value_base + offset; 5333560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 5334560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich glUniformMatrix2fv( 5335560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLint)location, 5336560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLsizei)count, 5337560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLboolean)transpose, 5338560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLfloat *)value 5339560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich ); 5340560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 5341560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichexit: 5342560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich if (value_base) { 5343560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich _env->ReleasePrimitiveArrayCritical(value_ref, value_base, 5344560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich JNI_ABORT); 5345560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich } 53462545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer if (_exception) { 53472545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer jniThrowException(_env, _exceptionType, _exceptionMessage); 53482545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer } 5349560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich} 5350560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 5351560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glUniformMatrix2fv ( GLint location, GLsizei count, GLboolean transpose, const GLfloat *value ) */ 5352560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void 5353560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glUniformMatrix2fv__IIZLjava_nio_FloatBuffer_2 5354560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (JNIEnv *_env, jobject _this, jint location, jint count, jboolean transpose, jobject value_buf) { 53552ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian jint _exception = 0; 53562ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian const char * _exceptionType = NULL; 53572ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian const char * _exceptionMessage = NULL; 5358560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich jarray _array = (jarray) 0; 535917045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer jint _bufferOffset = (jint) 0; 5360560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich jint _remaining; 5361560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich GLfloat *value = (GLfloat *) 0; 5362560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 536317045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer value = (GLfloat *)getPointer(_env, value_buf, &_array, &_remaining, &_bufferOffset); 53642ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian if (_remaining < count*4) { 53652ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian _exception = 1; 53662ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian _exceptionType = "java/lang/IllegalArgumentException"; 53672ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian _exceptionMessage = "remaining() < count*4 < needed"; 53682ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian goto exit; 53692ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian } 537017045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer if (value == NULL) { 537117045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer char * _valueBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); 537217045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer value = (GLfloat *) (_valueBase + _bufferOffset); 537317045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer } 5374560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich glUniformMatrix2fv( 5375560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLint)location, 5376560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLsizei)count, 5377560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLboolean)transpose, 5378560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLfloat *)value 5379560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich ); 53802ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian 53812ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopianexit: 5382560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich if (_array) { 5383560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich releasePointer(_env, _array, value, JNI_FALSE); 5384560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich } 53852ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian if (_exception) { 53862ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian jniThrowException(_env, _exceptionType, _exceptionMessage); 53872ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian } 5388560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich} 5389560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 5390560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glUniformMatrix3fv ( GLint location, GLsizei count, GLboolean transpose, const GLfloat *value ) */ 5391560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void 5392560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glUniformMatrix3fv__IIZ_3FI 5393560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (JNIEnv *_env, jobject _this, jint location, jint count, jboolean transpose, jfloatArray value_ref, jint offset) { 53942545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer jint _exception = 0; 53952ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian const char * _exceptionType = NULL; 53962ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian const char * _exceptionMessage = NULL; 5397560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich GLfloat *value_base = (GLfloat *) 0; 5398560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich jint _remaining; 5399560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich GLfloat *value = (GLfloat *) 0; 5400560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 5401560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich if (!value_ref) { 54022545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exception = 1; 54032545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionType = "java/lang/IllegalArgumentException"; 54042545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionMessage = "value == null"; 5405560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich goto exit; 5406560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich } 5407560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich if (offset < 0) { 54082545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exception = 1; 54092545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionType = "java/lang/IllegalArgumentException"; 54102545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionMessage = "offset < 0"; 5411560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich goto exit; 5412560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich } 5413560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich _remaining = _env->GetArrayLength(value_ref) - offset; 54142ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian if (_remaining < count*9) { 54152ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian _exception = 1; 54162ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian _exceptionType = "java/lang/IllegalArgumentException"; 54172ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian _exceptionMessage = "length - offset < count*9 < needed"; 54182ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian goto exit; 54192ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian } 5420560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich value_base = (GLfloat *) 5421560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich _env->GetPrimitiveArrayCritical(value_ref, (jboolean *)0); 5422560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich value = value_base + offset; 5423560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 5424560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich glUniformMatrix3fv( 5425560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLint)location, 5426560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLsizei)count, 5427560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLboolean)transpose, 5428560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLfloat *)value 5429560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich ); 5430560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 5431560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichexit: 5432560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich if (value_base) { 5433560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich _env->ReleasePrimitiveArrayCritical(value_ref, value_base, 5434560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich JNI_ABORT); 5435560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich } 54362545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer if (_exception) { 54372545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer jniThrowException(_env, _exceptionType, _exceptionMessage); 54382545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer } 5439560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich} 5440560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 5441560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glUniformMatrix3fv ( GLint location, GLsizei count, GLboolean transpose, const GLfloat *value ) */ 5442560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void 5443560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glUniformMatrix3fv__IIZLjava_nio_FloatBuffer_2 5444560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (JNIEnv *_env, jobject _this, jint location, jint count, jboolean transpose, jobject value_buf) { 54452ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian jint _exception = 0; 54462ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian const char * _exceptionType = NULL; 54472ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian const char * _exceptionMessage = NULL; 5448560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich jarray _array = (jarray) 0; 544917045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer jint _bufferOffset = (jint) 0; 5450560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich jint _remaining; 5451560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich GLfloat *value = (GLfloat *) 0; 5452560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 545317045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer value = (GLfloat *)getPointer(_env, value_buf, &_array, &_remaining, &_bufferOffset); 54542ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian if (_remaining < count*9) { 54552ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian _exception = 1; 54562ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian _exceptionType = "java/lang/IllegalArgumentException"; 54572ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian _exceptionMessage = "remaining() < count*9 < needed"; 54582ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian goto exit; 54592ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian } 546017045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer if (value == NULL) { 546117045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer char * _valueBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); 546217045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer value = (GLfloat *) (_valueBase + _bufferOffset); 546317045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer } 5464560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich glUniformMatrix3fv( 5465560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLint)location, 5466560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLsizei)count, 5467560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLboolean)transpose, 5468560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLfloat *)value 5469560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich ); 54702ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian 54712ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopianexit: 5472560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich if (_array) { 5473560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich releasePointer(_env, _array, value, JNI_FALSE); 5474560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich } 54752ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian if (_exception) { 54762ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian jniThrowException(_env, _exceptionType, _exceptionMessage); 54772ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian } 5478560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich} 5479560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 5480560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glUniformMatrix4fv ( GLint location, GLsizei count, GLboolean transpose, const GLfloat *value ) */ 5481560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void 5482560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glUniformMatrix4fv__IIZ_3FI 5483560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (JNIEnv *_env, jobject _this, jint location, jint count, jboolean transpose, jfloatArray value_ref, jint offset) { 54842545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer jint _exception = 0; 54852ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian const char * _exceptionType = NULL; 54862ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian const char * _exceptionMessage = NULL; 5487560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich GLfloat *value_base = (GLfloat *) 0; 5488560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich jint _remaining; 5489560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich GLfloat *value = (GLfloat *) 0; 5490560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 5491560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich if (!value_ref) { 54922545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exception = 1; 54932545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionType = "java/lang/IllegalArgumentException"; 54942545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionMessage = "value == null"; 5495560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich goto exit; 5496560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich } 5497560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich if (offset < 0) { 54982545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exception = 1; 54992545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionType = "java/lang/IllegalArgumentException"; 55002545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionMessage = "offset < 0"; 5501560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich goto exit; 5502560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich } 5503560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich _remaining = _env->GetArrayLength(value_ref) - offset; 55042ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian if (_remaining < count*16) { 55052ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian _exception = 1; 55062ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian _exceptionType = "java/lang/IllegalArgumentException"; 55072ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian _exceptionMessage = "length - offset < count*16 < needed"; 55082ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian goto exit; 55092ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian } 5510560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich value_base = (GLfloat *) 5511560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich _env->GetPrimitiveArrayCritical(value_ref, (jboolean *)0); 5512560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich value = value_base + offset; 5513560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 5514560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich glUniformMatrix4fv( 5515560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLint)location, 5516560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLsizei)count, 5517560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLboolean)transpose, 5518560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLfloat *)value 5519560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich ); 5520560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 5521560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichexit: 5522560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich if (value_base) { 5523560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich _env->ReleasePrimitiveArrayCritical(value_ref, value_base, 5524560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich JNI_ABORT); 5525560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich } 55262545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer if (_exception) { 55272545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer jniThrowException(_env, _exceptionType, _exceptionMessage); 55282545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer } 5529560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich} 5530560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 5531560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glUniformMatrix4fv ( GLint location, GLsizei count, GLboolean transpose, const GLfloat *value ) */ 5532560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void 5533560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glUniformMatrix4fv__IIZLjava_nio_FloatBuffer_2 5534560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (JNIEnv *_env, jobject _this, jint location, jint count, jboolean transpose, jobject value_buf) { 55352ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian jint _exception = 0; 55362ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian const char * _exceptionType = NULL; 55372ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian const char * _exceptionMessage = NULL; 5538560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich jarray _array = (jarray) 0; 553917045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer jint _bufferOffset = (jint) 0; 5540560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich jint _remaining; 5541560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich GLfloat *value = (GLfloat *) 0; 5542560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 554317045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer value = (GLfloat *)getPointer(_env, value_buf, &_array, &_remaining, &_bufferOffset); 55442ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian if (_remaining < count*16) { 55452ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian _exception = 1; 55462ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian _exceptionType = "java/lang/IllegalArgumentException"; 55472ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian _exceptionMessage = "remaining() < count*16 < needed"; 55482ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian goto exit; 55492ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian } 555017045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer if (value == NULL) { 555117045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer char * _valueBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); 555217045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer value = (GLfloat *) (_valueBase + _bufferOffset); 555317045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer } 5554560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich glUniformMatrix4fv( 5555560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLint)location, 5556560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLsizei)count, 5557560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLboolean)transpose, 5558560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLfloat *)value 5559560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich ); 55602ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian 55612ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopianexit: 5562560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich if (_array) { 5563560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich releasePointer(_env, _array, value, JNI_FALSE); 5564560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich } 55652ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian if (_exception) { 55662ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian jniThrowException(_env, _exceptionType, _exceptionMessage); 55672ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian } 5568560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich} 5569560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 5570560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glUseProgram ( GLuint program ) */ 5571560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void 5572560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glUseProgram__I 5573560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (JNIEnv *_env, jobject _this, jint program) { 5574560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich glUseProgram( 5575560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLuint)program 5576560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich ); 5577560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich} 5578560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 5579560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glValidateProgram ( GLuint program ) */ 5580560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void 5581560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glValidateProgram__I 5582560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (JNIEnv *_env, jobject _this, jint program) { 5583560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich glValidateProgram( 5584560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLuint)program 5585560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich ); 5586560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich} 5587560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 5588560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glVertexAttrib1f ( GLuint indx, GLfloat x ) */ 5589560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void 5590560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glVertexAttrib1f__IF 5591560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (JNIEnv *_env, jobject _this, jint indx, jfloat x) { 5592560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich glVertexAttrib1f( 5593560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLuint)indx, 5594560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLfloat)x 5595560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich ); 5596560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich} 5597560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 5598560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glVertexAttrib1fv ( GLuint indx, const GLfloat *values ) */ 5599560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void 5600560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glVertexAttrib1fv__I_3FI 5601560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (JNIEnv *_env, jobject _this, jint indx, jfloatArray values_ref, jint offset) { 56022545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer jint _exception = 0; 56032ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian const char * _exceptionType = NULL; 56042ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian const char * _exceptionMessage = NULL; 5605560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich GLfloat *values_base = (GLfloat *) 0; 5606560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich jint _remaining; 5607560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich GLfloat *values = (GLfloat *) 0; 5608560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 5609560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich if (!values_ref) { 56102545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exception = 1; 56112545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionType = "java/lang/IllegalArgumentException"; 56122545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionMessage = "values == null"; 5613560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich goto exit; 5614560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich } 5615560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich if (offset < 0) { 56162545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exception = 1; 56172545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionType = "java/lang/IllegalArgumentException"; 56182545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionMessage = "offset < 0"; 5619560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich goto exit; 5620560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich } 5621560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich _remaining = _env->GetArrayLength(values_ref) - offset; 56222ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian if (_remaining < 1) { 56232ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian _exception = 1; 56242ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian _exceptionType = "java/lang/IllegalArgumentException"; 56252ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian _exceptionMessage = "length - offset < 1 < needed"; 56262ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian goto exit; 56272ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian } 5628560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich values_base = (GLfloat *) 5629560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich _env->GetPrimitiveArrayCritical(values_ref, (jboolean *)0); 5630560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich values = values_base + offset; 5631560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 5632560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich glVertexAttrib1fv( 5633560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLuint)indx, 5634560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLfloat *)values 5635560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich ); 5636560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 5637560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichexit: 5638560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich if (values_base) { 5639560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich _env->ReleasePrimitiveArrayCritical(values_ref, values_base, 5640560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich JNI_ABORT); 5641560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich } 56422545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer if (_exception) { 56432545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer jniThrowException(_env, _exceptionType, _exceptionMessage); 56442545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer } 5645560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich} 5646560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 5647560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glVertexAttrib1fv ( GLuint indx, const GLfloat *values ) */ 5648560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void 5649560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glVertexAttrib1fv__ILjava_nio_FloatBuffer_2 5650560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (JNIEnv *_env, jobject _this, jint indx, jobject values_buf) { 56512ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian jint _exception = 0; 56522ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian const char * _exceptionType = NULL; 56532ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian const char * _exceptionMessage = NULL; 5654560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich jarray _array = (jarray) 0; 565517045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer jint _bufferOffset = (jint) 0; 5656560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich jint _remaining; 5657560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich GLfloat *values = (GLfloat *) 0; 5658560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 565917045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer values = (GLfloat *)getPointer(_env, values_buf, &_array, &_remaining, &_bufferOffset); 56602ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian if (_remaining < 1) { 56612ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian _exception = 1; 56622ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian _exceptionType = "java/lang/IllegalArgumentException"; 56632ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian _exceptionMessage = "remaining() < 1 < needed"; 56642ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian goto exit; 56652ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian } 566617045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer if (values == NULL) { 566717045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer char * _valuesBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); 566817045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer values = (GLfloat *) (_valuesBase + _bufferOffset); 566917045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer } 5670560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich glVertexAttrib1fv( 5671560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLuint)indx, 5672560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLfloat *)values 5673560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich ); 56742ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian 56752ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopianexit: 5676560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich if (_array) { 5677560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich releasePointer(_env, _array, values, JNI_FALSE); 5678560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich } 56792ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian if (_exception) { 56802ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian jniThrowException(_env, _exceptionType, _exceptionMessage); 56812ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian } 5682560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich} 5683560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 5684560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glVertexAttrib2f ( GLuint indx, GLfloat x, GLfloat y ) */ 5685560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void 5686560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glVertexAttrib2f__IFF 5687560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (JNIEnv *_env, jobject _this, jint indx, jfloat x, jfloat y) { 5688560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich glVertexAttrib2f( 5689560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLuint)indx, 5690560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLfloat)x, 5691560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLfloat)y 5692560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich ); 5693560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich} 5694560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 5695560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glVertexAttrib2fv ( GLuint indx, const GLfloat *values ) */ 5696560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void 5697560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glVertexAttrib2fv__I_3FI 5698560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (JNIEnv *_env, jobject _this, jint indx, jfloatArray values_ref, jint offset) { 56992545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer jint _exception = 0; 57002ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian const char * _exceptionType = NULL; 57012ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian const char * _exceptionMessage = NULL; 5702560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich GLfloat *values_base = (GLfloat *) 0; 5703560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich jint _remaining; 5704560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich GLfloat *values = (GLfloat *) 0; 5705560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 5706560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich if (!values_ref) { 57072545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exception = 1; 57082545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionType = "java/lang/IllegalArgumentException"; 57092545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionMessage = "values == null"; 5710560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich goto exit; 5711560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich } 5712560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich if (offset < 0) { 57132545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exception = 1; 57142545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionType = "java/lang/IllegalArgumentException"; 57152545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionMessage = "offset < 0"; 5716560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich goto exit; 5717560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich } 5718560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich _remaining = _env->GetArrayLength(values_ref) - offset; 57192ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian if (_remaining < 2) { 57202ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian _exception = 1; 57212ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian _exceptionType = "java/lang/IllegalArgumentException"; 57222ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian _exceptionMessage = "length - offset < 2 < needed"; 57232ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian goto exit; 57242ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian } 5725560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich values_base = (GLfloat *) 5726560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich _env->GetPrimitiveArrayCritical(values_ref, (jboolean *)0); 5727560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich values = values_base + offset; 5728560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 5729560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich glVertexAttrib2fv( 5730560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLuint)indx, 5731560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLfloat *)values 5732560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich ); 5733560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 5734560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichexit: 5735560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich if (values_base) { 5736560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich _env->ReleasePrimitiveArrayCritical(values_ref, values_base, 5737560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich JNI_ABORT); 5738560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich } 57392545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer if (_exception) { 57402545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer jniThrowException(_env, _exceptionType, _exceptionMessage); 57412545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer } 5742560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich} 5743560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 5744560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glVertexAttrib2fv ( GLuint indx, const GLfloat *values ) */ 5745560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void 5746560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glVertexAttrib2fv__ILjava_nio_FloatBuffer_2 5747560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (JNIEnv *_env, jobject _this, jint indx, jobject values_buf) { 57482ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian jint _exception = 0; 57492ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian const char * _exceptionType = NULL; 57502ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian const char * _exceptionMessage = NULL; 5751560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich jarray _array = (jarray) 0; 575217045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer jint _bufferOffset = (jint) 0; 5753560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich jint _remaining; 5754560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich GLfloat *values = (GLfloat *) 0; 5755560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 575617045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer values = (GLfloat *)getPointer(_env, values_buf, &_array, &_remaining, &_bufferOffset); 57572ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian if (_remaining < 2) { 57582ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian _exception = 1; 57592ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian _exceptionType = "java/lang/IllegalArgumentException"; 57602ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian _exceptionMessage = "remaining() < 2 < needed"; 57612ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian goto exit; 57622ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian } 576317045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer if (values == NULL) { 576417045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer char * _valuesBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); 576517045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer values = (GLfloat *) (_valuesBase + _bufferOffset); 576617045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer } 5767560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich glVertexAttrib2fv( 5768560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLuint)indx, 5769560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLfloat *)values 5770560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich ); 57712ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian 57722ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopianexit: 5773560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich if (_array) { 5774560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich releasePointer(_env, _array, values, JNI_FALSE); 5775560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich } 57762ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian if (_exception) { 57772ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian jniThrowException(_env, _exceptionType, _exceptionMessage); 57782ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian } 5779560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich} 5780560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 5781560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glVertexAttrib3f ( GLuint indx, GLfloat x, GLfloat y, GLfloat z ) */ 5782560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void 5783560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glVertexAttrib3f__IFFF 5784560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (JNIEnv *_env, jobject _this, jint indx, jfloat x, jfloat y, jfloat z) { 5785560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich glVertexAttrib3f( 5786560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLuint)indx, 5787560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLfloat)x, 5788560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLfloat)y, 5789560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLfloat)z 5790560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich ); 5791560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich} 5792560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 5793560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glVertexAttrib3fv ( GLuint indx, const GLfloat *values ) */ 5794560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void 5795560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glVertexAttrib3fv__I_3FI 5796560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (JNIEnv *_env, jobject _this, jint indx, jfloatArray values_ref, jint offset) { 57972545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer jint _exception = 0; 57982ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian const char * _exceptionType = NULL; 57992ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian const char * _exceptionMessage = NULL; 5800560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich GLfloat *values_base = (GLfloat *) 0; 5801560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich jint _remaining; 5802560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich GLfloat *values = (GLfloat *) 0; 5803560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 5804560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich if (!values_ref) { 58052545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exception = 1; 58062545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionType = "java/lang/IllegalArgumentException"; 58072545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionMessage = "values == null"; 5808560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich goto exit; 5809560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich } 5810560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich if (offset < 0) { 58112545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exception = 1; 58122545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionType = "java/lang/IllegalArgumentException"; 58132545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionMessage = "offset < 0"; 5814560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich goto exit; 5815560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich } 5816560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich _remaining = _env->GetArrayLength(values_ref) - offset; 58172ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian if (_remaining < 3) { 58182ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian _exception = 1; 58192ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian _exceptionType = "java/lang/IllegalArgumentException"; 58202ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian _exceptionMessage = "length - offset < 3 < needed"; 58212ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian goto exit; 58222ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian } 5823560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich values_base = (GLfloat *) 5824560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich _env->GetPrimitiveArrayCritical(values_ref, (jboolean *)0); 5825560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich values = values_base + offset; 5826560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 5827560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich glVertexAttrib3fv( 5828560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLuint)indx, 5829560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLfloat *)values 5830560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich ); 5831560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 5832560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichexit: 5833560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich if (values_base) { 5834560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich _env->ReleasePrimitiveArrayCritical(values_ref, values_base, 5835560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich JNI_ABORT); 5836560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich } 58372545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer if (_exception) { 58382545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer jniThrowException(_env, _exceptionType, _exceptionMessage); 58392545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer } 5840560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich} 5841560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 5842560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glVertexAttrib3fv ( GLuint indx, const GLfloat *values ) */ 5843560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void 5844560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glVertexAttrib3fv__ILjava_nio_FloatBuffer_2 5845560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (JNIEnv *_env, jobject _this, jint indx, jobject values_buf) { 58462ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian jint _exception = 0; 58472ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian const char * _exceptionType = NULL; 58482ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian const char * _exceptionMessage = NULL; 5849560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich jarray _array = (jarray) 0; 585017045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer jint _bufferOffset = (jint) 0; 5851560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich jint _remaining; 5852560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich GLfloat *values = (GLfloat *) 0; 5853560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 585417045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer values = (GLfloat *)getPointer(_env, values_buf, &_array, &_remaining, &_bufferOffset); 58552ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian if (_remaining < 3) { 58562ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian _exception = 1; 58572ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian _exceptionType = "java/lang/IllegalArgumentException"; 58582ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian _exceptionMessage = "remaining() < 3 < needed"; 58592ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian goto exit; 58602ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian } 586117045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer if (values == NULL) { 586217045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer char * _valuesBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); 586317045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer values = (GLfloat *) (_valuesBase + _bufferOffset); 586417045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer } 5865560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich glVertexAttrib3fv( 5866560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLuint)indx, 5867560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLfloat *)values 5868560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich ); 58692ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian 58702ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopianexit: 5871560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich if (_array) { 5872560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich releasePointer(_env, _array, values, JNI_FALSE); 5873560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich } 58742ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian if (_exception) { 58752ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian jniThrowException(_env, _exceptionType, _exceptionMessage); 58762ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian } 5877560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich} 5878560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 5879560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glVertexAttrib4f ( GLuint indx, GLfloat x, GLfloat y, GLfloat z, GLfloat w ) */ 5880560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void 5881560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glVertexAttrib4f__IFFFF 5882560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (JNIEnv *_env, jobject _this, jint indx, jfloat x, jfloat y, jfloat z, jfloat w) { 5883560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich glVertexAttrib4f( 5884560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLuint)indx, 5885560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLfloat)x, 5886560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLfloat)y, 5887560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLfloat)z, 5888560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLfloat)w 5889560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich ); 5890560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich} 5891560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 5892560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glVertexAttrib4fv ( GLuint indx, const GLfloat *values ) */ 5893560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void 5894560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glVertexAttrib4fv__I_3FI 5895560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (JNIEnv *_env, jobject _this, jint indx, jfloatArray values_ref, jint offset) { 58962545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer jint _exception = 0; 58972ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian const char * _exceptionType = NULL; 58982ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian const char * _exceptionMessage = NULL; 5899560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich GLfloat *values_base = (GLfloat *) 0; 5900560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich jint _remaining; 5901560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich GLfloat *values = (GLfloat *) 0; 5902560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 5903560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich if (!values_ref) { 59042545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exception = 1; 59052545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionType = "java/lang/IllegalArgumentException"; 59062545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionMessage = "values == null"; 5907560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich goto exit; 5908560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich } 5909560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich if (offset < 0) { 59102545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exception = 1; 59112545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionType = "java/lang/IllegalArgumentException"; 59122545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer _exceptionMessage = "offset < 0"; 5913560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich goto exit; 5914560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich } 5915560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich _remaining = _env->GetArrayLength(values_ref) - offset; 59162ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian if (_remaining < 4) { 59172ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian _exception = 1; 59182ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian _exceptionType = "java/lang/IllegalArgumentException"; 59192ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian _exceptionMessage = "length - offset < 4 < needed"; 59202ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian goto exit; 59212ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian } 5922560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich values_base = (GLfloat *) 5923560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich _env->GetPrimitiveArrayCritical(values_ref, (jboolean *)0); 5924560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich values = values_base + offset; 5925560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 5926560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich glVertexAttrib4fv( 5927560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLuint)indx, 5928560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLfloat *)values 5929560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich ); 5930560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 5931560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichexit: 5932560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich if (values_base) { 5933560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich _env->ReleasePrimitiveArrayCritical(values_ref, values_base, 5934560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich JNI_ABORT); 5935560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich } 59362545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer if (_exception) { 59372545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer jniThrowException(_env, _exceptionType, _exceptionMessage); 59382545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer } 5939560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich} 5940560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 5941560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glVertexAttrib4fv ( GLuint indx, const GLfloat *values ) */ 5942560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void 5943560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glVertexAttrib4fv__ILjava_nio_FloatBuffer_2 5944560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (JNIEnv *_env, jobject _this, jint indx, jobject values_buf) { 59452ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian jint _exception = 0; 59462ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian const char * _exceptionType = NULL; 59472ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian const char * _exceptionMessage = NULL; 5948560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich jarray _array = (jarray) 0; 594917045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer jint _bufferOffset = (jint) 0; 5950560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich jint _remaining; 5951560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich GLfloat *values = (GLfloat *) 0; 5952560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 595317045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer values = (GLfloat *)getPointer(_env, values_buf, &_array, &_remaining, &_bufferOffset); 59542ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian if (_remaining < 4) { 59552ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian _exception = 1; 59562ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian _exceptionType = "java/lang/IllegalArgumentException"; 59572ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian _exceptionMessage = "remaining() < 4 < needed"; 59582ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian goto exit; 59592ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian } 596017045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer if (values == NULL) { 596117045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer char * _valuesBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0); 596217045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer values = (GLfloat *) (_valuesBase + _bufferOffset); 596317045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer } 5964560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich glVertexAttrib4fv( 5965560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLuint)indx, 5966560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLfloat *)values 5967560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich ); 59682ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian 59692ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopianexit: 5970560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich if (_array) { 5971560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich releasePointer(_env, _array, values, JNI_FALSE); 5972560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich } 59732ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian if (_exception) { 59742ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian jniThrowException(_env, _exceptionType, _exceptionMessage); 59752ad0477f16c64dc3126741933f11e27353521bb4Mathias Agopian } 5976560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich} 5977560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 5978224107a421e2611b15d1ec736df54bca9ee3e78dJack Palevich/* void glVertexAttribPointer ( GLuint indx, GLint size, GLenum type, GLboolean normalized, GLsizei stride, GLint offset ) */ 5979224107a421e2611b15d1ec736df54bca9ee3e78dJack Palevichstatic void 5980224107a421e2611b15d1ec736df54bca9ee3e78dJack Palevichandroid_glVertexAttribPointer__IIIZII 5981224107a421e2611b15d1ec736df54bca9ee3e78dJack Palevich (JNIEnv *_env, jobject _this, jint indx, jint size, jint type, jboolean normalized, jint stride, jint offset) { 5982224107a421e2611b15d1ec736df54bca9ee3e78dJack Palevich glVertexAttribPointer( 5983224107a421e2611b15d1ec736df54bca9ee3e78dJack Palevich (GLuint)indx, 5984224107a421e2611b15d1ec736df54bca9ee3e78dJack Palevich (GLint)size, 5985224107a421e2611b15d1ec736df54bca9ee3e78dJack Palevich (GLenum)type, 5986224107a421e2611b15d1ec736df54bca9ee3e78dJack Palevich (GLboolean)normalized, 5987224107a421e2611b15d1ec736df54bca9ee3e78dJack Palevich (GLsizei)stride, 598801c26ea89d4bbea3cf550e9328742302dd9a2b25Ashok Bhat reinterpret_cast<GLvoid *>(offset) 5989224107a421e2611b15d1ec736df54bca9ee3e78dJack Palevich ); 5990224107a421e2611b15d1ec736df54bca9ee3e78dJack Palevich} 5991224107a421e2611b15d1ec736df54bca9ee3e78dJack Palevich 5992560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glVertexAttribPointer ( GLuint indx, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const GLvoid *ptr ) */ 5993560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void 5994560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glVertexAttribPointerBounds__IIIZILjava_nio_Buffer_2I 5995560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (JNIEnv *_env, jobject _this, jint indx, jint size, jint type, jboolean normalized, jint stride, jobject ptr_buf, jint remaining) { 5996560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich jarray _array = (jarray) 0; 599717045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer jint _bufferOffset = (jint) 0; 5998560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich jint _remaining; 5999560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich GLvoid *ptr = (GLvoid *) 0; 6000560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 6001560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich if (ptr_buf) { 6002560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich ptr = (GLvoid *) getDirectBufferPointer(_env, ptr_buf); 6003560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich if ( ! ptr ) { 6004560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich return; 6005560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich } 6006560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich } 6007560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich glVertexAttribPointerBounds( 6008560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLuint)indx, 6009560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLint)size, 6010560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLenum)type, 6011560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLboolean)normalized, 6012560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLsizei)stride, 6013560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLvoid *)ptr, 6014560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLsizei)remaining 6015560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich ); 6016560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich} 6017560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 6018560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glViewport ( GLint x, GLint y, GLsizei width, GLsizei height ) */ 6019560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void 6020560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glViewport__IIII 6021560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (JNIEnv *_env, jobject _this, jint x, jint y, jint width, jint height) { 6022560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich glViewport( 6023560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLint)x, 6024560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLint)y, 6025560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLsizei)width, 6026560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich (GLsizei)height 6027560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich ); 6028560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich} 6029560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 6030560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic const char *classPathName = "android/opengl/GLES20"; 6031560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 6032560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic JNINativeMethod methods[] = { 6033560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"_nativeClassInit", "()V", (void*)nativeClassInit }, 6034560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glActiveTexture", "(I)V", (void *) android_glActiveTexture__I }, 6035560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glAttachShader", "(II)V", (void *) android_glAttachShader__II }, 6036560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glBindAttribLocation", "(IILjava/lang/String;)V", (void *) android_glBindAttribLocation__IILjava_lang_String_2 }, 6037560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glBindBuffer", "(II)V", (void *) android_glBindBuffer__II }, 6038560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glBindFramebuffer", "(II)V", (void *) android_glBindFramebuffer__II }, 6039560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glBindRenderbuffer", "(II)V", (void *) android_glBindRenderbuffer__II }, 6040560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glBindTexture", "(II)V", (void *) android_glBindTexture__II }, 6041560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glBlendColor", "(FFFF)V", (void *) android_glBlendColor__FFFF }, 6042560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glBlendEquation", "(I)V", (void *) android_glBlendEquation__I }, 6043560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glBlendEquationSeparate", "(II)V", (void *) android_glBlendEquationSeparate__II }, 6044560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glBlendFunc", "(II)V", (void *) android_glBlendFunc__II }, 6045560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glBlendFuncSeparate", "(IIII)V", (void *) android_glBlendFuncSeparate__IIII }, 6046560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glBufferData", "(IILjava/nio/Buffer;I)V", (void *) android_glBufferData__IILjava_nio_Buffer_2I }, 6047560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glBufferSubData", "(IIILjava/nio/Buffer;)V", (void *) android_glBufferSubData__IIILjava_nio_Buffer_2 }, 6048560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glCheckFramebufferStatus", "(I)I", (void *) android_glCheckFramebufferStatus__I }, 6049560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glClear", "(I)V", (void *) android_glClear__I }, 6050560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glClearColor", "(FFFF)V", (void *) android_glClearColor__FFFF }, 6051560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glClearDepthf", "(F)V", (void *) android_glClearDepthf__F }, 6052560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glClearStencil", "(I)V", (void *) android_glClearStencil__I }, 6053560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glColorMask", "(ZZZZ)V", (void *) android_glColorMask__ZZZZ }, 6054560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glCompileShader", "(I)V", (void *) android_glCompileShader__I }, 6055560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glCompressedTexImage2D", "(IIIIIIILjava/nio/Buffer;)V", (void *) android_glCompressedTexImage2D__IIIIIIILjava_nio_Buffer_2 }, 6056560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glCompressedTexSubImage2D", "(IIIIIIIILjava/nio/Buffer;)V", (void *) android_glCompressedTexSubImage2D__IIIIIIIILjava_nio_Buffer_2 }, 6057560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glCopyTexImage2D", "(IIIIIIII)V", (void *) android_glCopyTexImage2D__IIIIIIII }, 6058560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glCopyTexSubImage2D", "(IIIIIIII)V", (void *) android_glCopyTexSubImage2D__IIIIIIII }, 6059560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glCreateProgram", "()I", (void *) android_glCreateProgram__ }, 6060560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glCreateShader", "(I)I", (void *) android_glCreateShader__I }, 6061560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glCullFace", "(I)V", (void *) android_glCullFace__I }, 6062560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glDeleteBuffers", "(I[II)V", (void *) android_glDeleteBuffers__I_3II }, 6063560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glDeleteBuffers", "(ILjava/nio/IntBuffer;)V", (void *) android_glDeleteBuffers__ILjava_nio_IntBuffer_2 }, 6064560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glDeleteFramebuffers", "(I[II)V", (void *) android_glDeleteFramebuffers__I_3II }, 6065560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glDeleteFramebuffers", "(ILjava/nio/IntBuffer;)V", (void *) android_glDeleteFramebuffers__ILjava_nio_IntBuffer_2 }, 6066560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glDeleteProgram", "(I)V", (void *) android_glDeleteProgram__I }, 6067560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glDeleteRenderbuffers", "(I[II)V", (void *) android_glDeleteRenderbuffers__I_3II }, 6068560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glDeleteRenderbuffers", "(ILjava/nio/IntBuffer;)V", (void *) android_glDeleteRenderbuffers__ILjava_nio_IntBuffer_2 }, 6069560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glDeleteShader", "(I)V", (void *) android_glDeleteShader__I }, 6070560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glDeleteTextures", "(I[II)V", (void *) android_glDeleteTextures__I_3II }, 6071560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glDeleteTextures", "(ILjava/nio/IntBuffer;)V", (void *) android_glDeleteTextures__ILjava_nio_IntBuffer_2 }, 6072560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glDepthFunc", "(I)V", (void *) android_glDepthFunc__I }, 6073560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glDepthMask", "(Z)V", (void *) android_glDepthMask__Z }, 6074560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glDepthRangef", "(FF)V", (void *) android_glDepthRangef__FF }, 6075560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glDetachShader", "(II)V", (void *) android_glDetachShader__II }, 6076560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glDisable", "(I)V", (void *) android_glDisable__I }, 6077560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glDisableVertexAttribArray", "(I)V", (void *) android_glDisableVertexAttribArray__I }, 6078560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glDrawArrays", "(III)V", (void *) android_glDrawArrays__III }, 6079224107a421e2611b15d1ec736df54bca9ee3e78dJack Palevich{"glDrawElements", "(IIII)V", (void *) android_glDrawElements__IIII }, 6080560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glDrawElements", "(IIILjava/nio/Buffer;)V", (void *) android_glDrawElements__IIILjava_nio_Buffer_2 }, 6081560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glEnable", "(I)V", (void *) android_glEnable__I }, 6082560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glEnableVertexAttribArray", "(I)V", (void *) android_glEnableVertexAttribArray__I }, 6083560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glFinish", "()V", (void *) android_glFinish__ }, 6084560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glFlush", "()V", (void *) android_glFlush__ }, 6085560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glFramebufferRenderbuffer", "(IIII)V", (void *) android_glFramebufferRenderbuffer__IIII }, 6086560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glFramebufferTexture2D", "(IIIII)V", (void *) android_glFramebufferTexture2D__IIIII }, 6087560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glFrontFace", "(I)V", (void *) android_glFrontFace__I }, 6088560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glGenBuffers", "(I[II)V", (void *) android_glGenBuffers__I_3II }, 6089560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glGenBuffers", "(ILjava/nio/IntBuffer;)V", (void *) android_glGenBuffers__ILjava_nio_IntBuffer_2 }, 6090560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glGenerateMipmap", "(I)V", (void *) android_glGenerateMipmap__I }, 6091560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glGenFramebuffers", "(I[II)V", (void *) android_glGenFramebuffers__I_3II }, 6092560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glGenFramebuffers", "(ILjava/nio/IntBuffer;)V", (void *) android_glGenFramebuffers__ILjava_nio_IntBuffer_2 }, 6093560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glGenRenderbuffers", "(I[II)V", (void *) android_glGenRenderbuffers__I_3II }, 6094560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glGenRenderbuffers", "(ILjava/nio/IntBuffer;)V", (void *) android_glGenRenderbuffers__ILjava_nio_IntBuffer_2 }, 6095560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glGenTextures", "(I[II)V", (void *) android_glGenTextures__I_3II }, 6096560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glGenTextures", "(ILjava/nio/IntBuffer;)V", (void *) android_glGenTextures__ILjava_nio_IntBuffer_2 }, 6097560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glGetActiveAttrib", "(III[II[II[II[BI)V", (void *) android_glGetActiveAttrib__III_3II_3II_3II_3BI }, 6098560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glGetActiveAttrib", "(IIILjava/nio/IntBuffer;Ljava/nio/IntBuffer;Ljava/nio/IntBuffer;B)V", (void *) android_glGetActiveAttrib__IIILjava_nio_IntBuffer_2Ljava_nio_IntBuffer_2Ljava_nio_IntBuffer_2B }, 6099dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer{"glGetActiveAttrib", "(II[II[II)Ljava/lang/String;", (void *) android_glGetActiveAttrib1 }, 6100dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer{"glGetActiveAttrib", "(IILjava/nio/IntBuffer;Ljava/nio/IntBuffer;)Ljava/lang/String;", (void *) android_glGetActiveAttrib2 }, 6101560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glGetActiveUniform", "(III[II[II[II[BI)V", (void *) android_glGetActiveUniform__III_3II_3II_3II_3BI }, 6102dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer{"glGetActiveUniform", "(II[II[II)Ljava/lang/String;", (void *) android_glGetActiveUniform1 }, 6103560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glGetActiveUniform", "(IIILjava/nio/IntBuffer;Ljava/nio/IntBuffer;Ljava/nio/IntBuffer;B)V", (void *) android_glGetActiveUniform__IIILjava_nio_IntBuffer_2Ljava_nio_IntBuffer_2Ljava_nio_IntBuffer_2B }, 6104dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer{"glGetActiveUniform", "(IILjava/nio/IntBuffer;Ljava/nio/IntBuffer;)Ljava/lang/String;", (void *) android_glGetActiveUniform2 }, 6105560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glGetAttachedShaders", "(II[II[II)V", (void *) android_glGetAttachedShaders__II_3II_3II }, 6106560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glGetAttachedShaders", "(IILjava/nio/IntBuffer;Ljava/nio/IntBuffer;)V", (void *) android_glGetAttachedShaders__IILjava_nio_IntBuffer_2Ljava_nio_IntBuffer_2 }, 6107560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glGetAttribLocation", "(ILjava/lang/String;)I", (void *) android_glGetAttribLocation__ILjava_lang_String_2 }, 6108560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glGetBooleanv", "(I[ZI)V", (void *) android_glGetBooleanv__I_3ZI }, 6109560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glGetBooleanv", "(ILjava/nio/IntBuffer;)V", (void *) android_glGetBooleanv__ILjava_nio_IntBuffer_2 }, 6110560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glGetBufferParameteriv", "(II[II)V", (void *) android_glGetBufferParameteriv__II_3II }, 6111560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glGetBufferParameteriv", "(IILjava/nio/IntBuffer;)V", (void *) android_glGetBufferParameteriv__IILjava_nio_IntBuffer_2 }, 6112560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glGetError", "()I", (void *) android_glGetError__ }, 6113560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glGetFloatv", "(I[FI)V", (void *) android_glGetFloatv__I_3FI }, 6114560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glGetFloatv", "(ILjava/nio/FloatBuffer;)V", (void *) android_glGetFloatv__ILjava_nio_FloatBuffer_2 }, 6115560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glGetFramebufferAttachmentParameteriv", "(III[II)V", (void *) android_glGetFramebufferAttachmentParameteriv__III_3II }, 6116560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glGetFramebufferAttachmentParameteriv", "(IIILjava/nio/IntBuffer;)V", (void *) android_glGetFramebufferAttachmentParameteriv__IIILjava_nio_IntBuffer_2 }, 6117560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glGetIntegerv", "(I[II)V", (void *) android_glGetIntegerv__I_3II }, 6118560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glGetIntegerv", "(ILjava/nio/IntBuffer;)V", (void *) android_glGetIntegerv__ILjava_nio_IntBuffer_2 }, 6119560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glGetProgramiv", "(II[II)V", (void *) android_glGetProgramiv__II_3II }, 6120560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glGetProgramiv", "(IILjava/nio/IntBuffer;)V", (void *) android_glGetProgramiv__IILjava_nio_IntBuffer_2 }, 6121560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glGetProgramInfoLog", "(I)Ljava/lang/String;", (void *) android_glGetProgramInfoLog }, 6122560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glGetRenderbufferParameteriv", "(II[II)V", (void *) android_glGetRenderbufferParameteriv__II_3II }, 6123560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glGetRenderbufferParameteriv", "(IILjava/nio/IntBuffer;)V", (void *) android_glGetRenderbufferParameteriv__IILjava_nio_IntBuffer_2 }, 6124560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glGetShaderiv", "(II[II)V", (void *) android_glGetShaderiv__II_3II }, 6125560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glGetShaderiv", "(IILjava/nio/IntBuffer;)V", (void *) android_glGetShaderiv__IILjava_nio_IntBuffer_2 }, 6126560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glGetShaderInfoLog", "(I)Ljava/lang/String;", (void *) android_glGetShaderInfoLog }, 6127560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glGetShaderPrecisionFormat", "(II[II[II)V", (void *) android_glGetShaderPrecisionFormat__II_3II_3II }, 6128560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glGetShaderPrecisionFormat", "(IILjava/nio/IntBuffer;Ljava/nio/IntBuffer;)V", (void *) android_glGetShaderPrecisionFormat__IILjava_nio_IntBuffer_2Ljava_nio_IntBuffer_2 }, 6129560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glGetShaderSource", "(II[II[BI)V", (void *) android_glGetShaderSource__II_3II_3BI }, 6130560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glGetShaderSource", "(IILjava/nio/IntBuffer;B)V", (void *) android_glGetShaderSource__IILjava_nio_IntBuffer_2B }, 6131dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer{"glGetShaderSource", "(I)Ljava/lang/String;", (void *) android_glGetShaderSource }, 6132560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glGetString", "(I)Ljava/lang/String;", (void *) android_glGetString }, 6133560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glGetTexParameterfv", "(II[FI)V", (void *) android_glGetTexParameterfv__II_3FI }, 6134560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glGetTexParameterfv", "(IILjava/nio/FloatBuffer;)V", (void *) android_glGetTexParameterfv__IILjava_nio_FloatBuffer_2 }, 6135560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glGetTexParameteriv", "(II[II)V", (void *) android_glGetTexParameteriv__II_3II }, 6136560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glGetTexParameteriv", "(IILjava/nio/IntBuffer;)V", (void *) android_glGetTexParameteriv__IILjava_nio_IntBuffer_2 }, 6137560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glGetUniformfv", "(II[FI)V", (void *) android_glGetUniformfv__II_3FI }, 6138560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glGetUniformfv", "(IILjava/nio/FloatBuffer;)V", (void *) android_glGetUniformfv__IILjava_nio_FloatBuffer_2 }, 6139560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glGetUniformiv", "(II[II)V", (void *) android_glGetUniformiv__II_3II }, 6140560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glGetUniformiv", "(IILjava/nio/IntBuffer;)V", (void *) android_glGetUniformiv__IILjava_nio_IntBuffer_2 }, 6141560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glGetUniformLocation", "(ILjava/lang/String;)I", (void *) android_glGetUniformLocation__ILjava_lang_String_2 }, 6142560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glGetVertexAttribfv", "(II[FI)V", (void *) android_glGetVertexAttribfv__II_3FI }, 6143560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glGetVertexAttribfv", "(IILjava/nio/FloatBuffer;)V", (void *) android_glGetVertexAttribfv__IILjava_nio_FloatBuffer_2 }, 6144560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glGetVertexAttribiv", "(II[II)V", (void *) android_glGetVertexAttribiv__II_3II }, 6145560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glGetVertexAttribiv", "(IILjava/nio/IntBuffer;)V", (void *) android_glGetVertexAttribiv__IILjava_nio_IntBuffer_2 }, 6146560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glHint", "(II)V", (void *) android_glHint__II }, 6147560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glIsBuffer", "(I)Z", (void *) android_glIsBuffer__I }, 6148560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glIsEnabled", "(I)Z", (void *) android_glIsEnabled__I }, 6149560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glIsFramebuffer", "(I)Z", (void *) android_glIsFramebuffer__I }, 6150560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glIsProgram", "(I)Z", (void *) android_glIsProgram__I }, 6151560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glIsRenderbuffer", "(I)Z", (void *) android_glIsRenderbuffer__I }, 6152560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glIsShader", "(I)Z", (void *) android_glIsShader__I }, 6153560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glIsTexture", "(I)Z", (void *) android_glIsTexture__I }, 6154560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glLineWidth", "(F)V", (void *) android_glLineWidth__F }, 6155560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glLinkProgram", "(I)V", (void *) android_glLinkProgram__I }, 6156560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glPixelStorei", "(II)V", (void *) android_glPixelStorei__II }, 6157560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glPolygonOffset", "(FF)V", (void *) android_glPolygonOffset__FF }, 6158560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glReadPixels", "(IIIIIILjava/nio/Buffer;)V", (void *) android_glReadPixels__IIIIIILjava_nio_Buffer_2 }, 6159560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glReleaseShaderCompiler", "()V", (void *) android_glReleaseShaderCompiler__ }, 6160560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glRenderbufferStorage", "(IIII)V", (void *) android_glRenderbufferStorage__IIII }, 6161560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glSampleCoverage", "(FZ)V", (void *) android_glSampleCoverage__FZ }, 6162560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glScissor", "(IIII)V", (void *) android_glScissor__IIII }, 6163560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glShaderBinary", "(I[IIILjava/nio/Buffer;I)V", (void *) android_glShaderBinary__I_3IIILjava_nio_Buffer_2I }, 6164560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glShaderBinary", "(ILjava/nio/IntBuffer;ILjava/nio/Buffer;I)V", (void *) android_glShaderBinary__ILjava_nio_IntBuffer_2ILjava_nio_Buffer_2I }, 6165560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glShaderSource", "(ILjava/lang/String;)V", (void *) android_glShaderSource }, 6166560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glStencilFunc", "(III)V", (void *) android_glStencilFunc__III }, 6167560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glStencilFuncSeparate", "(IIII)V", (void *) android_glStencilFuncSeparate__IIII }, 6168560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glStencilMask", "(I)V", (void *) android_glStencilMask__I }, 6169560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glStencilMaskSeparate", "(II)V", (void *) android_glStencilMaskSeparate__II }, 6170560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glStencilOp", "(III)V", (void *) android_glStencilOp__III }, 6171560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glStencilOpSeparate", "(IIII)V", (void *) android_glStencilOpSeparate__IIII }, 6172560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glTexImage2D", "(IIIIIIIILjava/nio/Buffer;)V", (void *) android_glTexImage2D__IIIIIIIILjava_nio_Buffer_2 }, 6173560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glTexParameterf", "(IIF)V", (void *) android_glTexParameterf__IIF }, 6174560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glTexParameterfv", "(II[FI)V", (void *) android_glTexParameterfv__II_3FI }, 6175560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glTexParameterfv", "(IILjava/nio/FloatBuffer;)V", (void *) android_glTexParameterfv__IILjava_nio_FloatBuffer_2 }, 6176560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glTexParameteri", "(III)V", (void *) android_glTexParameteri__III }, 6177560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glTexParameteriv", "(II[II)V", (void *) android_glTexParameteriv__II_3II }, 6178560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glTexParameteriv", "(IILjava/nio/IntBuffer;)V", (void *) android_glTexParameteriv__IILjava_nio_IntBuffer_2 }, 6179560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glTexSubImage2D", "(IIIIIIIILjava/nio/Buffer;)V", (void *) android_glTexSubImage2D__IIIIIIIILjava_nio_Buffer_2 }, 6180560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glUniform1f", "(IF)V", (void *) android_glUniform1f__IF }, 6181560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glUniform1fv", "(II[FI)V", (void *) android_glUniform1fv__II_3FI }, 6182560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glUniform1fv", "(IILjava/nio/FloatBuffer;)V", (void *) android_glUniform1fv__IILjava_nio_FloatBuffer_2 }, 6183560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glUniform1i", "(II)V", (void *) android_glUniform1i__II }, 6184560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glUniform1iv", "(II[II)V", (void *) android_glUniform1iv__II_3II }, 6185560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glUniform1iv", "(IILjava/nio/IntBuffer;)V", (void *) android_glUniform1iv__IILjava_nio_IntBuffer_2 }, 6186560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glUniform2f", "(IFF)V", (void *) android_glUniform2f__IFF }, 6187560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glUniform2fv", "(II[FI)V", (void *) android_glUniform2fv__II_3FI }, 6188560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glUniform2fv", "(IILjava/nio/FloatBuffer;)V", (void *) android_glUniform2fv__IILjava_nio_FloatBuffer_2 }, 6189560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glUniform2i", "(III)V", (void *) android_glUniform2i__III }, 6190560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glUniform2iv", "(II[II)V", (void *) android_glUniform2iv__II_3II }, 6191560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glUniform2iv", "(IILjava/nio/IntBuffer;)V", (void *) android_glUniform2iv__IILjava_nio_IntBuffer_2 }, 6192560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glUniform3f", "(IFFF)V", (void *) android_glUniform3f__IFFF }, 6193560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glUniform3fv", "(II[FI)V", (void *) android_glUniform3fv__II_3FI }, 6194560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glUniform3fv", "(IILjava/nio/FloatBuffer;)V", (void *) android_glUniform3fv__IILjava_nio_FloatBuffer_2 }, 6195560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glUniform3i", "(IIII)V", (void *) android_glUniform3i__IIII }, 6196560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glUniform3iv", "(II[II)V", (void *) android_glUniform3iv__II_3II }, 6197560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glUniform3iv", "(IILjava/nio/IntBuffer;)V", (void *) android_glUniform3iv__IILjava_nio_IntBuffer_2 }, 6198560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glUniform4f", "(IFFFF)V", (void *) android_glUniform4f__IFFFF }, 6199560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glUniform4fv", "(II[FI)V", (void *) android_glUniform4fv__II_3FI }, 6200560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glUniform4fv", "(IILjava/nio/FloatBuffer;)V", (void *) android_glUniform4fv__IILjava_nio_FloatBuffer_2 }, 6201560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glUniform4i", "(IIIII)V", (void *) android_glUniform4i__IIIII }, 6202560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glUniform4iv", "(II[II)V", (void *) android_glUniform4iv__II_3II }, 6203560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glUniform4iv", "(IILjava/nio/IntBuffer;)V", (void *) android_glUniform4iv__IILjava_nio_IntBuffer_2 }, 6204560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glUniformMatrix2fv", "(IIZ[FI)V", (void *) android_glUniformMatrix2fv__IIZ_3FI }, 6205560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glUniformMatrix2fv", "(IIZLjava/nio/FloatBuffer;)V", (void *) android_glUniformMatrix2fv__IIZLjava_nio_FloatBuffer_2 }, 6206560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glUniformMatrix3fv", "(IIZ[FI)V", (void *) android_glUniformMatrix3fv__IIZ_3FI }, 6207560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glUniformMatrix3fv", "(IIZLjava/nio/FloatBuffer;)V", (void *) android_glUniformMatrix3fv__IIZLjava_nio_FloatBuffer_2 }, 6208560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glUniformMatrix4fv", "(IIZ[FI)V", (void *) android_glUniformMatrix4fv__IIZ_3FI }, 6209560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glUniformMatrix4fv", "(IIZLjava/nio/FloatBuffer;)V", (void *) android_glUniformMatrix4fv__IIZLjava_nio_FloatBuffer_2 }, 6210560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glUseProgram", "(I)V", (void *) android_glUseProgram__I }, 6211560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glValidateProgram", "(I)V", (void *) android_glValidateProgram__I }, 6212560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glVertexAttrib1f", "(IF)V", (void *) android_glVertexAttrib1f__IF }, 6213560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glVertexAttrib1fv", "(I[FI)V", (void *) android_glVertexAttrib1fv__I_3FI }, 6214560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glVertexAttrib1fv", "(ILjava/nio/FloatBuffer;)V", (void *) android_glVertexAttrib1fv__ILjava_nio_FloatBuffer_2 }, 6215560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glVertexAttrib2f", "(IFF)V", (void *) android_glVertexAttrib2f__IFF }, 6216560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glVertexAttrib2fv", "(I[FI)V", (void *) android_glVertexAttrib2fv__I_3FI }, 6217560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glVertexAttrib2fv", "(ILjava/nio/FloatBuffer;)V", (void *) android_glVertexAttrib2fv__ILjava_nio_FloatBuffer_2 }, 6218560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glVertexAttrib3f", "(IFFF)V", (void *) android_glVertexAttrib3f__IFFF }, 6219560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glVertexAttrib3fv", "(I[FI)V", (void *) android_glVertexAttrib3fv__I_3FI }, 6220560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glVertexAttrib3fv", "(ILjava/nio/FloatBuffer;)V", (void *) android_glVertexAttrib3fv__ILjava_nio_FloatBuffer_2 }, 6221560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glVertexAttrib4f", "(IFFFF)V", (void *) android_glVertexAttrib4f__IFFFF }, 6222560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glVertexAttrib4fv", "(I[FI)V", (void *) android_glVertexAttrib4fv__I_3FI }, 6223560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glVertexAttrib4fv", "(ILjava/nio/FloatBuffer;)V", (void *) android_glVertexAttrib4fv__ILjava_nio_FloatBuffer_2 }, 6224224107a421e2611b15d1ec736df54bca9ee3e78dJack Palevich{"glVertexAttribPointer", "(IIIZII)V", (void *) android_glVertexAttribPointer__IIIZII }, 6225560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glVertexAttribPointerBounds", "(IIIZILjava/nio/Buffer;I)V", (void *) android_glVertexAttribPointerBounds__IIIZILjava_nio_Buffer_2I }, 6226560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glViewport", "(IIII)V", (void *) android_glViewport__IIII }, 6227560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}; 6228560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich 6229560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichint register_android_opengl_jni_GLES20(JNIEnv *_env) 6230560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{ 6231560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich int err; 6232560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich err = android::AndroidRuntime::registerNativeMethods(_env, classPathName, methods, NELEM(methods)); 6233560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich return err; 6234560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich} 6235