android_opengl_GLES20.cpp revision 17045a16575ece34cfadb63da4791f115625df78
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
2024ce5fb2cc09d0a14406e7b935f8648c5720d27eElliott Hughes#include "jni.h"
2124ce5fb2cc09d0a14406e7b935f8648c5720d27eElliott Hughes#include "JNIHelp.h"
22560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#include <android_runtime/AndroidRuntime.h>
23560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#include <utils/misc.h>
24560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
25560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#include <assert.h>
26560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#include <GLES2/gl2.h>
27560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#include <GLES2/gl2ext.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
40560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* Cache method IDs each time the class is loaded. */
41560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
42560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
4324ce5fb2cc09d0a14406e7b935f8648c5720d27eElliott HughesnativeClassInit(JNIEnv *_env, jclass glImplClass)
44560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{
45560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jclass nioAccessClassLocal = _env->FindClass("java/nio/NIOAccess");
46560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    nioAccessClass = (jclass) _env->NewGlobalRef(nioAccessClassLocal);
47560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
48560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jclass bufferClassLocal = _env->FindClass("java/nio/Buffer");
49560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    bufferClass = (jclass) _env->NewGlobalRef(bufferClassLocal);
50560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
51560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    getBasePointerID = _env->GetStaticMethodID(nioAccessClass,
52560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich            "getBasePointer", "(Ljava/nio/Buffer;)J");
53560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    getBaseArrayID = _env->GetStaticMethodID(nioAccessClass,
54560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich            "getBaseArray", "(Ljava/nio/Buffer;)Ljava/lang/Object;");
55560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    getBaseArrayOffsetID = _env->GetStaticMethodID(nioAccessClass,
56560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich            "getBaseArrayOffset", "(Ljava/nio/Buffer;)I");
57560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
58560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    positionID = _env->GetFieldID(bufferClass, "position", "I");
59560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    limitID = _env->GetFieldID(bufferClass, "limit", "I");
60560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    elementSizeShiftID =
61560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _env->GetFieldID(bufferClass, "_elementSizeShift", "I");
62560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
63560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
64560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
65560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void *
6617045a16575ece34cfadb63da4791f115625df78Thomas TafertshofergetPointer(JNIEnv *_env, jobject buffer, jarray *array, jint *remaining, jint *offset)
67560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{
68560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint position;
69560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint limit;
70560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint elementSizeShift;
71560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jlong pointer;
72560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
73560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    position = _env->GetIntField(buffer, positionID);
74560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    limit = _env->GetIntField(buffer, limitID);
75560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    elementSizeShift = _env->GetIntField(buffer, elementSizeShiftID);
76560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    *remaining = (limit - position) << elementSizeShift;
77560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    pointer = _env->CallStaticLongMethod(nioAccessClass,
78560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich            getBasePointerID, buffer);
79560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (pointer != 0L) {
80560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        *array = NULL;
81560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        return (void *) (jint) pointer;
82560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
8324ce5fb2cc09d0a14406e7b935f8648c5720d27eElliott Hughes
84560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    *array = (jarray) _env->CallStaticObjectMethod(nioAccessClass,
85560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich            getBaseArrayID, buffer);
8617045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    *offset = _env->CallStaticIntMethod(nioAccessClass,
87560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich            getBaseArrayOffsetID, buffer);
8824ce5fb2cc09d0a14406e7b935f8648c5720d27eElliott Hughes
8917045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    return NULL;
90560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
91560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
92560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
93560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
94560814f6b11abe83ff0c4ed18cac015c276b3181Jack PalevichreleasePointer(JNIEnv *_env, jarray array, void *data, jboolean commit)
95560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{
96560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    _env->ReleasePrimitiveArrayCritical(array, data,
97560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich					   commit ? 0 : JNI_ABORT);
98560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
99560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
100560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void *
101560814f6b11abe83ff0c4ed18cac015c276b3181Jack PalevichgetDirectBufferPointer(JNIEnv *_env, jobject buffer) {
102560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    char* buf = (char*) _env->GetDirectBufferAddress(buffer);
103560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (buf) {
104560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        jint position = _env->GetIntField(buffer, positionID);
105560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        jint elementSizeShift = _env->GetIntField(buffer, elementSizeShiftID);
106560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        buf += position << elementSizeShift;
107560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    } else {
10824ce5fb2cc09d0a14406e7b935f8648c5720d27eElliott Hughes        jniThrowException(_env, "java/lang/IllegalArgumentException",
10924ce5fb2cc09d0a14406e7b935f8648c5720d27eElliott Hughes                          "Must use a native order direct Buffer");
110560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
111560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    return (void*) buf;
112560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
113560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
114560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic int
115560814f6b11abe83ff0c4ed18cac015c276b3181Jack PalevichgetNumCompressedTextureFormats() {
116560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    int numCompressedTextureFormats = 0;
117560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glGetIntegerv(GL_NUM_COMPRESSED_TEXTURE_FORMATS, &numCompressedTextureFormats);
118560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    return numCompressedTextureFormats;
119560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
120560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
121560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void glVertexAttribPointerBounds(GLuint indx, GLint size, GLenum type,
122560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        GLboolean normalized, GLsizei stride, const GLvoid *pointer, GLsizei count) {
123560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glVertexAttribPointer(indx, size, type, normalized, stride, pointer);
124560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
125560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
126560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich// --------------------------------------------------------------------------
127560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glActiveTexture ( GLenum texture ) */
128560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
129560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glActiveTexture__I
130560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint texture) {
131560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glActiveTexture(
132560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLenum)texture
133560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
134560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
135560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
136560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glAttachShader ( GLuint program, GLuint shader ) */
137560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
138560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glAttachShader__II
139560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint program, jint shader) {
140560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glAttachShader(
141560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLuint)program,
142560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLuint)shader
143560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
144560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
145560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
146560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glBindAttribLocation ( GLuint program, GLuint index, const char *name ) */
147560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
148560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glBindAttribLocation__IILjava_lang_String_2
149560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint program, jint index, jstring name) {
1502545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    jint _exception = 0;
1512545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    const char * _exceptionType;
1522545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    const char * _exceptionMessage;
153560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    const char* _nativename = 0;
154560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
155560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (!name) {
1562545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
1572545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "name == null";
158560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
159560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
160560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    _nativename = _env->GetStringUTFChars(name, 0);
161560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
162560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glBindAttribLocation(
163560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLuint)program,
164560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLuint)index,
165560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (char *)_nativename
166560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
167560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
168560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichexit:
169560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (_nativename) {
170560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _env->ReleaseStringUTFChars(name, _nativename);
171560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
172560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
1732545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    if (_exception) {
1742545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        jniThrowException(_env, _exceptionType, _exceptionMessage);
1752545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    }
176560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
177560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
178560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glBindBuffer ( GLenum target, GLuint buffer ) */
179560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
180560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glBindBuffer__II
181560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint target, jint buffer) {
182560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glBindBuffer(
183560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLenum)target,
184560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLuint)buffer
185560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
186560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
187560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
188560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glBindFramebuffer ( GLenum target, GLuint framebuffer ) */
189560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
190560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glBindFramebuffer__II
191560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint target, jint framebuffer) {
192560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glBindFramebuffer(
193560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLenum)target,
194560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLuint)framebuffer
195560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
196560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
197560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
198560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glBindRenderbuffer ( GLenum target, GLuint renderbuffer ) */
199560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
200560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glBindRenderbuffer__II
201560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint target, jint renderbuffer) {
202560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glBindRenderbuffer(
203560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLenum)target,
204560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLuint)renderbuffer
205560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
206560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
207560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
208560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glBindTexture ( GLenum target, GLuint texture ) */
209560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
210560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glBindTexture__II
211560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint target, jint texture) {
212560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glBindTexture(
213560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLenum)target,
214560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLuint)texture
215560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
216560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
217560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
218560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glBlendColor ( GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha ) */
219560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
220560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glBlendColor__FFFF
221560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jfloat red, jfloat green, jfloat blue, jfloat alpha) {
222560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glBlendColor(
223560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLclampf)red,
224560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLclampf)green,
225560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLclampf)blue,
226560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLclampf)alpha
227560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
228560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
229560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
230560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glBlendEquation ( GLenum mode ) */
231560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
232560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glBlendEquation__I
233560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint mode) {
23473108675c944ab4ee89631dced23566b12341b66Jack Palevich    glBlendEquation(
23573108675c944ab4ee89631dced23566b12341b66Jack Palevich        (GLenum)mode
23673108675c944ab4ee89631dced23566b12341b66Jack Palevich    );
237560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
238560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
239560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glBlendEquationSeparate ( GLenum modeRGB, GLenum modeAlpha ) */
240560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
241560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glBlendEquationSeparate__II
242560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint modeRGB, jint modeAlpha) {
24373108675c944ab4ee89631dced23566b12341b66Jack Palevich    glBlendEquationSeparate(
24473108675c944ab4ee89631dced23566b12341b66Jack Palevich        (GLenum)modeRGB,
24573108675c944ab4ee89631dced23566b12341b66Jack Palevich        (GLenum)modeAlpha
24673108675c944ab4ee89631dced23566b12341b66Jack Palevich    );
247560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
248560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
249560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glBlendFunc ( GLenum sfactor, GLenum dfactor ) */
250560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
251560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glBlendFunc__II
252560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint sfactor, jint dfactor) {
253560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glBlendFunc(
254560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLenum)sfactor,
255560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLenum)dfactor
256560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
257560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
258560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
259560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glBlendFuncSeparate ( GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha ) */
260560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
261560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glBlendFuncSeparate__IIII
262560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint srcRGB, jint dstRGB, jint srcAlpha, jint dstAlpha) {
26373108675c944ab4ee89631dced23566b12341b66Jack Palevich    glBlendFuncSeparate(
26473108675c944ab4ee89631dced23566b12341b66Jack Palevich        (GLenum)srcRGB,
26573108675c944ab4ee89631dced23566b12341b66Jack Palevich        (GLenum)dstRGB,
26673108675c944ab4ee89631dced23566b12341b66Jack Palevich        (GLenum)srcAlpha,
26773108675c944ab4ee89631dced23566b12341b66Jack Palevich        (GLenum)dstAlpha
26873108675c944ab4ee89631dced23566b12341b66Jack Palevich    );
269560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
270560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
271560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glBufferData ( GLenum target, GLsizeiptr size, const GLvoid *data, GLenum usage ) */
272560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
273560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glBufferData__IILjava_nio_Buffer_2I
274560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint target, jint size, jobject data_buf, jint usage) {
2752545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    jint _exception = 0;
2762545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    const char * _exceptionType;
2772545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    const char * _exceptionMessage;
278560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jarray _array = (jarray) 0;
27917045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    jint _bufferOffset = (jint) 0;
280560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _remaining;
281560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLvoid *data = (GLvoid *) 0;
282560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
283560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (data_buf) {
28417045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        data = (GLvoid *)getPointer(_env, data_buf, &_array, &_remaining, &_bufferOffset);
285560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        if (_remaining < size) {
2862545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer            _exception = 1;
2872545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer            _exceptionType = "java/lang/IllegalArgumentException";
2882545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer            _exceptionMessage = "remaining() < size < needed";
289560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich            goto exit;
290560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        }
291560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
29217045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    if (data == NULL) {
29317045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        char * _dataBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
29417045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        data = (GLvoid *) (_dataBase + _bufferOffset);
29517045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    }
296560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glBufferData(
297560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLenum)target,
298560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLsizeiptr)size,
299560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLvoid *)data,
300560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLenum)usage
301560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
302560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
303560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichexit:
304560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (_array) {
305560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        releasePointer(_env, _array, data, JNI_FALSE);
306560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
3072545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    if (_exception) {
3082545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        jniThrowException(_env, _exceptionType, _exceptionMessage);
3092545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    }
310560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
311560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
312560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glBufferSubData ( GLenum target, GLintptr offset, GLsizeiptr size, const GLvoid *data ) */
313560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
314560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glBufferSubData__IIILjava_nio_Buffer_2
315560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint target, jint offset, jint size, jobject data_buf) {
3162545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    jint _exception = 0;
3172545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    const char * _exceptionType;
3182545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    const char * _exceptionMessage;
319560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jarray _array = (jarray) 0;
32017045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    jint _bufferOffset = (jint) 0;
321560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _remaining;
322560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLvoid *data = (GLvoid *) 0;
323560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
32417045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    data = (GLvoid *)getPointer(_env, data_buf, &_array, &_remaining, &_bufferOffset);
325560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (_remaining < size) {
3262545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exception = 1;
3272545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
3282545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "remaining() < size < needed";
329560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
330560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
33117045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    if (data == NULL) {
33217045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        char * _dataBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
33317045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        data = (GLvoid *) (_dataBase + _bufferOffset);
33417045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    }
335560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glBufferSubData(
336560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLenum)target,
337560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLintptr)offset,
338560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLsizeiptr)size,
339560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLvoid *)data
340560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
341560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
342560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichexit:
343560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (_array) {
344560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        releasePointer(_env, _array, data, JNI_FALSE);
345560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
3462545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    if (_exception) {
3472545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        jniThrowException(_env, _exceptionType, _exceptionMessage);
3482545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    }
349560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
350560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
351560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* GLenum glCheckFramebufferStatus ( GLenum target ) */
352560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic jint
353560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glCheckFramebufferStatus__I
354560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint target) {
355560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLenum _returnValue;
356560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    _returnValue = glCheckFramebufferStatus(
357560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLenum)target
358560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
359560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    return _returnValue;
360560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
361560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
362560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glClear ( GLbitfield mask ) */
363560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
364560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glClear__I
365560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint mask) {
366560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glClear(
367560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLbitfield)mask
368560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
369560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
370560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
371560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glClearColor ( GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha ) */
372560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
373560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glClearColor__FFFF
374560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jfloat red, jfloat green, jfloat blue, jfloat alpha) {
375560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glClearColor(
376560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLclampf)red,
377560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLclampf)green,
378560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLclampf)blue,
379560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLclampf)alpha
380560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
381560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
382560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
383560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glClearDepthf ( GLclampf depth ) */
384560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
385560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glClearDepthf__F
386560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jfloat depth) {
387560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glClearDepthf(
388560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLclampf)depth
389560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
390560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
391560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
392560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glClearStencil ( GLint s ) */
393560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
394560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glClearStencil__I
395560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint s) {
396560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glClearStencil(
397560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLint)s
398560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
399560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
400560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
401560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glColorMask ( GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha ) */
402560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
403560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glColorMask__ZZZZ
404560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jboolean red, jboolean green, jboolean blue, jboolean alpha) {
405560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glColorMask(
406560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLboolean)red,
407560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLboolean)green,
408560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLboolean)blue,
409560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLboolean)alpha
410560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
411560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
412560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
413560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glCompileShader ( GLuint shader ) */
414560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
415560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glCompileShader__I
416560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint shader) {
417560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glCompileShader(
418560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLuint)shader
419560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
420560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
421560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
422560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glCompressedTexImage2D ( GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid *data ) */
423560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
424560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glCompressedTexImage2D__IIIIIIILjava_nio_Buffer_2
425560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint target, jint level, jint internalformat, jint width, jint height, jint border, jint imageSize, jobject data_buf) {
426560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jarray _array = (jarray) 0;
42717045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    jint _bufferOffset = (jint) 0;
428560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _remaining;
429560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLvoid *data = (GLvoid *) 0;
430560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
43117045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    data = (GLvoid *)getPointer(_env, data_buf, &_array, &_remaining, &_bufferOffset);
43217045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    if (data == NULL) {
43317045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        char * _dataBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
43417045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        data = (GLvoid *) (_dataBase + _bufferOffset);
43517045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    }
436560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glCompressedTexImage2D(
437560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLenum)target,
438560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLint)level,
439560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLenum)internalformat,
440560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLsizei)width,
441560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLsizei)height,
442560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLint)border,
443560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLsizei)imageSize,
444560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLvoid *)data
445560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
446560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (_array) {
447560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        releasePointer(_env, _array, data, JNI_FALSE);
448560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
449560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
450560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
451560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glCompressedTexSubImage2D ( GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const GLvoid *data ) */
452560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
453560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glCompressedTexSubImage2D__IIIIIIIILjava_nio_Buffer_2
454560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint target, jint level, jint xoffset, jint yoffset, jint width, jint height, jint format, jint imageSize, jobject data_buf) {
455560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jarray _array = (jarray) 0;
45617045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    jint _bufferOffset = (jint) 0;
457560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _remaining;
458560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLvoid *data = (GLvoid *) 0;
459560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
46017045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    data = (GLvoid *)getPointer(_env, data_buf, &_array, &_remaining, &_bufferOffset);
46117045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    if (data == NULL) {
46217045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        char * _dataBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
46317045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        data = (GLvoid *) (_dataBase + _bufferOffset);
46417045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    }
465560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glCompressedTexSubImage2D(
466560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLenum)target,
467560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLint)level,
468560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLint)xoffset,
469560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLint)yoffset,
470560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLsizei)width,
471560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLsizei)height,
472560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLenum)format,
473560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLsizei)imageSize,
474560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLvoid *)data
475560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
476560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (_array) {
477560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        releasePointer(_env, _array, data, JNI_FALSE);
478560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
479560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
480560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
481560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glCopyTexImage2D ( GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border ) */
482560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
483560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glCopyTexImage2D__IIIIIIII
484560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint target, jint level, jint internalformat, jint x, jint y, jint width, jint height, jint border) {
485560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glCopyTexImage2D(
486560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLenum)target,
487560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLint)level,
488560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLenum)internalformat,
489560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLint)x,
490560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLint)y,
491560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLsizei)width,
492560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLsizei)height,
493560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLint)border
494560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
495560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
496560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
497560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glCopyTexSubImage2D ( GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height ) */
498560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
499560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glCopyTexSubImage2D__IIIIIIII
500560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint target, jint level, jint xoffset, jint yoffset, jint x, jint y, jint width, jint height) {
501560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glCopyTexSubImage2D(
502560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLenum)target,
503560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLint)level,
504560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLint)xoffset,
505560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLint)yoffset,
506560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLint)x,
507560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLint)y,
508560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLsizei)width,
509560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLsizei)height
510560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
511560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
512560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
513560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* GLuint glCreateProgram ( void ) */
514560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic jint
515560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glCreateProgram__
516560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this) {
517560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLuint _returnValue;
518560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    _returnValue = glCreateProgram();
519560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    return _returnValue;
520560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
521560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
522560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* GLuint glCreateShader ( GLenum type ) */
523560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic jint
524560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glCreateShader__I
525560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint type) {
526560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLuint _returnValue;
527560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    _returnValue = glCreateShader(
528560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLenum)type
529560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
530560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    return _returnValue;
531560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
532560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
533560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glCullFace ( GLenum mode ) */
534560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
535560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glCullFace__I
536560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint mode) {
537560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glCullFace(
538560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLenum)mode
539560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
540560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
541560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
542560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glDeleteBuffers ( GLsizei n, const GLuint *buffers ) */
543560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
544560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glDeleteBuffers__I_3II
545560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint n, jintArray buffers_ref, jint offset) {
5462545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    jint _exception = 0;
5472545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    const char * _exceptionType;
5482545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    const char * _exceptionMessage;
549560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLuint *buffers_base = (GLuint *) 0;
550560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _remaining;
551560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLuint *buffers = (GLuint *) 0;
552560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
553560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (!buffers_ref) {
5542545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exception = 1;
5552545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
5562545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "buffers == null";
557560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
558560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
559560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (offset < 0) {
5602545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exception = 1;
5612545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
5622545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "offset < 0";
563560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
564560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
565560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    _remaining = _env->GetArrayLength(buffers_ref) - offset;
566560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (_remaining < n) {
5672545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exception = 1;
5682545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
5692545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "length - offset < n < needed";
570560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
571560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
572560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    buffers_base = (GLuint *)
573560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _env->GetPrimitiveArrayCritical(buffers_ref, (jboolean *)0);
574560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    buffers = buffers_base + offset;
575560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
576560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glDeleteBuffers(
577560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLsizei)n,
578560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLuint *)buffers
579560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
580560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
581560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichexit:
582560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (buffers_base) {
583560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _env->ReleasePrimitiveArrayCritical(buffers_ref, buffers_base,
584560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich            JNI_ABORT);
585560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
5862545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    if (_exception) {
5872545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        jniThrowException(_env, _exceptionType, _exceptionMessage);
5882545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    }
589560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
590560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
591560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glDeleteBuffers ( GLsizei n, const GLuint *buffers ) */
592560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
593560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glDeleteBuffers__ILjava_nio_IntBuffer_2
594560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint n, jobject buffers_buf) {
5952545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    jint _exception = 0;
5962545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    const char * _exceptionType;
5972545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    const char * _exceptionMessage;
598560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jarray _array = (jarray) 0;
59917045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    jint _bufferOffset = (jint) 0;
600560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _remaining;
601560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLuint *buffers = (GLuint *) 0;
602560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
60317045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    buffers = (GLuint *)getPointer(_env, buffers_buf, &_array, &_remaining, &_bufferOffset);
604560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (_remaining < n) {
6052545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exception = 1;
6062545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
6072545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "remaining() < n < needed";
608560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
609560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
61017045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    if (buffers == NULL) {
61117045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        char * _buffersBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
61217045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        buffers = (GLuint *) (_buffersBase + _bufferOffset);
61317045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    }
614560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glDeleteBuffers(
615560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLsizei)n,
616560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLuint *)buffers
617560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
618560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
619560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichexit:
620560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (_array) {
621560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        releasePointer(_env, _array, buffers, JNI_FALSE);
622560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
6232545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    if (_exception) {
6242545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        jniThrowException(_env, _exceptionType, _exceptionMessage);
6252545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    }
626560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
627560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
628560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glDeleteFramebuffers ( GLsizei n, const GLuint *framebuffers ) */
629560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
630560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glDeleteFramebuffers__I_3II
631560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint n, jintArray framebuffers_ref, jint offset) {
6322545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    jint _exception = 0;
6332545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    const char * _exceptionType;
6342545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    const char * _exceptionMessage;
635560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLuint *framebuffers_base = (GLuint *) 0;
636560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _remaining;
637560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLuint *framebuffers = (GLuint *) 0;
638560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
639560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (!framebuffers_ref) {
6402545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exception = 1;
6412545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
6422545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "framebuffers == null";
643560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
644560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
645560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (offset < 0) {
6462545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exception = 1;
6472545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
6482545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "offset < 0";
649560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
650560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
651560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    _remaining = _env->GetArrayLength(framebuffers_ref) - offset;
652560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    framebuffers_base = (GLuint *)
653560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _env->GetPrimitiveArrayCritical(framebuffers_ref, (jboolean *)0);
654560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    framebuffers = framebuffers_base + offset;
655560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
656560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glDeleteFramebuffers(
657560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLsizei)n,
658560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLuint *)framebuffers
659560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
660560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
661560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichexit:
662560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (framebuffers_base) {
663560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _env->ReleasePrimitiveArrayCritical(framebuffers_ref, framebuffers_base,
664560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich            JNI_ABORT);
665560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
6662545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    if (_exception) {
6672545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        jniThrowException(_env, _exceptionType, _exceptionMessage);
6682545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    }
669560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
670560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
671560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glDeleteFramebuffers ( GLsizei n, const GLuint *framebuffers ) */
672560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
673560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glDeleteFramebuffers__ILjava_nio_IntBuffer_2
674560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint n, jobject framebuffers_buf) {
675560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jarray _array = (jarray) 0;
67617045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    jint _bufferOffset = (jint) 0;
677560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _remaining;
678560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLuint *framebuffers = (GLuint *) 0;
679560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
68017045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    framebuffers = (GLuint *)getPointer(_env, framebuffers_buf, &_array, &_remaining, &_bufferOffset);
68117045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    if (framebuffers == NULL) {
68217045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        char * _framebuffersBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
68317045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        framebuffers = (GLuint *) (_framebuffersBase + _bufferOffset);
68417045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    }
685560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glDeleteFramebuffers(
686560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLsizei)n,
687560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLuint *)framebuffers
688560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
689560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (_array) {
690560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        releasePointer(_env, _array, framebuffers, JNI_FALSE);
691560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
692560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
693560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
694560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glDeleteProgram ( GLuint program ) */
695560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
696560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glDeleteProgram__I
697560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint program) {
698560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glDeleteProgram(
699560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLuint)program
700560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
701560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
702560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
703560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glDeleteRenderbuffers ( GLsizei n, const GLuint *renderbuffers ) */
704560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
705560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glDeleteRenderbuffers__I_3II
706560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint n, jintArray renderbuffers_ref, jint offset) {
7072545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    jint _exception = 0;
7082545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    const char * _exceptionType;
7092545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    const char * _exceptionMessage;
710560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLuint *renderbuffers_base = (GLuint *) 0;
711560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _remaining;
712560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLuint *renderbuffers = (GLuint *) 0;
713560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
714560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (!renderbuffers_ref) {
7152545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exception = 1;
7162545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
7172545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "renderbuffers == null";
718560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
719560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
720560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (offset < 0) {
7212545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exception = 1;
7222545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
7232545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "offset < 0";
724560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
725560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
726560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    _remaining = _env->GetArrayLength(renderbuffers_ref) - offset;
727560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    renderbuffers_base = (GLuint *)
728560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _env->GetPrimitiveArrayCritical(renderbuffers_ref, (jboolean *)0);
729560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    renderbuffers = renderbuffers_base + offset;
730560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
731560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glDeleteRenderbuffers(
732560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLsizei)n,
733560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLuint *)renderbuffers
734560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
735560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
736560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichexit:
737560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (renderbuffers_base) {
738560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _env->ReleasePrimitiveArrayCritical(renderbuffers_ref, renderbuffers_base,
739560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich            JNI_ABORT);
740560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
7412545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    if (_exception) {
7422545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        jniThrowException(_env, _exceptionType, _exceptionMessage);
7432545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    }
744560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
745560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
746560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glDeleteRenderbuffers ( GLsizei n, const GLuint *renderbuffers ) */
747560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
748560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glDeleteRenderbuffers__ILjava_nio_IntBuffer_2
749560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint n, jobject renderbuffers_buf) {
750560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jarray _array = (jarray) 0;
75117045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    jint _bufferOffset = (jint) 0;
752560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _remaining;
753560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLuint *renderbuffers = (GLuint *) 0;
754560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
75517045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    renderbuffers = (GLuint *)getPointer(_env, renderbuffers_buf, &_array, &_remaining, &_bufferOffset);
75617045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    if (renderbuffers == NULL) {
75717045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        char * _renderbuffersBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
75817045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        renderbuffers = (GLuint *) (_renderbuffersBase + _bufferOffset);
75917045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    }
760560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glDeleteRenderbuffers(
761560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLsizei)n,
762560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLuint *)renderbuffers
763560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
764560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (_array) {
765560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        releasePointer(_env, _array, renderbuffers, JNI_FALSE);
766560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
767560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
768560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
769560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glDeleteShader ( GLuint shader ) */
770560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
771560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glDeleteShader__I
772560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint shader) {
773560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glDeleteShader(
774560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLuint)shader
775560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
776560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
777560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
778560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glDeleteTextures ( GLsizei n, const GLuint *textures ) */
779560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
780560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glDeleteTextures__I_3II
781560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint n, jintArray textures_ref, jint offset) {
7822545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    jint _exception = 0;
7832545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    const char * _exceptionType;
7842545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    const char * _exceptionMessage;
785560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLuint *textures_base = (GLuint *) 0;
786560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _remaining;
787560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLuint *textures = (GLuint *) 0;
788560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
789560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (!textures_ref) {
7902545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exception = 1;
7912545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
7922545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "textures == null";
793560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
794560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
795560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (offset < 0) {
7962545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exception = 1;
7972545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
7982545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "offset < 0";
799560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
800560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
801560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    _remaining = _env->GetArrayLength(textures_ref) - offset;
802560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (_remaining < n) {
8032545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exception = 1;
8042545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
8052545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "length - offset < n < needed";
806560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
807560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
808560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    textures_base = (GLuint *)
809560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _env->GetPrimitiveArrayCritical(textures_ref, (jboolean *)0);
810560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    textures = textures_base + offset;
811560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
812560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glDeleteTextures(
813560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLsizei)n,
814560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLuint *)textures
815560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
816560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
817560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichexit:
818560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (textures_base) {
819560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _env->ReleasePrimitiveArrayCritical(textures_ref, textures_base,
820560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich            JNI_ABORT);
821560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
8222545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    if (_exception) {
8232545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        jniThrowException(_env, _exceptionType, _exceptionMessage);
8242545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    }
825560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
826560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
827560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glDeleteTextures ( GLsizei n, const GLuint *textures ) */
828560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
829560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glDeleteTextures__ILjava_nio_IntBuffer_2
830560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint n, jobject textures_buf) {
8312545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    jint _exception = 0;
8322545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    const char * _exceptionType;
8332545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    const char * _exceptionMessage;
834560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jarray _array = (jarray) 0;
83517045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    jint _bufferOffset = (jint) 0;
836560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _remaining;
837560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLuint *textures = (GLuint *) 0;
838560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
83917045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    textures = (GLuint *)getPointer(_env, textures_buf, &_array, &_remaining, &_bufferOffset);
840560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (_remaining < n) {
8412545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exception = 1;
8422545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
8432545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "remaining() < n < needed";
844560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
845560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
84617045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    if (textures == NULL) {
84717045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        char * _texturesBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
84817045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        textures = (GLuint *) (_texturesBase + _bufferOffset);
84917045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    }
850560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glDeleteTextures(
851560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLsizei)n,
852560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLuint *)textures
853560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
854560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
855560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichexit:
856560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (_array) {
857560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        releasePointer(_env, _array, textures, JNI_FALSE);
858560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
8592545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    if (_exception) {
8602545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        jniThrowException(_env, _exceptionType, _exceptionMessage);
8612545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    }
862560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
863560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
864560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glDepthFunc ( GLenum func ) */
865560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
866560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glDepthFunc__I
867560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint func) {
868560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glDepthFunc(
869560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLenum)func
870560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
871560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
872560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
873560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glDepthMask ( GLboolean flag ) */
874560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
875560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glDepthMask__Z
876560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jboolean flag) {
877560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glDepthMask(
878560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLboolean)flag
879560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
880560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
881560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
882560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glDepthRangef ( GLclampf zNear, GLclampf zFar ) */
883560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
884560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glDepthRangef__FF
885560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jfloat zNear, jfloat zFar) {
886560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glDepthRangef(
887560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLclampf)zNear,
888560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLclampf)zFar
889560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
890560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
891560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
892560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glDetachShader ( GLuint program, GLuint shader ) */
893560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
894560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glDetachShader__II
895560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint program, jint shader) {
896560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glDetachShader(
897560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLuint)program,
898560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLuint)shader
899560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
900560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
901560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
902560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glDisable ( GLenum cap ) */
903560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
904560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glDisable__I
905560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint cap) {
906560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glDisable(
907560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLenum)cap
908560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
909560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
910560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
911560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glDisableVertexAttribArray ( GLuint index ) */
912560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
913560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glDisableVertexAttribArray__I
914560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint index) {
915560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glDisableVertexAttribArray(
916560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLuint)index
917560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
918560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
919560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
920560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glDrawArrays ( GLenum mode, GLint first, GLsizei count ) */
921560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
922560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glDrawArrays__III
923560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint mode, jint first, jint count) {
924560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glDrawArrays(
925560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLenum)mode,
926560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLint)first,
927560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLsizei)count
928560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
929560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
930560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
931224107a421e2611b15d1ec736df54bca9ee3e78dJack Palevich/* void glDrawElements ( GLenum mode, GLsizei count, GLenum type, GLint offset ) */
932224107a421e2611b15d1ec736df54bca9ee3e78dJack Palevichstatic void
933224107a421e2611b15d1ec736df54bca9ee3e78dJack Palevichandroid_glDrawElements__IIII
934224107a421e2611b15d1ec736df54bca9ee3e78dJack Palevich  (JNIEnv *_env, jobject _this, jint mode, jint count, jint type, jint offset) {
9352545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    jint _exception = 0;
9362545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    const char * _exceptionType;
9372545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    const char * _exceptionMessage;
938224107a421e2611b15d1ec736df54bca9ee3e78dJack Palevich    glDrawElements(
939224107a421e2611b15d1ec736df54bca9ee3e78dJack Palevich        (GLenum)mode,
940224107a421e2611b15d1ec736df54bca9ee3e78dJack Palevich        (GLsizei)count,
941224107a421e2611b15d1ec736df54bca9ee3e78dJack Palevich        (GLenum)type,
942224107a421e2611b15d1ec736df54bca9ee3e78dJack Palevich        (const GLvoid *)offset
943224107a421e2611b15d1ec736df54bca9ee3e78dJack Palevich    );
9442545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    if (_exception) {
9452545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        jniThrowException(_env, _exceptionType, _exceptionMessage);
9462545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    }
947224107a421e2611b15d1ec736df54bca9ee3e78dJack Palevich}
948224107a421e2611b15d1ec736df54bca9ee3e78dJack Palevich
949560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glDrawElements ( GLenum mode, GLsizei count, GLenum type, const GLvoid *indices ) */
950560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
951560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glDrawElements__IIILjava_nio_Buffer_2
952560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint mode, jint count, jint type, jobject indices_buf) {
9532545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    jint _exception = 0;
9542545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    const char * _exceptionType;
9552545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    const char * _exceptionMessage;
956560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jarray _array = (jarray) 0;
95717045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    jint _bufferOffset = (jint) 0;
958560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _remaining;
959560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLvoid *indices = (GLvoid *) 0;
960560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
96117045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    indices = (GLvoid *)getPointer(_env, indices_buf, &_array, &_remaining, &_bufferOffset);
962560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (_remaining < count) {
9632545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exception = 1;
9642545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/ArrayIndexOutOfBoundsException";
9652545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "remaining() < count < needed";
966560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
967560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
96817045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    if (indices == NULL) {
96917045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        char * _indicesBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
97017045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        indices = (GLvoid *) (_indicesBase + _bufferOffset);
97117045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    }
972560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glDrawElements(
973560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLenum)mode,
974560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLsizei)count,
975560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLenum)type,
976560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLvoid *)indices
977560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
978560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
979560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichexit:
980560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (_array) {
981560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        releasePointer(_env, _array, indices, JNI_FALSE);
982560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
9832545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    if (_exception) {
9842545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        jniThrowException(_env, _exceptionType, _exceptionMessage);
9852545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    }
986560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
987560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
988560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glEnable ( GLenum cap ) */
989560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
990560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glEnable__I
991560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint cap) {
992560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glEnable(
993560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLenum)cap
994560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
995560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
996560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
997560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glEnableVertexAttribArray ( GLuint index ) */
998560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
999560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glEnableVertexAttribArray__I
1000560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint index) {
1001560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glEnableVertexAttribArray(
1002560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLuint)index
1003560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
1004560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
1005560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
1006560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glFinish ( void ) */
1007560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
1008560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glFinish__
1009560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this) {
1010560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glFinish();
1011560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
1012560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
1013560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glFlush ( void ) */
1014560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
1015560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glFlush__
1016560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this) {
1017560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glFlush();
1018560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
1019560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
1020560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glFramebufferRenderbuffer ( GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer ) */
1021560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
1022560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glFramebufferRenderbuffer__IIII
1023560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint target, jint attachment, jint renderbuffertarget, jint renderbuffer) {
1024560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glFramebufferRenderbuffer(
1025560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLenum)target,
1026560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLenum)attachment,
1027560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLenum)renderbuffertarget,
1028560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLuint)renderbuffer
1029560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
1030560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
1031560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
1032560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glFramebufferTexture2D ( GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level ) */
1033560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
1034560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glFramebufferTexture2D__IIIII
1035560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint target, jint attachment, jint textarget, jint texture, jint level) {
1036560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glFramebufferTexture2D(
1037560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLenum)target,
1038560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLenum)attachment,
1039560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLenum)textarget,
1040560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLuint)texture,
1041560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLint)level
1042560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
1043560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
1044560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
1045560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glFrontFace ( GLenum mode ) */
1046560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
1047560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glFrontFace__I
1048560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint mode) {
1049560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glFrontFace(
1050560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLenum)mode
1051560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
1052560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
1053560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
1054560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glGenBuffers ( GLsizei n, GLuint *buffers ) */
1055560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
1056560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glGenBuffers__I_3II
1057560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint n, jintArray buffers_ref, jint offset) {
1058560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _exception = 0;
10592545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    const char * _exceptionType;
10602545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    const char * _exceptionMessage;
1061560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLuint *buffers_base = (GLuint *) 0;
1062560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _remaining;
1063560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLuint *buffers = (GLuint *) 0;
1064560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
1065560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (!buffers_ref) {
1066560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _exception = 1;
10672545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
10682545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "buffers == null";
1069560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
1070560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
1071560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (offset < 0) {
1072560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _exception = 1;
10732545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
10742545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "offset < 0";
1075560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
1076560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
1077560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    _remaining = _env->GetArrayLength(buffers_ref) - offset;
1078560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (_remaining < n) {
1079560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _exception = 1;
10802545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
10812545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "length - offset < n < needed";
1082560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
1083560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
1084560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    buffers_base = (GLuint *)
1085560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _env->GetPrimitiveArrayCritical(buffers_ref, (jboolean *)0);
1086560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    buffers = buffers_base + offset;
1087560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
1088560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glGenBuffers(
1089560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLsizei)n,
1090560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLuint *)buffers
1091560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
1092560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
1093560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichexit:
1094560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (buffers_base) {
1095560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _env->ReleasePrimitiveArrayCritical(buffers_ref, buffers_base,
1096560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich            _exception ? JNI_ABORT: 0);
1097560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
10982545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    if (_exception) {
10992545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        jniThrowException(_env, _exceptionType, _exceptionMessage);
11002545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    }
1101560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
1102560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
1103560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glGenBuffers ( GLsizei n, GLuint *buffers ) */
1104560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
1105560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glGenBuffers__ILjava_nio_IntBuffer_2
1106560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint n, jobject buffers_buf) {
1107560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _exception = 0;
11082545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    const char * _exceptionType;
11092545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    const char * _exceptionMessage;
1110560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jarray _array = (jarray) 0;
111117045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    jint _bufferOffset = (jint) 0;
1112560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _remaining;
1113560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLuint *buffers = (GLuint *) 0;
1114560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
111517045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    buffers = (GLuint *)getPointer(_env, buffers_buf, &_array, &_remaining, &_bufferOffset);
1116560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (_remaining < n) {
1117560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _exception = 1;
11182545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
11192545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "remaining() < n < needed";
1120560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
1121560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
112217045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    if (buffers == NULL) {
112317045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        char * _buffersBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
112417045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        buffers = (GLuint *) (_buffersBase + _bufferOffset);
112517045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    }
1126560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glGenBuffers(
1127560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLsizei)n,
1128560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLuint *)buffers
1129560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
1130560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
1131560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichexit:
1132560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (_array) {
1133560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        releasePointer(_env, _array, buffers, _exception ? JNI_FALSE : JNI_TRUE);
1134560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
11352545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    if (_exception) {
11362545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        jniThrowException(_env, _exceptionType, _exceptionMessage);
11372545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    }
1138560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
1139560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
1140560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glGenerateMipmap ( GLenum target ) */
1141560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
1142560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glGenerateMipmap__I
1143560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint target) {
1144560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glGenerateMipmap(
1145560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLenum)target
1146560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
1147560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
1148560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
1149560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glGenFramebuffers ( GLsizei n, GLuint *framebuffers ) */
1150560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
1151560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glGenFramebuffers__I_3II
1152560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint n, jintArray framebuffers_ref, jint offset) {
1153560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _exception = 0;
11542545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    const char * _exceptionType;
11552545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    const char * _exceptionMessage;
1156560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLuint *framebuffers_base = (GLuint *) 0;
1157560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _remaining;
1158560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLuint *framebuffers = (GLuint *) 0;
1159560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
1160560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (!framebuffers_ref) {
1161560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _exception = 1;
11622545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
11632545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "framebuffers == null";
1164560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
1165560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
1166560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (offset < 0) {
1167560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _exception = 1;
11682545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
11692545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "offset < 0";
1170560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
1171560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
1172560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    _remaining = _env->GetArrayLength(framebuffers_ref) - offset;
1173560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    framebuffers_base = (GLuint *)
1174560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _env->GetPrimitiveArrayCritical(framebuffers_ref, (jboolean *)0);
1175560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    framebuffers = framebuffers_base + offset;
1176560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
1177560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glGenFramebuffers(
1178560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLsizei)n,
1179560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLuint *)framebuffers
1180560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
1181560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
1182560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichexit:
1183560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (framebuffers_base) {
1184560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _env->ReleasePrimitiveArrayCritical(framebuffers_ref, framebuffers_base,
1185560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich            _exception ? JNI_ABORT: 0);
1186560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
11872545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    if (_exception) {
11882545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        jniThrowException(_env, _exceptionType, _exceptionMessage);
11892545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    }
1190560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
1191560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
1192560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glGenFramebuffers ( GLsizei n, GLuint *framebuffers ) */
1193560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
1194560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glGenFramebuffers__ILjava_nio_IntBuffer_2
1195560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint n, jobject framebuffers_buf) {
1196560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jarray _array = (jarray) 0;
119717045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    jint _bufferOffset = (jint) 0;
1198560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _remaining;
1199560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLuint *framebuffers = (GLuint *) 0;
1200560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
120117045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    framebuffers = (GLuint *)getPointer(_env, framebuffers_buf, &_array, &_remaining, &_bufferOffset);
120217045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    if (framebuffers == NULL) {
120317045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        char * _framebuffersBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
120417045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        framebuffers = (GLuint *) (_framebuffersBase + _bufferOffset);
120517045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    }
1206560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glGenFramebuffers(
1207560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLsizei)n,
1208560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLuint *)framebuffers
1209560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
1210560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (_array) {
12112545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        releasePointer(_env, _array, framebuffers, JNI_TRUE);
1212560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
1213560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
1214560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
1215560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glGenRenderbuffers ( GLsizei n, GLuint *renderbuffers ) */
1216560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
1217560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glGenRenderbuffers__I_3II
1218560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint n, jintArray renderbuffers_ref, jint offset) {
1219560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _exception = 0;
12202545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    const char * _exceptionType;
12212545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    const char * _exceptionMessage;
1222560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLuint *renderbuffers_base = (GLuint *) 0;
1223560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _remaining;
1224560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLuint *renderbuffers = (GLuint *) 0;
1225560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
1226560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (!renderbuffers_ref) {
1227560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _exception = 1;
12282545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
12292545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "renderbuffers == null";
1230560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
1231560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
1232560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (offset < 0) {
1233560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _exception = 1;
12342545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
12352545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "offset < 0";
1236560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
1237560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
1238560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    _remaining = _env->GetArrayLength(renderbuffers_ref) - offset;
1239560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    renderbuffers_base = (GLuint *)
1240560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _env->GetPrimitiveArrayCritical(renderbuffers_ref, (jboolean *)0);
1241560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    renderbuffers = renderbuffers_base + offset;
1242560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
1243560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glGenRenderbuffers(
1244560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLsizei)n,
1245560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLuint *)renderbuffers
1246560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
1247560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
1248560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichexit:
1249560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (renderbuffers_base) {
1250560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _env->ReleasePrimitiveArrayCritical(renderbuffers_ref, renderbuffers_base,
1251560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich            _exception ? JNI_ABORT: 0);
1252560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
12532545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    if (_exception) {
12542545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        jniThrowException(_env, _exceptionType, _exceptionMessage);
12552545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    }
1256560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
1257560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
1258560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glGenRenderbuffers ( GLsizei n, GLuint *renderbuffers ) */
1259560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
1260560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glGenRenderbuffers__ILjava_nio_IntBuffer_2
1261560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint n, jobject renderbuffers_buf) {
1262560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jarray _array = (jarray) 0;
126317045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    jint _bufferOffset = (jint) 0;
1264560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _remaining;
1265560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLuint *renderbuffers = (GLuint *) 0;
1266560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
126717045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    renderbuffers = (GLuint *)getPointer(_env, renderbuffers_buf, &_array, &_remaining, &_bufferOffset);
126817045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    if (renderbuffers == NULL) {
126917045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        char * _renderbuffersBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
127017045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        renderbuffers = (GLuint *) (_renderbuffersBase + _bufferOffset);
127117045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    }
1272560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glGenRenderbuffers(
1273560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLsizei)n,
1274560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLuint *)renderbuffers
1275560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
1276560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (_array) {
12772545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        releasePointer(_env, _array, renderbuffers, JNI_TRUE);
1278560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
1279560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
1280560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
1281560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glGenTextures ( GLsizei n, GLuint *textures ) */
1282560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
1283560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glGenTextures__I_3II
1284560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint n, jintArray textures_ref, jint offset) {
1285560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _exception = 0;
12862545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    const char * _exceptionType;
12872545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    const char * _exceptionMessage;
1288560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLuint *textures_base = (GLuint *) 0;
1289560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _remaining;
1290560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLuint *textures = (GLuint *) 0;
1291560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
1292560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (!textures_ref) {
1293560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _exception = 1;
12942545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
12952545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "textures == null";
1296560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
1297560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
1298560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (offset < 0) {
1299560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _exception = 1;
13002545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
13012545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "offset < 0";
1302560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
1303560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
1304560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    _remaining = _env->GetArrayLength(textures_ref) - offset;
1305560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (_remaining < n) {
1306560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _exception = 1;
13072545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
13082545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "length - offset < n < needed";
1309560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
1310560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
1311560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    textures_base = (GLuint *)
1312560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _env->GetPrimitiveArrayCritical(textures_ref, (jboolean *)0);
1313560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    textures = textures_base + offset;
1314560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
1315560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glGenTextures(
1316560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLsizei)n,
1317560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLuint *)textures
1318560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
1319560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
1320560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichexit:
1321560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (textures_base) {
1322560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _env->ReleasePrimitiveArrayCritical(textures_ref, textures_base,
1323560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich            _exception ? JNI_ABORT: 0);
1324560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
13252545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    if (_exception) {
13262545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        jniThrowException(_env, _exceptionType, _exceptionMessage);
13272545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    }
1328560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
1329560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
1330560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glGenTextures ( GLsizei n, GLuint *textures ) */
1331560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
1332560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glGenTextures__ILjava_nio_IntBuffer_2
1333560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint n, jobject textures_buf) {
1334560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _exception = 0;
13352545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    const char * _exceptionType;
13362545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    const char * _exceptionMessage;
1337560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jarray _array = (jarray) 0;
133817045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    jint _bufferOffset = (jint) 0;
1339560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _remaining;
1340560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLuint *textures = (GLuint *) 0;
1341560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
134217045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    textures = (GLuint *)getPointer(_env, textures_buf, &_array, &_remaining, &_bufferOffset);
1343560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (_remaining < n) {
1344560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _exception = 1;
13452545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
13462545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "remaining() < n < needed";
1347560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
1348560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
134917045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    if (textures == NULL) {
135017045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        char * _texturesBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
135117045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        textures = (GLuint *) (_texturesBase + _bufferOffset);
135217045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    }
1353560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glGenTextures(
1354560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLsizei)n,
1355560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLuint *)textures
1356560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
1357560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
1358560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichexit:
1359560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (_array) {
1360560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        releasePointer(_env, _array, textures, _exception ? JNI_FALSE : JNI_TRUE);
1361560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
13622545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    if (_exception) {
13632545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        jniThrowException(_env, _exceptionType, _exceptionMessage);
13642545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    }
1365560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
1366560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
1367560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glGetActiveAttrib ( GLuint program, GLuint index, GLsizei bufsize, GLsizei *length, GLint *size, GLenum *type, char *name ) */
1368560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
1369560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glGetActiveAttrib__III_3II_3II_3II_3BI
1370560814f6b11abe83ff0c4ed18cac015c276b3181Jack 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) {
1371560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _exception = 0;
13722545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    const char * _exceptionType;
13732545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    const char * _exceptionMessage;
1374560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLsizei *length_base = (GLsizei *) 0;
1375560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _lengthRemaining;
1376560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLsizei *length = (GLsizei *) 0;
1377560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLint *size_base = (GLint *) 0;
1378560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _sizeRemaining;
1379560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLint *size = (GLint *) 0;
1380560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLenum *type_base = (GLenum *) 0;
1381560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _typeRemaining;
1382560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLenum *type = (GLenum *) 0;
1383560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    char *name_base = (char *) 0;
1384560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _nameRemaining;
1385560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    char *name = (char *) 0;
1386560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
1387560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (!length_ref) {
1388560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _exception = 1;
13892545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
13902545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "length == null";
1391560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
1392560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
1393560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (lengthOffset < 0) {
1394560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _exception = 1;
13952545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
13962545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "lengthOffset < 0";
1397560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
1398560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
1399560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    _lengthRemaining = _env->GetArrayLength(length_ref) - lengthOffset;
1400560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    length_base = (GLsizei *)
1401560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _env->GetPrimitiveArrayCritical(length_ref, (jboolean *)0);
1402560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    length = length_base + lengthOffset;
1403560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
1404560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (!size_ref) {
1405560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _exception = 1;
14062545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
14072545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "size == null";
1408560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
1409560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
1410560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (sizeOffset < 0) {
1411560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _exception = 1;
14122545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
14132545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "sizeOffset < 0";
1414560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
1415560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
1416560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    _sizeRemaining = _env->GetArrayLength(size_ref) - sizeOffset;
1417560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    size_base = (GLint *)
1418560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _env->GetPrimitiveArrayCritical(size_ref, (jboolean *)0);
1419560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    size = size_base + sizeOffset;
1420560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
1421560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (!type_ref) {
1422560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _exception = 1;
14232545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
14242545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "type == null";
1425560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
1426560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
1427560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (typeOffset < 0) {
1428560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _exception = 1;
14292545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
14302545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "typeOffset < 0";
1431560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
1432560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
1433560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    _typeRemaining = _env->GetArrayLength(type_ref) - typeOffset;
1434560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    type_base = (GLenum *)
1435560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _env->GetPrimitiveArrayCritical(type_ref, (jboolean *)0);
1436560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    type = type_base + typeOffset;
1437560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
1438560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (!name_ref) {
1439560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _exception = 1;
14402545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
14412545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "name == null";
1442560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
1443560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
1444560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (nameOffset < 0) {
1445560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _exception = 1;
14462545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
14472545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "nameOffset < 0";
1448560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
1449560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
1450560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    _nameRemaining = _env->GetArrayLength(name_ref) - nameOffset;
1451560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    name_base = (char *)
1452560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _env->GetPrimitiveArrayCritical(name_ref, (jboolean *)0);
1453560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    name = name_base + nameOffset;
1454560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
1455560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glGetActiveAttrib(
1456560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLuint)program,
1457560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLuint)index,
1458560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLsizei)bufsize,
1459560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLsizei *)length,
1460560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLint *)size,
1461560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLenum *)type,
1462560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (char *)name
1463560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
1464560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
1465560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichexit:
1466560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (name_base) {
1467560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _env->ReleasePrimitiveArrayCritical(name_ref, name_base,
1468560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich            _exception ? JNI_ABORT: 0);
1469560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
1470560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (type_base) {
1471560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _env->ReleasePrimitiveArrayCritical(type_ref, type_base,
1472560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich            _exception ? JNI_ABORT: 0);
1473560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
1474560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (size_base) {
1475560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _env->ReleasePrimitiveArrayCritical(size_ref, size_base,
1476560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich            _exception ? JNI_ABORT: 0);
1477560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
1478560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (length_base) {
1479560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _env->ReleasePrimitiveArrayCritical(length_ref, length_base,
1480560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich            _exception ? JNI_ABORT: 0);
1481560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
14822545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    if (_exception) {
14832545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        jniThrowException(_env, _exceptionType, _exceptionMessage);
14842545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    }
1485560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
1486560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
1487560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glGetActiveAttrib ( GLuint program, GLuint index, GLsizei bufsize, GLsizei *length, GLint *size, GLenum *type, char *name ) */
1488560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
1489560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glGetActiveAttrib__IIILjava_nio_IntBuffer_2Ljava_nio_IntBuffer_2Ljava_nio_IntBuffer_2B
1490560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint program, jint index, jint bufsize, jobject length_buf, jobject size_buf, jobject type_buf, jbyte name) {
1491560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jarray _lengthArray = (jarray) 0;
149217045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    jint _lengthBufferOffset = (jint) 0;
1493560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jarray _sizeArray = (jarray) 0;
149417045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    jint _sizeBufferOffset = (jint) 0;
1495560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jarray _typeArray = (jarray) 0;
149617045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    jint _typeBufferOffset = (jint) 0;
1497560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _lengthRemaining;
1498560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLsizei *length = (GLsizei *) 0;
1499560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _sizeRemaining;
1500560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLint *size = (GLint *) 0;
1501560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _typeRemaining;
1502560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLenum *type = (GLenum *) 0;
1503560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
150417045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    length = (GLsizei *)getPointer(_env, length_buf, &_lengthArray, &_lengthRemaining, &_lengthBufferOffset);
150517045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    size = (GLint *)getPointer(_env, size_buf, &_sizeArray, &_sizeRemaining, &_sizeBufferOffset);
150617045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    type = (GLenum *)getPointer(_env, type_buf, &_typeArray, &_typeRemaining, &_typeBufferOffset);
150717045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    if (length == NULL) {
150817045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        char * _lengthBase = (char *)_env->GetPrimitiveArrayCritical(_lengthArray, (jboolean *) 0);
150917045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        length = (GLsizei *) (_lengthBase + _lengthBufferOffset);
151017045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    }
151117045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    if (size == NULL) {
151217045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        char * _sizeBase = (char *)_env->GetPrimitiveArrayCritical(_sizeArray, (jboolean *) 0);
151317045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        size = (GLint *) (_sizeBase + _sizeBufferOffset);
151417045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    }
151517045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    if (type == NULL) {
151617045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        char * _typeBase = (char *)_env->GetPrimitiveArrayCritical(_typeArray, (jboolean *) 0);
151717045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        type = (GLenum *) (_typeBase + _typeBufferOffset);
151817045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    }
1519560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glGetActiveAttrib(
1520560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLuint)program,
1521560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLuint)index,
1522560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLsizei)bufsize,
1523560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLsizei *)length,
1524560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLint *)size,
1525560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLenum *)type,
1526560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (char *)name
1527560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
152817045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    if (_typeArray) {
152917045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        releasePointer(_env, _typeArray, type, JNI_TRUE);
1530560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
1531560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (_sizeArray) {
15322545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        releasePointer(_env, _sizeArray, size, JNI_TRUE);
1533560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
153417045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    if (_lengthArray) {
153517045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        releasePointer(_env, _lengthArray, length, JNI_TRUE);
1536560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
1537560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
1538560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
1539560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glGetActiveUniform ( GLuint program, GLuint index, GLsizei bufsize, GLsizei *length, GLint *size, GLenum *type, char *name ) */
1540560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
1541560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glGetActiveUniform__III_3II_3II_3II_3BI
1542560814f6b11abe83ff0c4ed18cac015c276b3181Jack 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) {
1543560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _exception = 0;
15442545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    const char * _exceptionType;
15452545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    const char * _exceptionMessage;
1546560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLsizei *length_base = (GLsizei *) 0;
1547560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _lengthRemaining;
1548560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLsizei *length = (GLsizei *) 0;
1549560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLint *size_base = (GLint *) 0;
1550560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _sizeRemaining;
1551560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLint *size = (GLint *) 0;
1552560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLenum *type_base = (GLenum *) 0;
1553560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _typeRemaining;
1554560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLenum *type = (GLenum *) 0;
1555560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    char *name_base = (char *) 0;
1556560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _nameRemaining;
1557560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    char *name = (char *) 0;
1558560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
1559560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (!length_ref) {
1560560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _exception = 1;
15612545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
15622545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "length == null";
1563560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
1564560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
1565560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (lengthOffset < 0) {
1566560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _exception = 1;
15672545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
15682545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "lengthOffset < 0";
1569560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
1570560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
1571560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    _lengthRemaining = _env->GetArrayLength(length_ref) - lengthOffset;
1572560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    length_base = (GLsizei *)
1573560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _env->GetPrimitiveArrayCritical(length_ref, (jboolean *)0);
1574560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    length = length_base + lengthOffset;
1575560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
1576560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (!size_ref) {
1577560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _exception = 1;
15782545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
15792545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "size == null";
1580560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
1581560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
1582560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (sizeOffset < 0) {
1583560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _exception = 1;
15842545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
15852545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "sizeOffset < 0";
1586560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
1587560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
1588560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    _sizeRemaining = _env->GetArrayLength(size_ref) - sizeOffset;
1589560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    size_base = (GLint *)
1590560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _env->GetPrimitiveArrayCritical(size_ref, (jboolean *)0);
1591560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    size = size_base + sizeOffset;
1592560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
1593560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (!type_ref) {
1594560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _exception = 1;
15952545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
15962545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "type == null";
1597560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
1598560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
1599560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (typeOffset < 0) {
1600560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _exception = 1;
16012545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
16022545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "typeOffset < 0";
1603560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
1604560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
1605560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    _typeRemaining = _env->GetArrayLength(type_ref) - typeOffset;
1606560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    type_base = (GLenum *)
1607560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _env->GetPrimitiveArrayCritical(type_ref, (jboolean *)0);
1608560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    type = type_base + typeOffset;
1609560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
1610560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (!name_ref) {
1611560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _exception = 1;
16122545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
16132545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "name == null";
1614560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
1615560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
1616560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (nameOffset < 0) {
1617560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _exception = 1;
16182545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
16192545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "nameOffset < 0";
1620560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
1621560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
1622560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    _nameRemaining = _env->GetArrayLength(name_ref) - nameOffset;
1623560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    name_base = (char *)
1624560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _env->GetPrimitiveArrayCritical(name_ref, (jboolean *)0);
1625560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    name = name_base + nameOffset;
1626560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
1627560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glGetActiveUniform(
1628560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLuint)program,
1629560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLuint)index,
1630560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLsizei)bufsize,
1631560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLsizei *)length,
1632560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLint *)size,
1633560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLenum *)type,
1634560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (char *)name
1635560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
1636560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
1637560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichexit:
1638560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (name_base) {
1639560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _env->ReleasePrimitiveArrayCritical(name_ref, name_base,
1640560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich            _exception ? JNI_ABORT: 0);
1641560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
1642560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (type_base) {
1643560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _env->ReleasePrimitiveArrayCritical(type_ref, type_base,
1644560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich            _exception ? JNI_ABORT: 0);
1645560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
1646560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (size_base) {
1647560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _env->ReleasePrimitiveArrayCritical(size_ref, size_base,
1648560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich            _exception ? JNI_ABORT: 0);
1649560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
1650560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (length_base) {
1651560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _env->ReleasePrimitiveArrayCritical(length_ref, length_base,
1652560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich            _exception ? JNI_ABORT: 0);
1653560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
16542545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    if (_exception) {
16552545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        jniThrowException(_env, _exceptionType, _exceptionMessage);
16562545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    }
1657560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
1658560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
1659560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glGetActiveUniform ( GLuint program, GLuint index, GLsizei bufsize, GLsizei *length, GLint *size, GLenum *type, char *name ) */
1660560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
1661560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glGetActiveUniform__IIILjava_nio_IntBuffer_2Ljava_nio_IntBuffer_2Ljava_nio_IntBuffer_2B
1662560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint program, jint index, jint bufsize, jobject length_buf, jobject size_buf, jobject type_buf, jbyte name) {
1663560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jarray _lengthArray = (jarray) 0;
166417045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    jint _lengthBufferOffset = (jint) 0;
1665560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jarray _sizeArray = (jarray) 0;
166617045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    jint _sizeBufferOffset = (jint) 0;
1667560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jarray _typeArray = (jarray) 0;
166817045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    jint _typeBufferOffset = (jint) 0;
1669560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _lengthRemaining;
1670560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLsizei *length = (GLsizei *) 0;
1671560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _sizeRemaining;
1672560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLint *size = (GLint *) 0;
1673560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _typeRemaining;
1674560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLenum *type = (GLenum *) 0;
1675560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
167617045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    length = (GLsizei *)getPointer(_env, length_buf, &_lengthArray, &_lengthRemaining, &_lengthBufferOffset);
167717045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    size = (GLint *)getPointer(_env, size_buf, &_sizeArray, &_sizeRemaining, &_sizeBufferOffset);
167817045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    type = (GLenum *)getPointer(_env, type_buf, &_typeArray, &_typeRemaining, &_typeBufferOffset);
167917045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    if (length == NULL) {
168017045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        char * _lengthBase = (char *)_env->GetPrimitiveArrayCritical(_lengthArray, (jboolean *) 0);
168117045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        length = (GLsizei *) (_lengthBase + _lengthBufferOffset);
168217045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    }
168317045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    if (size == NULL) {
168417045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        char * _sizeBase = (char *)_env->GetPrimitiveArrayCritical(_sizeArray, (jboolean *) 0);
168517045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        size = (GLint *) (_sizeBase + _sizeBufferOffset);
168617045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    }
168717045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    if (type == NULL) {
168817045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        char * _typeBase = (char *)_env->GetPrimitiveArrayCritical(_typeArray, (jboolean *) 0);
168917045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        type = (GLenum *) (_typeBase + _typeBufferOffset);
169017045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    }
1691560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glGetActiveUniform(
1692560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLuint)program,
1693560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLuint)index,
1694560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLsizei)bufsize,
1695560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLsizei *)length,
1696560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLint *)size,
1697560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLenum *)type,
1698560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (char *)name
1699560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
170017045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    if (_typeArray) {
170117045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        releasePointer(_env, _typeArray, type, JNI_TRUE);
1702560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
1703560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (_sizeArray) {
17042545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        releasePointer(_env, _sizeArray, size, JNI_TRUE);
1705560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
170617045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    if (_lengthArray) {
170717045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        releasePointer(_env, _lengthArray, length, JNI_TRUE);
1708560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
1709560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
1710560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
1711560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glGetAttachedShaders ( GLuint program, GLsizei maxcount, GLsizei *count, GLuint *shaders ) */
1712560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
1713560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glGetAttachedShaders__II_3II_3II
1714560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint program, jint maxcount, jintArray count_ref, jint countOffset, jintArray shaders_ref, jint shadersOffset) {
1715560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _exception = 0;
17162545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    const char * _exceptionType;
17172545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    const char * _exceptionMessage;
1718560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLsizei *count_base = (GLsizei *) 0;
1719560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _countRemaining;
1720560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLsizei *count = (GLsizei *) 0;
1721560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLuint *shaders_base = (GLuint *) 0;
1722560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _shadersRemaining;
1723560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLuint *shaders = (GLuint *) 0;
1724560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
1725560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (!count_ref) {
1726560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _exception = 1;
17272545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
17282545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "count == null";
1729560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
1730560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
1731560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (countOffset < 0) {
1732560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _exception = 1;
17332545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
17342545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "countOffset < 0";
1735560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
1736560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
1737560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    _countRemaining = _env->GetArrayLength(count_ref) - countOffset;
1738560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    count_base = (GLsizei *)
1739560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _env->GetPrimitiveArrayCritical(count_ref, (jboolean *)0);
1740560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    count = count_base + countOffset;
1741560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
1742560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (!shaders_ref) {
1743560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _exception = 1;
17442545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
17452545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "shaders == null";
1746560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
1747560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
1748560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (shadersOffset < 0) {
1749560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _exception = 1;
17502545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
17512545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "shadersOffset < 0";
1752560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
1753560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
1754560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    _shadersRemaining = _env->GetArrayLength(shaders_ref) - shadersOffset;
1755560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    shaders_base = (GLuint *)
1756560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _env->GetPrimitiveArrayCritical(shaders_ref, (jboolean *)0);
1757560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    shaders = shaders_base + shadersOffset;
1758560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
1759560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glGetAttachedShaders(
1760560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLuint)program,
1761560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLsizei)maxcount,
1762560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLsizei *)count,
1763560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLuint *)shaders
1764560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
1765560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
1766560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichexit:
1767560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (shaders_base) {
1768560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _env->ReleasePrimitiveArrayCritical(shaders_ref, shaders_base,
1769560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich            _exception ? JNI_ABORT: 0);
1770560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
1771560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (count_base) {
1772560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _env->ReleasePrimitiveArrayCritical(count_ref, count_base,
1773560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich            _exception ? JNI_ABORT: 0);
1774560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
17752545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    if (_exception) {
17762545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        jniThrowException(_env, _exceptionType, _exceptionMessage);
17772545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    }
1778560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
1779560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
1780560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glGetAttachedShaders ( GLuint program, GLsizei maxcount, GLsizei *count, GLuint *shaders ) */
1781560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
1782560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glGetAttachedShaders__IILjava_nio_IntBuffer_2Ljava_nio_IntBuffer_2
1783560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint program, jint maxcount, jobject count_buf, jobject shaders_buf) {
1784560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jarray _countArray = (jarray) 0;
178517045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    jint _countBufferOffset = (jint) 0;
1786560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jarray _shadersArray = (jarray) 0;
178717045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    jint _shadersBufferOffset = (jint) 0;
1788560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _countRemaining;
1789560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLsizei *count = (GLsizei *) 0;
1790560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _shadersRemaining;
1791560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLuint *shaders = (GLuint *) 0;
1792560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
179317045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    count = (GLsizei *)getPointer(_env, count_buf, &_countArray, &_countRemaining, &_countBufferOffset);
179417045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    shaders = (GLuint *)getPointer(_env, shaders_buf, &_shadersArray, &_shadersRemaining, &_shadersBufferOffset);
179517045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    if (count == NULL) {
179617045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        char * _countBase = (char *)_env->GetPrimitiveArrayCritical(_countArray, (jboolean *) 0);
179717045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        count = (GLsizei *) (_countBase + _countBufferOffset);
179817045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    }
179917045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    if (shaders == NULL) {
180017045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        char * _shadersBase = (char *)_env->GetPrimitiveArrayCritical(_shadersArray, (jboolean *) 0);
180117045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        shaders = (GLuint *) (_shadersBase + _shadersBufferOffset);
180217045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    }
1803560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glGetAttachedShaders(
1804560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLuint)program,
1805560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLsizei)maxcount,
1806560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLsizei *)count,
1807560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLuint *)shaders
1808560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
1809560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (_shadersArray) {
181017045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        releasePointer(_env, _shadersArray, shaders, JNI_TRUE);
181117045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    }
181217045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    if (_countArray) {
181317045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        releasePointer(_env, _countArray, count, JNI_TRUE);
1814560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
1815560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
1816560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
1817560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* int glGetAttribLocation ( GLuint program, const char *name ) */
1818560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic jint
1819560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glGetAttribLocation__ILjava_lang_String_2
1820560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint program, jstring name) {
18212545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    jint _exception = 0;
18222545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    const char * _exceptionType;
18232545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    const char * _exceptionMessage;
1824560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    int _returnValue = 0;
1825560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    const char* _nativename = 0;
1826560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
1827560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (!name) {
18282545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
18292545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "name == null";
1830560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
1831560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
1832560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    _nativename = _env->GetStringUTFChars(name, 0);
1833560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
1834560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    _returnValue = glGetAttribLocation(
1835560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLuint)program,
1836560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (char *)_nativename
1837560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
1838560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
1839560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichexit:
1840560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (_nativename) {
1841560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _env->ReleaseStringUTFChars(name, _nativename);
1842560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
1843560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
18442545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    if (_exception) {
18452545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        jniThrowException(_env, _exceptionType, _exceptionMessage);
18462545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    }
1847560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    return _returnValue;
1848560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
1849560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
1850560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glGetBooleanv ( GLenum pname, GLboolean *params ) */
1851560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
1852560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glGetBooleanv__I_3ZI
1853560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint pname, jbooleanArray params_ref, jint offset) {
1854560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _exception = 0;
18552545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    const char * _exceptionType;
18562545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    const char * _exceptionMessage;
1857560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLboolean *params_base = (GLboolean *) 0;
1858560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _remaining;
1859560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLboolean *params = (GLboolean *) 0;
1860560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
1861560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (!params_ref) {
1862560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _exception = 1;
18632545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
18642545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "params == null";
1865560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
1866560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
1867560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (offset < 0) {
1868560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _exception = 1;
18692545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
18702545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "offset < 0";
1871560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
1872560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
1873560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    _remaining = _env->GetArrayLength(params_ref) - offset;
1874560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    params_base = (GLboolean *)
1875560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _env->GetPrimitiveArrayCritical(params_ref, (jboolean *)0);
1876560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    params = params_base + offset;
1877560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
1878560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glGetBooleanv(
1879560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLenum)pname,
1880560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLboolean *)params
1881560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
1882560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
1883560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichexit:
1884560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (params_base) {
1885560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _env->ReleasePrimitiveArrayCritical(params_ref, params_base,
1886560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich            _exception ? JNI_ABORT: 0);
1887560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
18882545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    if (_exception) {
18892545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        jniThrowException(_env, _exceptionType, _exceptionMessage);
18902545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    }
1891560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
1892560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
1893560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glGetBooleanv ( GLenum pname, GLboolean *params ) */
1894560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
1895560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glGetBooleanv__ILjava_nio_IntBuffer_2
1896560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint pname, jobject params_buf) {
1897560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jarray _array = (jarray) 0;
189817045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    jint _bufferOffset = (jint) 0;
1899560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _remaining;
1900560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLboolean *params = (GLboolean *) 0;
1901560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
190217045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    params = (GLboolean *)getPointer(_env, params_buf, &_array, &_remaining, &_bufferOffset);
190317045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    if (params == NULL) {
190417045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        char * _paramsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
190517045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        params = (GLboolean *) (_paramsBase + _bufferOffset);
190617045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    }
1907560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glGetBooleanv(
1908560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLenum)pname,
1909560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLboolean *)params
1910560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
1911560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (_array) {
19122545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        releasePointer(_env, _array, params, JNI_TRUE);
1913560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
1914560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
1915560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
1916560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glGetBufferParameteriv ( GLenum target, GLenum pname, GLint *params ) */
1917560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
1918560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glGetBufferParameteriv__II_3II
1919560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint target, jint pname, jintArray params_ref, jint offset) {
192073108675c944ab4ee89631dced23566b12341b66Jack Palevich    jint _exception = 0;
19212545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    const char * _exceptionType;
19222545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    const char * _exceptionMessage;
192373108675c944ab4ee89631dced23566b12341b66Jack Palevich    GLint *params_base = (GLint *) 0;
192473108675c944ab4ee89631dced23566b12341b66Jack Palevich    jint _remaining;
192573108675c944ab4ee89631dced23566b12341b66Jack Palevich    GLint *params = (GLint *) 0;
192673108675c944ab4ee89631dced23566b12341b66Jack Palevich
192773108675c944ab4ee89631dced23566b12341b66Jack Palevich    if (!params_ref) {
192873108675c944ab4ee89631dced23566b12341b66Jack Palevich        _exception = 1;
19292545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
19302545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "params == null";
193173108675c944ab4ee89631dced23566b12341b66Jack Palevich        goto exit;
193273108675c944ab4ee89631dced23566b12341b66Jack Palevich    }
193373108675c944ab4ee89631dced23566b12341b66Jack Palevich    if (offset < 0) {
193473108675c944ab4ee89631dced23566b12341b66Jack Palevich        _exception = 1;
19352545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
19362545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "offset < 0";
193773108675c944ab4ee89631dced23566b12341b66Jack Palevich        goto exit;
193873108675c944ab4ee89631dced23566b12341b66Jack Palevich    }
193973108675c944ab4ee89631dced23566b12341b66Jack Palevich    _remaining = _env->GetArrayLength(params_ref) - offset;
194073108675c944ab4ee89631dced23566b12341b66Jack Palevich    if (_remaining < 1) {
194173108675c944ab4ee89631dced23566b12341b66Jack Palevich        _exception = 1;
19422545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
19432545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "length - offset < 1 < needed";
194473108675c944ab4ee89631dced23566b12341b66Jack Palevich        goto exit;
194573108675c944ab4ee89631dced23566b12341b66Jack Palevich    }
194673108675c944ab4ee89631dced23566b12341b66Jack Palevich    params_base = (GLint *)
194773108675c944ab4ee89631dced23566b12341b66Jack Palevich        _env->GetPrimitiveArrayCritical(params_ref, (jboolean *)0);
194873108675c944ab4ee89631dced23566b12341b66Jack Palevich    params = params_base + offset;
194973108675c944ab4ee89631dced23566b12341b66Jack Palevich
195073108675c944ab4ee89631dced23566b12341b66Jack Palevich    glGetBufferParameteriv(
195173108675c944ab4ee89631dced23566b12341b66Jack Palevich        (GLenum)target,
195273108675c944ab4ee89631dced23566b12341b66Jack Palevich        (GLenum)pname,
195373108675c944ab4ee89631dced23566b12341b66Jack Palevich        (GLint *)params
195473108675c944ab4ee89631dced23566b12341b66Jack Palevich    );
195573108675c944ab4ee89631dced23566b12341b66Jack Palevich
195673108675c944ab4ee89631dced23566b12341b66Jack Palevichexit:
195773108675c944ab4ee89631dced23566b12341b66Jack Palevich    if (params_base) {
195873108675c944ab4ee89631dced23566b12341b66Jack Palevich        _env->ReleasePrimitiveArrayCritical(params_ref, params_base,
195973108675c944ab4ee89631dced23566b12341b66Jack Palevich            _exception ? JNI_ABORT: 0);
196073108675c944ab4ee89631dced23566b12341b66Jack Palevich    }
19612545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    if (_exception) {
19622545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        jniThrowException(_env, _exceptionType, _exceptionMessage);
19632545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    }
1964560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
1965560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
1966560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glGetBufferParameteriv ( GLenum target, GLenum pname, GLint *params ) */
1967560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
1968560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glGetBufferParameteriv__IILjava_nio_IntBuffer_2
1969560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint target, jint pname, jobject params_buf) {
197073108675c944ab4ee89631dced23566b12341b66Jack Palevich    jint _exception = 0;
19712545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    const char * _exceptionType;
19722545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    const char * _exceptionMessage;
197373108675c944ab4ee89631dced23566b12341b66Jack Palevich    jarray _array = (jarray) 0;
197417045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    jint _bufferOffset = (jint) 0;
197573108675c944ab4ee89631dced23566b12341b66Jack Palevich    jint _remaining;
197673108675c944ab4ee89631dced23566b12341b66Jack Palevich    GLint *params = (GLint *) 0;
197773108675c944ab4ee89631dced23566b12341b66Jack Palevich
197817045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    params = (GLint *)getPointer(_env, params_buf, &_array, &_remaining, &_bufferOffset);
197973108675c944ab4ee89631dced23566b12341b66Jack Palevich    if (_remaining < 1) {
198073108675c944ab4ee89631dced23566b12341b66Jack Palevich        _exception = 1;
19812545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
19822545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "remaining() < 1 < needed";
198373108675c944ab4ee89631dced23566b12341b66Jack Palevich        goto exit;
198473108675c944ab4ee89631dced23566b12341b66Jack Palevich    }
198517045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    if (params == NULL) {
198617045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        char * _paramsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
198717045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        params = (GLint *) (_paramsBase + _bufferOffset);
198817045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    }
198973108675c944ab4ee89631dced23566b12341b66Jack Palevich    glGetBufferParameteriv(
199073108675c944ab4ee89631dced23566b12341b66Jack Palevich        (GLenum)target,
199173108675c944ab4ee89631dced23566b12341b66Jack Palevich        (GLenum)pname,
199273108675c944ab4ee89631dced23566b12341b66Jack Palevich        (GLint *)params
199373108675c944ab4ee89631dced23566b12341b66Jack Palevich    );
199473108675c944ab4ee89631dced23566b12341b66Jack Palevich
199573108675c944ab4ee89631dced23566b12341b66Jack Palevichexit:
199673108675c944ab4ee89631dced23566b12341b66Jack Palevich    if (_array) {
199773108675c944ab4ee89631dced23566b12341b66Jack Palevich        releasePointer(_env, _array, params, _exception ? JNI_FALSE : JNI_TRUE);
199873108675c944ab4ee89631dced23566b12341b66Jack Palevich    }
19992545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    if (_exception) {
20002545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        jniThrowException(_env, _exceptionType, _exceptionMessage);
20012545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    }
2002560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
2003560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
2004560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* GLenum glGetError ( void ) */
2005560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic jint
2006560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glGetError__
2007560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this) {
2008560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLenum _returnValue;
2009560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    _returnValue = glGetError();
2010560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    return _returnValue;
2011560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
2012560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
2013560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glGetFloatv ( GLenum pname, GLfloat *params ) */
2014560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
2015560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glGetFloatv__I_3FI
2016560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint pname, jfloatArray params_ref, jint offset) {
2017560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _exception = 0;
20182545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    const char * _exceptionType;
20192545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    const char * _exceptionMessage;
2020560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLfloat *params_base = (GLfloat *) 0;
2021560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _remaining;
2022560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLfloat *params = (GLfloat *) 0;
2023560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
2024560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (!params_ref) {
2025560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _exception = 1;
20262545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
20272545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "params == null";
2028560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
2029560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
2030560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (offset < 0) {
2031560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _exception = 1;
20322545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
20332545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "offset < 0";
2034560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
2035560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
2036560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    _remaining = _env->GetArrayLength(params_ref) - offset;
2037560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    params_base = (GLfloat *)
2038560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _env->GetPrimitiveArrayCritical(params_ref, (jboolean *)0);
2039560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    params = params_base + offset;
2040560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
2041560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glGetFloatv(
2042560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLenum)pname,
2043560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLfloat *)params
2044560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
2045560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
2046560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichexit:
2047560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (params_base) {
2048560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _env->ReleasePrimitiveArrayCritical(params_ref, params_base,
2049560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich            _exception ? JNI_ABORT: 0);
2050560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
20512545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    if (_exception) {
20522545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        jniThrowException(_env, _exceptionType, _exceptionMessage);
20532545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    }
2054560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
2055560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
2056560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glGetFloatv ( GLenum pname, GLfloat *params ) */
2057560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
2058560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glGetFloatv__ILjava_nio_FloatBuffer_2
2059560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint pname, jobject params_buf) {
2060560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jarray _array = (jarray) 0;
206117045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    jint _bufferOffset = (jint) 0;
2062560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _remaining;
2063560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLfloat *params = (GLfloat *) 0;
2064560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
206517045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    params = (GLfloat *)getPointer(_env, params_buf, &_array, &_remaining, &_bufferOffset);
206617045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    if (params == NULL) {
206717045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        char * _paramsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
206817045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        params = (GLfloat *) (_paramsBase + _bufferOffset);
206917045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    }
2070560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glGetFloatv(
2071560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLenum)pname,
2072560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLfloat *)params
2073560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
2074560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (_array) {
20752545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        releasePointer(_env, _array, params, JNI_TRUE);
2076560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
2077560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
2078560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
2079560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glGetFramebufferAttachmentParameteriv ( GLenum target, GLenum attachment, GLenum pname, GLint *params ) */
2080560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
2081560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glGetFramebufferAttachmentParameteriv__III_3II
2082560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint target, jint attachment, jint pname, jintArray params_ref, jint offset) {
2083560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _exception = 0;
20842545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    const char * _exceptionType;
20852545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    const char * _exceptionMessage;
2086560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLint *params_base = (GLint *) 0;
2087560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _remaining;
2088560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLint *params = (GLint *) 0;
2089560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
2090560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (!params_ref) {
2091560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _exception = 1;
20922545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
20932545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "params == null";
2094560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
2095560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
2096560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (offset < 0) {
2097560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _exception = 1;
20982545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
20992545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "offset < 0";
2100560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
2101560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
2102560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    _remaining = _env->GetArrayLength(params_ref) - offset;
2103560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    params_base = (GLint *)
2104560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _env->GetPrimitiveArrayCritical(params_ref, (jboolean *)0);
2105560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    params = params_base + offset;
2106560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
2107560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glGetFramebufferAttachmentParameteriv(
2108560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLenum)target,
2109560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLenum)attachment,
2110560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLenum)pname,
2111560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLint *)params
2112560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
2113560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
2114560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichexit:
2115560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (params_base) {
2116560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _env->ReleasePrimitiveArrayCritical(params_ref, params_base,
2117560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich            _exception ? JNI_ABORT: 0);
2118560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
21192545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    if (_exception) {
21202545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        jniThrowException(_env, _exceptionType, _exceptionMessage);
21212545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    }
2122560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
2123560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
2124560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glGetFramebufferAttachmentParameteriv ( GLenum target, GLenum attachment, GLenum pname, GLint *params ) */
2125560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
2126560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glGetFramebufferAttachmentParameteriv__IIILjava_nio_IntBuffer_2
2127560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint target, jint attachment, jint pname, jobject params_buf) {
2128560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jarray _array = (jarray) 0;
212917045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    jint _bufferOffset = (jint) 0;
2130560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _remaining;
2131560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLint *params = (GLint *) 0;
2132560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
213317045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    params = (GLint *)getPointer(_env, params_buf, &_array, &_remaining, &_bufferOffset);
213417045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    if (params == NULL) {
213517045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        char * _paramsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
213617045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        params = (GLint *) (_paramsBase + _bufferOffset);
213717045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    }
2138560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glGetFramebufferAttachmentParameteriv(
2139560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLenum)target,
2140560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLenum)attachment,
2141560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLenum)pname,
2142560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLint *)params
2143560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
2144560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (_array) {
21452545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        releasePointer(_env, _array, params, JNI_TRUE);
2146560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
2147560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
2148560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
2149560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glGetIntegerv ( GLenum pname, GLint *params ) */
2150560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
2151560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glGetIntegerv__I_3II
2152560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint pname, jintArray params_ref, jint offset) {
2153560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _exception = 0;
21542545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    const char * _exceptionType;
21552545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    const char * _exceptionMessage;
2156560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLint *params_base = (GLint *) 0;
2157560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _remaining;
2158560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLint *params = (GLint *) 0;
2159560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
2160560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (!params_ref) {
2161560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _exception = 1;
21622545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
21632545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "params == null";
2164560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
2165560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
2166560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (offset < 0) {
2167560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _exception = 1;
21682545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
21692545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "offset < 0";
2170560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
2171560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
2172560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    _remaining = _env->GetArrayLength(params_ref) - offset;
2173560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    int _needed;
2174560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    switch (pname) {
2175560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_ALPHA_BITS)
2176560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_ALPHA_BITS:
2177560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_ALPHA_BITS)
2178560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_ALPHA_TEST_FUNC)
2179560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_ALPHA_TEST_FUNC:
2180560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_ALPHA_TEST_FUNC)
2181560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_ALPHA_TEST_REF)
2182560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_ALPHA_TEST_REF:
2183560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_ALPHA_TEST_REF)
2184560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_BLEND_DST)
2185560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_BLEND_DST:
2186560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_BLEND_DST)
2187560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_BLUE_BITS)
2188560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_BLUE_BITS:
2189560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_BLUE_BITS)
2190560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_COLOR_ARRAY_BUFFER_BINDING)
2191560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_COLOR_ARRAY_BUFFER_BINDING:
2192560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_COLOR_ARRAY_BUFFER_BINDING)
2193560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_COLOR_ARRAY_SIZE)
2194560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_COLOR_ARRAY_SIZE:
2195560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_COLOR_ARRAY_SIZE)
2196560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_COLOR_ARRAY_STRIDE)
2197560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_COLOR_ARRAY_STRIDE:
2198560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_COLOR_ARRAY_STRIDE)
2199560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_COLOR_ARRAY_TYPE)
2200560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_COLOR_ARRAY_TYPE:
2201560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_COLOR_ARRAY_TYPE)
2202560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_CULL_FACE)
2203560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_CULL_FACE:
2204560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_CULL_FACE)
2205560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_DEPTH_BITS)
2206560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_DEPTH_BITS:
2207560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_DEPTH_BITS)
2208560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_DEPTH_CLEAR_VALUE)
2209560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_DEPTH_CLEAR_VALUE:
2210560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_DEPTH_CLEAR_VALUE)
2211560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_DEPTH_FUNC)
2212560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_DEPTH_FUNC:
2213560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_DEPTH_FUNC)
2214560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_DEPTH_WRITEMASK)
2215560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_DEPTH_WRITEMASK:
2216560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_DEPTH_WRITEMASK)
2217560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_FOG_DENSITY)
2218560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_FOG_DENSITY:
2219560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_FOG_DENSITY)
2220560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_FOG_END)
2221560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_FOG_END:
2222560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_FOG_END)
2223560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_FOG_MODE)
2224560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_FOG_MODE:
2225560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_FOG_MODE)
2226560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_FOG_START)
2227560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_FOG_START:
2228560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_FOG_START)
2229560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_FRONT_FACE)
2230560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_FRONT_FACE:
2231560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_FRONT_FACE)
2232560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_GREEN_BITS)
2233560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_GREEN_BITS:
2234560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_GREEN_BITS)
2235560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_IMPLEMENTATION_COLOR_READ_FORMAT_OES)
2236560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_IMPLEMENTATION_COLOR_READ_FORMAT_OES:
2237560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_IMPLEMENTATION_COLOR_READ_FORMAT_OES)
2238560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_IMPLEMENTATION_COLOR_READ_TYPE_OES)
2239560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_IMPLEMENTATION_COLOR_READ_TYPE_OES:
2240560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_IMPLEMENTATION_COLOR_READ_TYPE_OES)
2241560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_LIGHT_MODEL_COLOR_CONTROL)
2242560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_LIGHT_MODEL_COLOR_CONTROL:
2243560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_LIGHT_MODEL_COLOR_CONTROL)
2244560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_LIGHT_MODEL_LOCAL_VIEWER)
2245560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_LIGHT_MODEL_LOCAL_VIEWER:
2246560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_LIGHT_MODEL_LOCAL_VIEWER)
2247560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_LIGHT_MODEL_TWO_SIDE)
2248560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_LIGHT_MODEL_TWO_SIDE:
2249560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_LIGHT_MODEL_TWO_SIDE)
2250560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_LINE_SMOOTH_HINT)
2251560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_LINE_SMOOTH_HINT:
2252560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_LINE_SMOOTH_HINT)
2253560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_LINE_WIDTH)
2254560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_LINE_WIDTH:
2255560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_LINE_WIDTH)
2256560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_LOGIC_OP_MODE)
2257560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_LOGIC_OP_MODE:
2258560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_LOGIC_OP_MODE)
2259560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_MATRIX_INDEX_ARRAY_BUFFER_BINDING_OES)
2260560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_MATRIX_INDEX_ARRAY_BUFFER_BINDING_OES:
2261560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_MATRIX_INDEX_ARRAY_BUFFER_BINDING_OES)
2262560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_MATRIX_INDEX_ARRAY_SIZE_OES)
2263560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_MATRIX_INDEX_ARRAY_SIZE_OES:
2264560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_MATRIX_INDEX_ARRAY_SIZE_OES)
2265560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_MATRIX_INDEX_ARRAY_STRIDE_OES)
2266560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_MATRIX_INDEX_ARRAY_STRIDE_OES:
2267560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_MATRIX_INDEX_ARRAY_STRIDE_OES)
2268560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_MATRIX_INDEX_ARRAY_TYPE_OES)
2269560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_MATRIX_INDEX_ARRAY_TYPE_OES:
2270560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_MATRIX_INDEX_ARRAY_TYPE_OES)
2271560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_MATRIX_MODE)
2272560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_MATRIX_MODE:
2273560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_MATRIX_MODE)
2274560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_MAX_CLIP_PLANES)
2275560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_MAX_CLIP_PLANES:
2276560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_MAX_CLIP_PLANES)
2277560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_MAX_ELEMENTS_INDICES)
2278560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_MAX_ELEMENTS_INDICES:
2279560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_MAX_ELEMENTS_INDICES)
2280560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_MAX_ELEMENTS_VERTICES)
2281560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_MAX_ELEMENTS_VERTICES:
2282560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_MAX_ELEMENTS_VERTICES)
2283560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_MAX_LIGHTS)
2284560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_MAX_LIGHTS:
2285560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_MAX_LIGHTS)
2286560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_MAX_MODELVIEW_STACK_DEPTH)
2287560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_MAX_MODELVIEW_STACK_DEPTH:
2288560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_MAX_MODELVIEW_STACK_DEPTH)
2289560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_MAX_PALETTE_MATRICES_OES)
2290560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_MAX_PALETTE_MATRICES_OES:
2291560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_MAX_PALETTE_MATRICES_OES)
2292560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_MAX_PROJECTION_STACK_DEPTH)
2293560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_MAX_PROJECTION_STACK_DEPTH:
2294560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_MAX_PROJECTION_STACK_DEPTH)
2295560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_MAX_TEXTURE_SIZE)
2296560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_MAX_TEXTURE_SIZE:
2297560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_MAX_TEXTURE_SIZE)
2298560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_MAX_TEXTURE_STACK_DEPTH)
2299560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_MAX_TEXTURE_STACK_DEPTH:
2300560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_MAX_TEXTURE_STACK_DEPTH)
2301560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_MAX_TEXTURE_UNITS)
2302560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_MAX_TEXTURE_UNITS:
2303560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_MAX_TEXTURE_UNITS)
2304560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_MAX_VERTEX_UNITS_OES)
2305560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_MAX_VERTEX_UNITS_OES:
2306560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_MAX_VERTEX_UNITS_OES)
2307560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_MODELVIEW_STACK_DEPTH)
2308560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_MODELVIEW_STACK_DEPTH:
2309560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_MODELVIEW_STACK_DEPTH)
2310560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_NORMAL_ARRAY_BUFFER_BINDING)
2311560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_NORMAL_ARRAY_BUFFER_BINDING:
2312560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_NORMAL_ARRAY_BUFFER_BINDING)
2313560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_NORMAL_ARRAY_STRIDE)
2314560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_NORMAL_ARRAY_STRIDE:
2315560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_NORMAL_ARRAY_STRIDE)
2316560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_NORMAL_ARRAY_TYPE)
2317560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_NORMAL_ARRAY_TYPE:
2318560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_NORMAL_ARRAY_TYPE)
2319560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_NUM_COMPRESSED_TEXTURE_FORMATS)
2320560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_NUM_COMPRESSED_TEXTURE_FORMATS:
2321560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_NUM_COMPRESSED_TEXTURE_FORMATS)
2322560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_PACK_ALIGNMENT)
2323560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_PACK_ALIGNMENT:
2324560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_PACK_ALIGNMENT)
2325560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_PERSPECTIVE_CORRECTION_HINT)
2326560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_PERSPECTIVE_CORRECTION_HINT:
2327560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_PERSPECTIVE_CORRECTION_HINT)
2328560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_POINT_SIZE)
2329560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_POINT_SIZE:
2330560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_POINT_SIZE)
2331560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_POINT_SIZE_ARRAY_BUFFER_BINDING_OES)
2332560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_POINT_SIZE_ARRAY_BUFFER_BINDING_OES:
2333560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_POINT_SIZE_ARRAY_BUFFER_BINDING_OES)
2334560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_POINT_SIZE_ARRAY_STRIDE_OES)
2335560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_POINT_SIZE_ARRAY_STRIDE_OES:
2336560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_POINT_SIZE_ARRAY_STRIDE_OES)
2337560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_POINT_SIZE_ARRAY_TYPE_OES)
2338560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_POINT_SIZE_ARRAY_TYPE_OES:
2339560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_POINT_SIZE_ARRAY_TYPE_OES)
2340560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_POINT_SMOOTH_HINT)
2341560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_POINT_SMOOTH_HINT:
2342560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_POINT_SMOOTH_HINT)
2343560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_POLYGON_OFFSET_FACTOR)
2344560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_POLYGON_OFFSET_FACTOR:
2345560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_POLYGON_OFFSET_FACTOR)
2346560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_POLYGON_OFFSET_UNITS)
2347560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_POLYGON_OFFSET_UNITS:
2348560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_POLYGON_OFFSET_UNITS)
2349560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_PROJECTION_STACK_DEPTH)
2350560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_PROJECTION_STACK_DEPTH:
2351560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_PROJECTION_STACK_DEPTH)
2352560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_RED_BITS)
2353560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_RED_BITS:
2354560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_RED_BITS)
2355560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_SHADE_MODEL)
2356560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_SHADE_MODEL:
2357560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_SHADE_MODEL)
2358560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_STENCIL_BITS)
2359560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_STENCIL_BITS:
2360560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_STENCIL_BITS)
2361560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_STENCIL_CLEAR_VALUE)
2362560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_STENCIL_CLEAR_VALUE:
2363560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_STENCIL_CLEAR_VALUE)
2364560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_STENCIL_FAIL)
2365560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_STENCIL_FAIL:
2366560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_STENCIL_FAIL)
2367560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_STENCIL_FUNC)
2368560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_STENCIL_FUNC:
2369560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_STENCIL_FUNC)
2370560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_STENCIL_PASS_DEPTH_FAIL)
2371560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_STENCIL_PASS_DEPTH_FAIL:
2372560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_STENCIL_PASS_DEPTH_FAIL)
2373560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_STENCIL_PASS_DEPTH_PASS)
2374560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_STENCIL_PASS_DEPTH_PASS:
2375560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_STENCIL_PASS_DEPTH_PASS)
2376560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_STENCIL_REF)
2377560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_STENCIL_REF:
2378560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_STENCIL_REF)
2379560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_STENCIL_VALUE_MASK)
2380560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_STENCIL_VALUE_MASK:
2381560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_STENCIL_VALUE_MASK)
2382560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_STENCIL_WRITEMASK)
2383560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_STENCIL_WRITEMASK:
2384560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_STENCIL_WRITEMASK)
2385560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_SUBPIXEL_BITS)
2386560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_SUBPIXEL_BITS:
2387560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_SUBPIXEL_BITS)
2388560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_TEXTURE_BINDING_2D)
2389560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_TEXTURE_BINDING_2D:
2390560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_TEXTURE_BINDING_2D)
2391560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING)
2392560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING:
2393560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING)
2394560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_TEXTURE_COORD_ARRAY_SIZE)
2395560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_TEXTURE_COORD_ARRAY_SIZE:
2396560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_TEXTURE_COORD_ARRAY_SIZE)
2397560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_TEXTURE_COORD_ARRAY_STRIDE)
2398560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_TEXTURE_COORD_ARRAY_STRIDE:
2399560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_TEXTURE_COORD_ARRAY_STRIDE)
2400560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_TEXTURE_COORD_ARRAY_TYPE)
2401560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_TEXTURE_COORD_ARRAY_TYPE:
2402560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_TEXTURE_COORD_ARRAY_TYPE)
2403560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_TEXTURE_STACK_DEPTH)
2404560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_TEXTURE_STACK_DEPTH:
2405560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_TEXTURE_STACK_DEPTH)
2406560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_UNPACK_ALIGNMENT)
2407560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_UNPACK_ALIGNMENT:
2408560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_UNPACK_ALIGNMENT)
2409560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_VERTEX_ARRAY_BUFFER_BINDING)
2410560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_VERTEX_ARRAY_BUFFER_BINDING:
2411560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_VERTEX_ARRAY_BUFFER_BINDING)
2412560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_VERTEX_ARRAY_SIZE)
2413560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_VERTEX_ARRAY_SIZE:
2414560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_VERTEX_ARRAY_SIZE)
2415560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_VERTEX_ARRAY_STRIDE)
2416560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_VERTEX_ARRAY_STRIDE:
2417560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_VERTEX_ARRAY_STRIDE)
2418560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_VERTEX_ARRAY_TYPE)
2419560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_VERTEX_ARRAY_TYPE:
2420560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_VERTEX_ARRAY_TYPE)
2421560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_WEIGHT_ARRAY_BUFFER_BINDING_OES)
2422560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_WEIGHT_ARRAY_BUFFER_BINDING_OES:
2423560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_WEIGHT_ARRAY_BUFFER_BINDING_OES)
2424560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_WEIGHT_ARRAY_SIZE_OES)
2425560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_WEIGHT_ARRAY_SIZE_OES:
2426560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_WEIGHT_ARRAY_SIZE_OES)
2427560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_WEIGHT_ARRAY_STRIDE_OES)
2428560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_WEIGHT_ARRAY_STRIDE_OES:
2429560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_WEIGHT_ARRAY_STRIDE_OES)
2430560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_WEIGHT_ARRAY_TYPE_OES)
2431560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_WEIGHT_ARRAY_TYPE_OES:
2432560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_WEIGHT_ARRAY_TYPE_OES)
2433560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich            _needed = 1;
2434560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich            break;
2435560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_ALIASED_POINT_SIZE_RANGE)
2436560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_ALIASED_POINT_SIZE_RANGE:
2437560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_ALIASED_POINT_SIZE_RANGE)
2438560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_ALIASED_LINE_WIDTH_RANGE)
2439560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_ALIASED_LINE_WIDTH_RANGE:
2440560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_ALIASED_LINE_WIDTH_RANGE)
2441560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_DEPTH_RANGE)
2442560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_DEPTH_RANGE:
2443560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_DEPTH_RANGE)
2444560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_MAX_VIEWPORT_DIMS)
2445560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_MAX_VIEWPORT_DIMS:
2446560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_MAX_VIEWPORT_DIMS)
2447560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_SMOOTH_LINE_WIDTH_RANGE)
2448560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_SMOOTH_LINE_WIDTH_RANGE:
2449560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_SMOOTH_LINE_WIDTH_RANGE)
2450560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_SMOOTH_POINT_SIZE_RANGE)
2451560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_SMOOTH_POINT_SIZE_RANGE:
2452560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_SMOOTH_POINT_SIZE_RANGE)
2453560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich            _needed = 2;
2454560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich            break;
2455560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_COLOR_CLEAR_VALUE)
2456560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_COLOR_CLEAR_VALUE:
2457560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_COLOR_CLEAR_VALUE)
2458560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_COLOR_WRITEMASK)
2459560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_COLOR_WRITEMASK:
2460560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_COLOR_WRITEMASK)
2461560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_FOG_COLOR)
2462560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_FOG_COLOR:
2463560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_FOG_COLOR)
2464560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_LIGHT_MODEL_AMBIENT)
2465560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_LIGHT_MODEL_AMBIENT:
2466560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_LIGHT_MODEL_AMBIENT)
2467560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_SCISSOR_BOX)
2468560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_SCISSOR_BOX:
2469560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_SCISSOR_BOX)
2470560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_VIEWPORT)
2471560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_VIEWPORT:
2472560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_VIEWPORT)
2473560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich            _needed = 4;
2474560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich            break;
2475560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_MODELVIEW_MATRIX)
2476560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_MODELVIEW_MATRIX:
2477560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_MODELVIEW_MATRIX)
2478560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_MODELVIEW_MATRIX_FLOAT_AS_INT_BITS_OES)
2479560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_MODELVIEW_MATRIX_FLOAT_AS_INT_BITS_OES:
2480560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_MODELVIEW_MATRIX_FLOAT_AS_INT_BITS_OES)
2481560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_PROJECTION_MATRIX)
2482560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_PROJECTION_MATRIX:
2483560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_PROJECTION_MATRIX)
2484560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_PROJECTION_MATRIX_FLOAT_AS_INT_BITS_OES)
2485560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_PROJECTION_MATRIX_FLOAT_AS_INT_BITS_OES:
2486560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_PROJECTION_MATRIX_FLOAT_AS_INT_BITS_OES)
2487560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_TEXTURE_MATRIX)
2488560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_TEXTURE_MATRIX:
2489560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_TEXTURE_MATRIX)
2490560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_TEXTURE_MATRIX_FLOAT_AS_INT_BITS_OES)
2491560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_TEXTURE_MATRIX_FLOAT_AS_INT_BITS_OES:
2492560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_TEXTURE_MATRIX_FLOAT_AS_INT_BITS_OES)
2493560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich            _needed = 16;
2494560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich            break;
2495560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_COMPRESSED_TEXTURE_FORMATS)
2496560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_COMPRESSED_TEXTURE_FORMATS:
2497560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_COMPRESSED_TEXTURE_FORMATS)
2498560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich            _needed = getNumCompressedTextureFormats();
2499560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich            break;
2500560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        default:
2501560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich            _needed = 0;
2502560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich            break;
2503560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
2504560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (_remaining < _needed) {
2505560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _exception = 1;
25062545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
25072545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "length - offset < needed";
2508560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
2509560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
2510560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    params_base = (GLint *)
2511560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _env->GetPrimitiveArrayCritical(params_ref, (jboolean *)0);
2512560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    params = params_base + offset;
2513560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
2514560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glGetIntegerv(
2515560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLenum)pname,
2516560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLint *)params
2517560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
2518560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
2519560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichexit:
2520560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (params_base) {
2521560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _env->ReleasePrimitiveArrayCritical(params_ref, params_base,
2522560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich            _exception ? JNI_ABORT: 0);
2523560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
25242545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    if (_exception) {
25252545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        jniThrowException(_env, _exceptionType, _exceptionMessage);
25262545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    }
2527560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
2528560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
2529560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glGetIntegerv ( GLenum pname, GLint *params ) */
2530560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
2531560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glGetIntegerv__ILjava_nio_IntBuffer_2
2532560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint pname, jobject params_buf) {
2533560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _exception = 0;
25342545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    const char * _exceptionType;
25352545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    const char * _exceptionMessage;
2536560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jarray _array = (jarray) 0;
253717045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    jint _bufferOffset = (jint) 0;
2538560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _remaining;
2539560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLint *params = (GLint *) 0;
2540560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
254117045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    params = (GLint *)getPointer(_env, params_buf, &_array, &_remaining, &_bufferOffset);
2542560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    int _needed;
2543560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    switch (pname) {
2544560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_ALPHA_BITS)
2545560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_ALPHA_BITS:
2546560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_ALPHA_BITS)
2547560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_ALPHA_TEST_FUNC)
2548560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_ALPHA_TEST_FUNC:
2549560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_ALPHA_TEST_FUNC)
2550560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_ALPHA_TEST_REF)
2551560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_ALPHA_TEST_REF:
2552560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_ALPHA_TEST_REF)
2553560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_BLEND_DST)
2554560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_BLEND_DST:
2555560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_BLEND_DST)
2556560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_BLUE_BITS)
2557560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_BLUE_BITS:
2558560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_BLUE_BITS)
2559560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_COLOR_ARRAY_BUFFER_BINDING)
2560560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_COLOR_ARRAY_BUFFER_BINDING:
2561560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_COLOR_ARRAY_BUFFER_BINDING)
2562560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_COLOR_ARRAY_SIZE)
2563560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_COLOR_ARRAY_SIZE:
2564560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_COLOR_ARRAY_SIZE)
2565560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_COLOR_ARRAY_STRIDE)
2566560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_COLOR_ARRAY_STRIDE:
2567560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_COLOR_ARRAY_STRIDE)
2568560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_COLOR_ARRAY_TYPE)
2569560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_COLOR_ARRAY_TYPE:
2570560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_COLOR_ARRAY_TYPE)
2571560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_CULL_FACE)
2572560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_CULL_FACE:
2573560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_CULL_FACE)
2574560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_DEPTH_BITS)
2575560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_DEPTH_BITS:
2576560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_DEPTH_BITS)
2577560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_DEPTH_CLEAR_VALUE)
2578560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_DEPTH_CLEAR_VALUE:
2579560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_DEPTH_CLEAR_VALUE)
2580560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_DEPTH_FUNC)
2581560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_DEPTH_FUNC:
2582560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_DEPTH_FUNC)
2583560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_DEPTH_WRITEMASK)
2584560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_DEPTH_WRITEMASK:
2585560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_DEPTH_WRITEMASK)
2586560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_FOG_DENSITY)
2587560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_FOG_DENSITY:
2588560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_FOG_DENSITY)
2589560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_FOG_END)
2590560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_FOG_END:
2591560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_FOG_END)
2592560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_FOG_MODE)
2593560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_FOG_MODE:
2594560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_FOG_MODE)
2595560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_FOG_START)
2596560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_FOG_START:
2597560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_FOG_START)
2598560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_FRONT_FACE)
2599560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_FRONT_FACE:
2600560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_FRONT_FACE)
2601560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_GREEN_BITS)
2602560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_GREEN_BITS:
2603560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_GREEN_BITS)
2604560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_IMPLEMENTATION_COLOR_READ_FORMAT_OES)
2605560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_IMPLEMENTATION_COLOR_READ_FORMAT_OES:
2606560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_IMPLEMENTATION_COLOR_READ_FORMAT_OES)
2607560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_IMPLEMENTATION_COLOR_READ_TYPE_OES)
2608560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_IMPLEMENTATION_COLOR_READ_TYPE_OES:
2609560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_IMPLEMENTATION_COLOR_READ_TYPE_OES)
2610560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_LIGHT_MODEL_COLOR_CONTROL)
2611560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_LIGHT_MODEL_COLOR_CONTROL:
2612560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_LIGHT_MODEL_COLOR_CONTROL)
2613560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_LIGHT_MODEL_LOCAL_VIEWER)
2614560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_LIGHT_MODEL_LOCAL_VIEWER:
2615560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_LIGHT_MODEL_LOCAL_VIEWER)
2616560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_LIGHT_MODEL_TWO_SIDE)
2617560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_LIGHT_MODEL_TWO_SIDE:
2618560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_LIGHT_MODEL_TWO_SIDE)
2619560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_LINE_SMOOTH_HINT)
2620560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_LINE_SMOOTH_HINT:
2621560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_LINE_SMOOTH_HINT)
2622560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_LINE_WIDTH)
2623560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_LINE_WIDTH:
2624560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_LINE_WIDTH)
2625560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_LOGIC_OP_MODE)
2626560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_LOGIC_OP_MODE:
2627560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_LOGIC_OP_MODE)
2628560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_MATRIX_INDEX_ARRAY_BUFFER_BINDING_OES)
2629560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_MATRIX_INDEX_ARRAY_BUFFER_BINDING_OES:
2630560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_MATRIX_INDEX_ARRAY_BUFFER_BINDING_OES)
2631560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_MATRIX_INDEX_ARRAY_SIZE_OES)
2632560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_MATRIX_INDEX_ARRAY_SIZE_OES:
2633560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_MATRIX_INDEX_ARRAY_SIZE_OES)
2634560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_MATRIX_INDEX_ARRAY_STRIDE_OES)
2635560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_MATRIX_INDEX_ARRAY_STRIDE_OES:
2636560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_MATRIX_INDEX_ARRAY_STRIDE_OES)
2637560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_MATRIX_INDEX_ARRAY_TYPE_OES)
2638560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_MATRIX_INDEX_ARRAY_TYPE_OES:
2639560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_MATRIX_INDEX_ARRAY_TYPE_OES)
2640560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_MATRIX_MODE)
2641560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_MATRIX_MODE:
2642560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_MATRIX_MODE)
2643560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_MAX_CLIP_PLANES)
2644560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_MAX_CLIP_PLANES:
2645560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_MAX_CLIP_PLANES)
2646560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_MAX_ELEMENTS_INDICES)
2647560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_MAX_ELEMENTS_INDICES:
2648560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_MAX_ELEMENTS_INDICES)
2649560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_MAX_ELEMENTS_VERTICES)
2650560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_MAX_ELEMENTS_VERTICES:
2651560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_MAX_ELEMENTS_VERTICES)
2652560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_MAX_LIGHTS)
2653560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_MAX_LIGHTS:
2654560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_MAX_LIGHTS)
2655560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_MAX_MODELVIEW_STACK_DEPTH)
2656560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_MAX_MODELVIEW_STACK_DEPTH:
2657560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_MAX_MODELVIEW_STACK_DEPTH)
2658560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_MAX_PALETTE_MATRICES_OES)
2659560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_MAX_PALETTE_MATRICES_OES:
2660560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_MAX_PALETTE_MATRICES_OES)
2661560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_MAX_PROJECTION_STACK_DEPTH)
2662560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_MAX_PROJECTION_STACK_DEPTH:
2663560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_MAX_PROJECTION_STACK_DEPTH)
2664560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_MAX_TEXTURE_SIZE)
2665560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_MAX_TEXTURE_SIZE:
2666560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_MAX_TEXTURE_SIZE)
2667560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_MAX_TEXTURE_STACK_DEPTH)
2668560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_MAX_TEXTURE_STACK_DEPTH:
2669560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_MAX_TEXTURE_STACK_DEPTH)
2670560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_MAX_TEXTURE_UNITS)
2671560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_MAX_TEXTURE_UNITS:
2672560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_MAX_TEXTURE_UNITS)
2673560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_MAX_VERTEX_UNITS_OES)
2674560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_MAX_VERTEX_UNITS_OES:
2675560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_MAX_VERTEX_UNITS_OES)
2676560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_MODELVIEW_STACK_DEPTH)
2677560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_MODELVIEW_STACK_DEPTH:
2678560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_MODELVIEW_STACK_DEPTH)
2679560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_NORMAL_ARRAY_BUFFER_BINDING)
2680560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_NORMAL_ARRAY_BUFFER_BINDING:
2681560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_NORMAL_ARRAY_BUFFER_BINDING)
2682560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_NORMAL_ARRAY_STRIDE)
2683560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_NORMAL_ARRAY_STRIDE:
2684560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_NORMAL_ARRAY_STRIDE)
2685560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_NORMAL_ARRAY_TYPE)
2686560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_NORMAL_ARRAY_TYPE:
2687560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_NORMAL_ARRAY_TYPE)
2688560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_NUM_COMPRESSED_TEXTURE_FORMATS)
2689560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_NUM_COMPRESSED_TEXTURE_FORMATS:
2690560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_NUM_COMPRESSED_TEXTURE_FORMATS)
2691560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_PACK_ALIGNMENT)
2692560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_PACK_ALIGNMENT:
2693560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_PACK_ALIGNMENT)
2694560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_PERSPECTIVE_CORRECTION_HINT)
2695560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_PERSPECTIVE_CORRECTION_HINT:
2696560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_PERSPECTIVE_CORRECTION_HINT)
2697560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_POINT_SIZE)
2698560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_POINT_SIZE:
2699560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_POINT_SIZE)
2700560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_POINT_SIZE_ARRAY_BUFFER_BINDING_OES)
2701560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_POINT_SIZE_ARRAY_BUFFER_BINDING_OES:
2702560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_POINT_SIZE_ARRAY_BUFFER_BINDING_OES)
2703560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_POINT_SIZE_ARRAY_STRIDE_OES)
2704560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_POINT_SIZE_ARRAY_STRIDE_OES:
2705560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_POINT_SIZE_ARRAY_STRIDE_OES)
2706560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_POINT_SIZE_ARRAY_TYPE_OES)
2707560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_POINT_SIZE_ARRAY_TYPE_OES:
2708560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_POINT_SIZE_ARRAY_TYPE_OES)
2709560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_POINT_SMOOTH_HINT)
2710560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_POINT_SMOOTH_HINT:
2711560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_POINT_SMOOTH_HINT)
2712560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_POLYGON_OFFSET_FACTOR)
2713560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_POLYGON_OFFSET_FACTOR:
2714560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_POLYGON_OFFSET_FACTOR)
2715560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_POLYGON_OFFSET_UNITS)
2716560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_POLYGON_OFFSET_UNITS:
2717560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_POLYGON_OFFSET_UNITS)
2718560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_PROJECTION_STACK_DEPTH)
2719560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_PROJECTION_STACK_DEPTH:
2720560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_PROJECTION_STACK_DEPTH)
2721560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_RED_BITS)
2722560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_RED_BITS:
2723560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_RED_BITS)
2724560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_SHADE_MODEL)
2725560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_SHADE_MODEL:
2726560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_SHADE_MODEL)
2727560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_STENCIL_BITS)
2728560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_STENCIL_BITS:
2729560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_STENCIL_BITS)
2730560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_STENCIL_CLEAR_VALUE)
2731560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_STENCIL_CLEAR_VALUE:
2732560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_STENCIL_CLEAR_VALUE)
2733560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_STENCIL_FAIL)
2734560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_STENCIL_FAIL:
2735560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_STENCIL_FAIL)
2736560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_STENCIL_FUNC)
2737560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_STENCIL_FUNC:
2738560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_STENCIL_FUNC)
2739560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_STENCIL_PASS_DEPTH_FAIL)
2740560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_STENCIL_PASS_DEPTH_FAIL:
2741560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_STENCIL_PASS_DEPTH_FAIL)
2742560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_STENCIL_PASS_DEPTH_PASS)
2743560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_STENCIL_PASS_DEPTH_PASS:
2744560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_STENCIL_PASS_DEPTH_PASS)
2745560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_STENCIL_REF)
2746560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_STENCIL_REF:
2747560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_STENCIL_REF)
2748560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_STENCIL_VALUE_MASK)
2749560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_STENCIL_VALUE_MASK:
2750560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_STENCIL_VALUE_MASK)
2751560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_STENCIL_WRITEMASK)
2752560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_STENCIL_WRITEMASK:
2753560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_STENCIL_WRITEMASK)
2754560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_SUBPIXEL_BITS)
2755560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_SUBPIXEL_BITS:
2756560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_SUBPIXEL_BITS)
2757560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_TEXTURE_BINDING_2D)
2758560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_TEXTURE_BINDING_2D:
2759560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_TEXTURE_BINDING_2D)
2760560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING)
2761560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING:
2762560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING)
2763560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_TEXTURE_COORD_ARRAY_SIZE)
2764560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_TEXTURE_COORD_ARRAY_SIZE:
2765560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_TEXTURE_COORD_ARRAY_SIZE)
2766560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_TEXTURE_COORD_ARRAY_STRIDE)
2767560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_TEXTURE_COORD_ARRAY_STRIDE:
2768560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_TEXTURE_COORD_ARRAY_STRIDE)
2769560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_TEXTURE_COORD_ARRAY_TYPE)
2770560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_TEXTURE_COORD_ARRAY_TYPE:
2771560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_TEXTURE_COORD_ARRAY_TYPE)
2772560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_TEXTURE_STACK_DEPTH)
2773560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_TEXTURE_STACK_DEPTH:
2774560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_TEXTURE_STACK_DEPTH)
2775560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_UNPACK_ALIGNMENT)
2776560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_UNPACK_ALIGNMENT:
2777560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_UNPACK_ALIGNMENT)
2778560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_VERTEX_ARRAY_BUFFER_BINDING)
2779560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_VERTEX_ARRAY_BUFFER_BINDING:
2780560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_VERTEX_ARRAY_BUFFER_BINDING)
2781560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_VERTEX_ARRAY_SIZE)
2782560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_VERTEX_ARRAY_SIZE:
2783560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_VERTEX_ARRAY_SIZE)
2784560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_VERTEX_ARRAY_STRIDE)
2785560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_VERTEX_ARRAY_STRIDE:
2786560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_VERTEX_ARRAY_STRIDE)
2787560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_VERTEX_ARRAY_TYPE)
2788560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_VERTEX_ARRAY_TYPE:
2789560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_VERTEX_ARRAY_TYPE)
2790560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_WEIGHT_ARRAY_BUFFER_BINDING_OES)
2791560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_WEIGHT_ARRAY_BUFFER_BINDING_OES:
2792560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_WEIGHT_ARRAY_BUFFER_BINDING_OES)
2793560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_WEIGHT_ARRAY_SIZE_OES)
2794560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_WEIGHT_ARRAY_SIZE_OES:
2795560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_WEIGHT_ARRAY_SIZE_OES)
2796560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_WEIGHT_ARRAY_STRIDE_OES)
2797560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_WEIGHT_ARRAY_STRIDE_OES:
2798560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_WEIGHT_ARRAY_STRIDE_OES)
2799560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_WEIGHT_ARRAY_TYPE_OES)
2800560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_WEIGHT_ARRAY_TYPE_OES:
2801560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_WEIGHT_ARRAY_TYPE_OES)
2802560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich            _needed = 1;
2803560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich            break;
2804560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_ALIASED_POINT_SIZE_RANGE)
2805560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_ALIASED_POINT_SIZE_RANGE:
2806560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_ALIASED_POINT_SIZE_RANGE)
2807560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_ALIASED_LINE_WIDTH_RANGE)
2808560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_ALIASED_LINE_WIDTH_RANGE:
2809560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_ALIASED_LINE_WIDTH_RANGE)
2810560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_DEPTH_RANGE)
2811560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_DEPTH_RANGE:
2812560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_DEPTH_RANGE)
2813560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_MAX_VIEWPORT_DIMS)
2814560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_MAX_VIEWPORT_DIMS:
2815560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_MAX_VIEWPORT_DIMS)
2816560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_SMOOTH_LINE_WIDTH_RANGE)
2817560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_SMOOTH_LINE_WIDTH_RANGE:
2818560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_SMOOTH_LINE_WIDTH_RANGE)
2819560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_SMOOTH_POINT_SIZE_RANGE)
2820560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_SMOOTH_POINT_SIZE_RANGE:
2821560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_SMOOTH_POINT_SIZE_RANGE)
2822560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich            _needed = 2;
2823560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich            break;
2824560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_COLOR_CLEAR_VALUE)
2825560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_COLOR_CLEAR_VALUE:
2826560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_COLOR_CLEAR_VALUE)
2827560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_COLOR_WRITEMASK)
2828560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_COLOR_WRITEMASK:
2829560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_COLOR_WRITEMASK)
2830560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_FOG_COLOR)
2831560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_FOG_COLOR:
2832560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_FOG_COLOR)
2833560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_LIGHT_MODEL_AMBIENT)
2834560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_LIGHT_MODEL_AMBIENT:
2835560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_LIGHT_MODEL_AMBIENT)
2836560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_SCISSOR_BOX)
2837560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_SCISSOR_BOX:
2838560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_SCISSOR_BOX)
2839560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_VIEWPORT)
2840560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_VIEWPORT:
2841560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_VIEWPORT)
2842560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich            _needed = 4;
2843560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich            break;
2844560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_MODELVIEW_MATRIX)
2845560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_MODELVIEW_MATRIX:
2846560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_MODELVIEW_MATRIX)
2847560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_MODELVIEW_MATRIX_FLOAT_AS_INT_BITS_OES)
2848560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_MODELVIEW_MATRIX_FLOAT_AS_INT_BITS_OES:
2849560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_MODELVIEW_MATRIX_FLOAT_AS_INT_BITS_OES)
2850560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_PROJECTION_MATRIX)
2851560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_PROJECTION_MATRIX:
2852560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_PROJECTION_MATRIX)
2853560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_PROJECTION_MATRIX_FLOAT_AS_INT_BITS_OES)
2854560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_PROJECTION_MATRIX_FLOAT_AS_INT_BITS_OES:
2855560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_PROJECTION_MATRIX_FLOAT_AS_INT_BITS_OES)
2856560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_TEXTURE_MATRIX)
2857560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_TEXTURE_MATRIX:
2858560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_TEXTURE_MATRIX)
2859560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_TEXTURE_MATRIX_FLOAT_AS_INT_BITS_OES)
2860560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_TEXTURE_MATRIX_FLOAT_AS_INT_BITS_OES:
2861560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_TEXTURE_MATRIX_FLOAT_AS_INT_BITS_OES)
2862560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich            _needed = 16;
2863560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich            break;
2864560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_COMPRESSED_TEXTURE_FORMATS)
2865560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_COMPRESSED_TEXTURE_FORMATS:
2866560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_COMPRESSED_TEXTURE_FORMATS)
2867560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich            _needed = getNumCompressedTextureFormats();
2868560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich            break;
2869560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        default:
2870560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich            _needed = 0;
2871560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich            break;
2872560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
2873560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (_remaining < _needed) {
2874560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _exception = 1;
28752545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
28762545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "remaining() < needed";
2877560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
2878560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
287917045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    if (params == NULL) {
288017045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        char * _paramsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
288117045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        params = (GLint *) (_paramsBase + _bufferOffset);
288217045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    }
2883560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glGetIntegerv(
2884560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLenum)pname,
2885560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLint *)params
2886560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
2887560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
2888560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichexit:
2889560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (_array) {
2890560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        releasePointer(_env, _array, params, _exception ? JNI_FALSE : JNI_TRUE);
2891560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
28922545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    if (_exception) {
28932545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        jniThrowException(_env, _exceptionType, _exceptionMessage);
28942545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    }
2895560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
2896560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
2897560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glGetProgramiv ( GLuint program, GLenum pname, GLint *params ) */
2898560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
2899560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glGetProgramiv__II_3II
2900560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint program, jint pname, jintArray params_ref, jint offset) {
2901560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _exception = 0;
29022545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    const char * _exceptionType;
29032545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    const char * _exceptionMessage;
2904560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLint *params_base = (GLint *) 0;
2905560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _remaining;
2906560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLint *params = (GLint *) 0;
2907560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
2908560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (!params_ref) {
2909560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _exception = 1;
29102545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
29112545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "params == null";
2912560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
2913560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
2914560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (offset < 0) {
2915560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _exception = 1;
29162545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
29172545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "offset < 0";
2918560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
2919560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
2920560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    _remaining = _env->GetArrayLength(params_ref) - offset;
2921560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    params_base = (GLint *)
2922560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _env->GetPrimitiveArrayCritical(params_ref, (jboolean *)0);
2923560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    params = params_base + offset;
2924560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
2925560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glGetProgramiv(
2926560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLuint)program,
2927560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLenum)pname,
2928560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLint *)params
2929560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
2930560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
2931560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichexit:
2932560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (params_base) {
2933560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _env->ReleasePrimitiveArrayCritical(params_ref, params_base,
2934560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich            _exception ? JNI_ABORT: 0);
2935560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
29362545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    if (_exception) {
29372545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        jniThrowException(_env, _exceptionType, _exceptionMessage);
29382545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    }
2939560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
2940560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
2941560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glGetProgramiv ( GLuint program, GLenum pname, GLint *params ) */
2942560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
2943560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glGetProgramiv__IILjava_nio_IntBuffer_2
2944560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint program, jint pname, jobject params_buf) {
2945560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jarray _array = (jarray) 0;
294617045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    jint _bufferOffset = (jint) 0;
2947560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _remaining;
2948560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLint *params = (GLint *) 0;
2949560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
295017045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    params = (GLint *)getPointer(_env, params_buf, &_array, &_remaining, &_bufferOffset);
295117045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    if (params == NULL) {
295217045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        char * _paramsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
295317045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        params = (GLint *) (_paramsBase + _bufferOffset);
295417045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    }
2955560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glGetProgramiv(
2956560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLuint)program,
2957560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLenum)pname,
2958560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLint *)params
2959560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
2960560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (_array) {
29612545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        releasePointer(_env, _array, params, JNI_TRUE);
2962560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
2963560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
2964560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
296524ce5fb2cc09d0a14406e7b935f8648c5720d27eElliott Hughes#include <stdlib.h>
2966560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
2967560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glGetProgramInfoLog ( GLuint shader, GLsizei maxLength, GLsizei* length, GLchar* infoLog ) */
296824ce5fb2cc09d0a14406e7b935f8648c5720d27eElliott Hughesstatic jstring android_glGetProgramInfoLog(JNIEnv *_env, jobject, jint shader) {
2969560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLint infoLen = 0;
2970560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glGetProgramiv(shader, GL_INFO_LOG_LENGTH, &infoLen);
297124ce5fb2cc09d0a14406e7b935f8648c5720d27eElliott Hughes    if (!infoLen) {
297224ce5fb2cc09d0a14406e7b935f8648c5720d27eElliott Hughes        return _env->NewStringUTF("");
2973560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
297424ce5fb2cc09d0a14406e7b935f8648c5720d27eElliott Hughes    char* buf = (char*) malloc(infoLen);
297524ce5fb2cc09d0a14406e7b935f8648c5720d27eElliott Hughes    if (buf == NULL) {
297624ce5fb2cc09d0a14406e7b935f8648c5720d27eElliott Hughes        jniThrowException(_env, "java/lang/IllegalArgumentException", "out of memory");
297724ce5fb2cc09d0a14406e7b935f8648c5720d27eElliott Hughes        return NULL;
2978560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
297924ce5fb2cc09d0a14406e7b935f8648c5720d27eElliott Hughes    glGetProgramInfoLog(shader, infoLen, NULL, buf);
298024ce5fb2cc09d0a14406e7b935f8648c5720d27eElliott Hughes    jstring result = _env->NewStringUTF(buf);
298124ce5fb2cc09d0a14406e7b935f8648c5720d27eElliott Hughes    free(buf);
298224ce5fb2cc09d0a14406e7b935f8648c5720d27eElliott Hughes    return result;
2983560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
2984560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glGetRenderbufferParameteriv ( GLenum target, GLenum pname, GLint *params ) */
2985560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
2986560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glGetRenderbufferParameteriv__II_3II
2987560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint target, jint pname, jintArray params_ref, jint offset) {
2988560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _exception = 0;
29892545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    const char * _exceptionType;
29902545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    const char * _exceptionMessage;
2991560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLint *params_base = (GLint *) 0;
2992560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _remaining;
2993560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLint *params = (GLint *) 0;
2994560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
2995560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (!params_ref) {
2996560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _exception = 1;
29972545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
29982545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "params == null";
2999560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
3000560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
3001560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (offset < 0) {
3002560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _exception = 1;
30032545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
30042545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "offset < 0";
3005560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
3006560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
3007560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    _remaining = _env->GetArrayLength(params_ref) - offset;
3008560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    params_base = (GLint *)
3009560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _env->GetPrimitiveArrayCritical(params_ref, (jboolean *)0);
3010560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    params = params_base + offset;
3011560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
3012560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glGetRenderbufferParameteriv(
3013560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLenum)target,
3014560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLenum)pname,
3015560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLint *)params
3016560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
3017560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
3018560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichexit:
3019560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (params_base) {
3020560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _env->ReleasePrimitiveArrayCritical(params_ref, params_base,
3021560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich            _exception ? JNI_ABORT: 0);
3022560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
30232545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    if (_exception) {
30242545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        jniThrowException(_env, _exceptionType, _exceptionMessage);
30252545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    }
3026560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
3027560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
3028560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glGetRenderbufferParameteriv ( GLenum target, GLenum pname, GLint *params ) */
3029560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
3030560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glGetRenderbufferParameteriv__IILjava_nio_IntBuffer_2
3031560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint target, jint pname, jobject params_buf) {
3032560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jarray _array = (jarray) 0;
303317045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    jint _bufferOffset = (jint) 0;
3034560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _remaining;
3035560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLint *params = (GLint *) 0;
3036560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
303717045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    params = (GLint *)getPointer(_env, params_buf, &_array, &_remaining, &_bufferOffset);
303817045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    if (params == NULL) {
303917045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        char * _paramsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
304017045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        params = (GLint *) (_paramsBase + _bufferOffset);
304117045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    }
3042560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glGetRenderbufferParameteriv(
3043560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLenum)target,
3044560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLenum)pname,
3045560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLint *)params
3046560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
3047560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (_array) {
30482545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        releasePointer(_env, _array, params, JNI_TRUE);
3049560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
3050560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
3051560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
3052560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glGetShaderiv ( GLuint shader, GLenum pname, GLint *params ) */
3053560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
3054560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glGetShaderiv__II_3II
3055560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint shader, jint pname, jintArray params_ref, jint offset) {
3056560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _exception = 0;
30572545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    const char * _exceptionType;
30582545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    const char * _exceptionMessage;
3059560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLint *params_base = (GLint *) 0;
3060560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _remaining;
3061560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLint *params = (GLint *) 0;
3062560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
3063560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (!params_ref) {
3064560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _exception = 1;
30652545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
30662545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "params == null";
3067560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
3068560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
3069560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (offset < 0) {
3070560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _exception = 1;
30712545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
30722545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "offset < 0";
3073560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
3074560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
3075560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    _remaining = _env->GetArrayLength(params_ref) - offset;
3076560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    params_base = (GLint *)
3077560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _env->GetPrimitiveArrayCritical(params_ref, (jboolean *)0);
3078560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    params = params_base + offset;
3079560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
3080560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glGetShaderiv(
3081560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLuint)shader,
3082560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLenum)pname,
3083560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLint *)params
3084560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
3085560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
3086560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichexit:
3087560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (params_base) {
3088560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _env->ReleasePrimitiveArrayCritical(params_ref, params_base,
3089560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich            _exception ? JNI_ABORT: 0);
3090560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
30912545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    if (_exception) {
30922545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        jniThrowException(_env, _exceptionType, _exceptionMessage);
30932545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    }
3094560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
3095560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
3096560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glGetShaderiv ( GLuint shader, GLenum pname, GLint *params ) */
3097560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
3098560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glGetShaderiv__IILjava_nio_IntBuffer_2
3099560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint shader, jint pname, jobject params_buf) {
3100560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jarray _array = (jarray) 0;
310117045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    jint _bufferOffset = (jint) 0;
3102560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _remaining;
3103560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLint *params = (GLint *) 0;
3104560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
310517045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    params = (GLint *)getPointer(_env, params_buf, &_array, &_remaining, &_bufferOffset);
310617045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    if (params == NULL) {
310717045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        char * _paramsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
310817045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        params = (GLint *) (_paramsBase + _bufferOffset);
310917045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    }
3110560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glGetShaderiv(
3111560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLuint)shader,
3112560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLenum)pname,
3113560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLint *)params
3114560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
3115560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (_array) {
31162545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        releasePointer(_env, _array, params, JNI_TRUE);
3117560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
3118560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
3119560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
312024ce5fb2cc09d0a14406e7b935f8648c5720d27eElliott Hughes#include <stdlib.h>
3121560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
3122560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glGetShaderInfoLog ( GLuint shader, GLsizei maxLength, GLsizei* length, GLchar* infoLog ) */
312324ce5fb2cc09d0a14406e7b935f8648c5720d27eElliott Hughesstatic jstring android_glGetShaderInfoLog(JNIEnv *_env, jobject, jint shader) {
3124560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLint infoLen = 0;
3125560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glGetShaderiv(shader, GL_INFO_LOG_LENGTH, &infoLen);
312624ce5fb2cc09d0a14406e7b935f8648c5720d27eElliott Hughes    if (!infoLen) {
312724ce5fb2cc09d0a14406e7b935f8648c5720d27eElliott Hughes        return _env->NewStringUTF("");
3128560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
312924ce5fb2cc09d0a14406e7b935f8648c5720d27eElliott Hughes    char* buf = (char*) malloc(infoLen);
313024ce5fb2cc09d0a14406e7b935f8648c5720d27eElliott Hughes    if (buf == NULL) {
313124ce5fb2cc09d0a14406e7b935f8648c5720d27eElliott Hughes        jniThrowException(_env, "java/lang/IllegalArgumentException", "out of memory");
313224ce5fb2cc09d0a14406e7b935f8648c5720d27eElliott Hughes        return NULL;
3133560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
313424ce5fb2cc09d0a14406e7b935f8648c5720d27eElliott Hughes    glGetShaderInfoLog(shader, infoLen, NULL, buf);
313524ce5fb2cc09d0a14406e7b935f8648c5720d27eElliott Hughes    jstring result = _env->NewStringUTF(buf);
313624ce5fb2cc09d0a14406e7b935f8648c5720d27eElliott Hughes    free(buf);
313724ce5fb2cc09d0a14406e7b935f8648c5720d27eElliott Hughes    return result;
3138560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
3139560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glGetShaderPrecisionFormat ( GLenum shadertype, GLenum precisiontype, GLint *range, GLint *precision ) */
3140560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
3141560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glGetShaderPrecisionFormat__II_3II_3II
3142560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint shadertype, jint precisiontype, jintArray range_ref, jint rangeOffset, jintArray precision_ref, jint precisionOffset) {
3143560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _exception = 0;
31442545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    const char * _exceptionType;
31452545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    const char * _exceptionMessage;
3146560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLint *range_base = (GLint *) 0;
3147560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _rangeRemaining;
3148560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLint *range = (GLint *) 0;
3149560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLint *precision_base = (GLint *) 0;
3150560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _precisionRemaining;
3151560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLint *precision = (GLint *) 0;
3152560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
3153560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (!range_ref) {
3154560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _exception = 1;
31552545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
31562545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "range == null";
3157560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
3158560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
3159560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (rangeOffset < 0) {
3160560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _exception = 1;
31612545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
31622545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "rangeOffset < 0";
3163560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
3164560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
3165560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    _rangeRemaining = _env->GetArrayLength(range_ref) - rangeOffset;
3166560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    range_base = (GLint *)
3167560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _env->GetPrimitiveArrayCritical(range_ref, (jboolean *)0);
3168560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    range = range_base + rangeOffset;
3169560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
3170560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (!precision_ref) {
3171560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _exception = 1;
31722545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
31732545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "precision == null";
3174560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
3175560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
3176560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (precisionOffset < 0) {
3177560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _exception = 1;
31782545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
31792545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "precisionOffset < 0";
3180560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
3181560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
3182560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    _precisionRemaining = _env->GetArrayLength(precision_ref) - precisionOffset;
3183560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    precision_base = (GLint *)
3184560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _env->GetPrimitiveArrayCritical(precision_ref, (jboolean *)0);
3185560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    precision = precision_base + precisionOffset;
3186560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
3187560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glGetShaderPrecisionFormat(
3188560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLenum)shadertype,
3189560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLenum)precisiontype,
3190560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLint *)range,
3191560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLint *)precision
3192560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
3193560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
3194560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichexit:
3195560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (precision_base) {
3196560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _env->ReleasePrimitiveArrayCritical(precision_ref, precision_base,
3197560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich            _exception ? JNI_ABORT: 0);
3198560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
3199560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (range_base) {
3200560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _env->ReleasePrimitiveArrayCritical(range_ref, range_base,
3201560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich            _exception ? JNI_ABORT: 0);
3202560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
32032545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    if (_exception) {
32042545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        jniThrowException(_env, _exceptionType, _exceptionMessage);
32052545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    }
3206560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
3207560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
3208560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glGetShaderPrecisionFormat ( GLenum shadertype, GLenum precisiontype, GLint *range, GLint *precision ) */
3209560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
3210560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glGetShaderPrecisionFormat__IILjava_nio_IntBuffer_2Ljava_nio_IntBuffer_2
3211560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint shadertype, jint precisiontype, jobject range_buf, jobject precision_buf) {
3212560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jarray _rangeArray = (jarray) 0;
321317045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    jint _rangeBufferOffset = (jint) 0;
3214560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jarray _precisionArray = (jarray) 0;
321517045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    jint _precisionBufferOffset = (jint) 0;
3216560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _rangeRemaining;
3217560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLint *range = (GLint *) 0;
3218560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _precisionRemaining;
3219560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLint *precision = (GLint *) 0;
3220560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
322117045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    range = (GLint *)getPointer(_env, range_buf, &_rangeArray, &_rangeRemaining, &_rangeBufferOffset);
322217045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    precision = (GLint *)getPointer(_env, precision_buf, &_precisionArray, &_precisionRemaining, &_precisionBufferOffset);
322317045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    if (range == NULL) {
322417045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        char * _rangeBase = (char *)_env->GetPrimitiveArrayCritical(_rangeArray, (jboolean *) 0);
322517045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        range = (GLint *) (_rangeBase + _rangeBufferOffset);
322617045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    }
322717045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    if (precision == NULL) {
322817045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        char * _precisionBase = (char *)_env->GetPrimitiveArrayCritical(_precisionArray, (jboolean *) 0);
322917045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        precision = (GLint *) (_precisionBase + _precisionBufferOffset);
323017045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    }
3231560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glGetShaderPrecisionFormat(
3232560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLenum)shadertype,
3233560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLenum)precisiontype,
3234560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLint *)range,
3235560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLint *)precision
3236560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
3237560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (_precisionArray) {
323817045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        releasePointer(_env, _precisionArray, precision, JNI_TRUE);
323917045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    }
324017045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    if (_rangeArray) {
324117045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        releasePointer(_env, _rangeArray, range, JNI_TRUE);
3242560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
3243560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
3244560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
3245560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glGetShaderSource ( GLuint shader, GLsizei bufsize, GLsizei *length, char *source ) */
3246560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
3247560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glGetShaderSource__II_3II_3BI
3248560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint shader, jint bufsize, jintArray length_ref, jint lengthOffset, jbyteArray source_ref, jint sourceOffset) {
3249560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _exception = 0;
32502545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    const char * _exceptionType;
32512545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    const char * _exceptionMessage;
3252560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLsizei *length_base = (GLsizei *) 0;
3253560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _lengthRemaining;
3254560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLsizei *length = (GLsizei *) 0;
3255560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    char *source_base = (char *) 0;
3256560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _sourceRemaining;
3257560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    char *source = (char *) 0;
3258560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
3259560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (!length_ref) {
3260560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _exception = 1;
32612545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
32622545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "length == null";
3263560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
3264560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
3265560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (lengthOffset < 0) {
3266560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _exception = 1;
32672545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
32682545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "lengthOffset < 0";
3269560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
3270560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
3271560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    _lengthRemaining = _env->GetArrayLength(length_ref) - lengthOffset;
3272560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    length_base = (GLsizei *)
3273560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _env->GetPrimitiveArrayCritical(length_ref, (jboolean *)0);
3274560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    length = length_base + lengthOffset;
3275560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
3276560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (!source_ref) {
3277560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _exception = 1;
32782545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
32792545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "source == null";
3280560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
3281560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
3282560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (sourceOffset < 0) {
3283560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _exception = 1;
32842545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
32852545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "sourceOffset < 0";
3286560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
3287560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
3288560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    _sourceRemaining = _env->GetArrayLength(source_ref) - sourceOffset;
3289560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    source_base = (char *)
3290560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _env->GetPrimitiveArrayCritical(source_ref, (jboolean *)0);
3291560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    source = source_base + sourceOffset;
3292560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
3293560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glGetShaderSource(
3294560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLuint)shader,
3295560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLsizei)bufsize,
3296560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLsizei *)length,
3297560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (char *)source
3298560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
3299560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
3300560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichexit:
3301560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (source_base) {
3302560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _env->ReleasePrimitiveArrayCritical(source_ref, source_base,
3303560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich            _exception ? JNI_ABORT: 0);
3304560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
3305560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (length_base) {
3306560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _env->ReleasePrimitiveArrayCritical(length_ref, length_base,
3307560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich            _exception ? JNI_ABORT: 0);
3308560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
33092545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    if (_exception) {
33102545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        jniThrowException(_env, _exceptionType, _exceptionMessage);
33112545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    }
3312560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
3313560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
3314560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glGetShaderSource ( GLuint shader, GLsizei bufsize, GLsizei *length, char *source ) */
3315560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
3316560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glGetShaderSource__IILjava_nio_IntBuffer_2B
3317560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint shader, jint bufsize, jobject length_buf, jbyte source) {
3318560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jarray _array = (jarray) 0;
331917045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    jint _bufferOffset = (jint) 0;
3320560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _remaining;
3321560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLsizei *length = (GLsizei *) 0;
3322560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
332317045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    length = (GLsizei *)getPointer(_env, length_buf, &_array, &_remaining, &_bufferOffset);
332417045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    if (length == NULL) {
332517045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        char * _lengthBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
332617045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        length = (GLsizei *) (_lengthBase + _bufferOffset);
332717045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    }
3328560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glGetShaderSource(
3329560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLuint)shader,
3330560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLsizei)bufsize,
3331560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLsizei *)length,
3332560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (char *)source
3333560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
3334560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (_array) {
33352545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        releasePointer(_env, _array, length, JNI_TRUE);
3336560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
3337560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
3338560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
3339560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* const GLubyte * glGetString ( GLenum name ) */
334024ce5fb2cc09d0a14406e7b935f8648c5720d27eElliott Hughesstatic jstring android_glGetString(JNIEnv* _env, jobject, jint name) {
334124ce5fb2cc09d0a14406e7b935f8648c5720d27eElliott Hughes    const char* chars = (const char*) glGetString((GLenum) name);
334224ce5fb2cc09d0a14406e7b935f8648c5720d27eElliott Hughes    return _env->NewStringUTF(chars);
3343560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
3344560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glGetTexParameterfv ( GLenum target, GLenum pname, GLfloat *params ) */
3345560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
3346560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glGetTexParameterfv__II_3FI
3347560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint target, jint pname, jfloatArray params_ref, jint offset) {
3348560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _exception = 0;
33492545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    const char * _exceptionType;
33502545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    const char * _exceptionMessage;
3351560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLfloat *params_base = (GLfloat *) 0;
3352560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _remaining;
3353560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLfloat *params = (GLfloat *) 0;
3354560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
3355560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (!params_ref) {
3356560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _exception = 1;
33572545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
33582545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "params == null";
3359560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
3360560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
3361560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (offset < 0) {
3362560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _exception = 1;
33632545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
33642545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "offset < 0";
3365560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
3366560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
3367560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    _remaining = _env->GetArrayLength(params_ref) - offset;
3368560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (_remaining < 1) {
3369560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _exception = 1;
33702545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
33712545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "length - offset < 1 < needed";
3372560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
3373560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
3374560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    params_base = (GLfloat *)
3375560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _env->GetPrimitiveArrayCritical(params_ref, (jboolean *)0);
3376560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    params = params_base + offset;
3377560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
3378560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glGetTexParameterfv(
3379560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLenum)target,
3380560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLenum)pname,
3381560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLfloat *)params
3382560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
3383560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
3384560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichexit:
3385560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (params_base) {
3386560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _env->ReleasePrimitiveArrayCritical(params_ref, params_base,
3387560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich            _exception ? JNI_ABORT: 0);
3388560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
33892545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    if (_exception) {
33902545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        jniThrowException(_env, _exceptionType, _exceptionMessage);
33912545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    }
3392560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
3393560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
3394560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glGetTexParameterfv ( GLenum target, GLenum pname, GLfloat *params ) */
3395560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
3396560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glGetTexParameterfv__IILjava_nio_FloatBuffer_2
3397560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint target, jint pname, jobject params_buf) {
3398560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _exception = 0;
33992545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    const char * _exceptionType;
34002545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    const char * _exceptionMessage;
3401560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jarray _array = (jarray) 0;
340217045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    jint _bufferOffset = (jint) 0;
3403560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _remaining;
3404560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLfloat *params = (GLfloat *) 0;
3405560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
340617045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    params = (GLfloat *)getPointer(_env, params_buf, &_array, &_remaining, &_bufferOffset);
3407560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (_remaining < 1) {
3408560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _exception = 1;
34092545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
34102545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "remaining() < 1 < needed";
3411560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
3412560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
341317045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    if (params == NULL) {
341417045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        char * _paramsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
341517045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        params = (GLfloat *) (_paramsBase + _bufferOffset);
341617045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    }
3417560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glGetTexParameterfv(
3418560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLenum)target,
3419560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLenum)pname,
3420560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLfloat *)params
3421560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
3422560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
3423560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichexit:
3424560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (_array) {
3425560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        releasePointer(_env, _array, params, _exception ? JNI_FALSE : JNI_TRUE);
3426560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
34272545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    if (_exception) {
34282545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        jniThrowException(_env, _exceptionType, _exceptionMessage);
34292545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    }
3430560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
3431560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
3432560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glGetTexParameteriv ( GLenum target, GLenum pname, GLint *params ) */
3433560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
3434560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glGetTexParameteriv__II_3II
3435560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint target, jint pname, jintArray params_ref, jint offset) {
3436560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _exception = 0;
34372545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    const char * _exceptionType;
34382545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    const char * _exceptionMessage;
3439560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLint *params_base = (GLint *) 0;
3440560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _remaining;
3441560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLint *params = (GLint *) 0;
3442560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
3443560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (!params_ref) {
3444560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _exception = 1;
34452545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
34462545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "params == null";
3447560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
3448560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
3449560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (offset < 0) {
3450560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _exception = 1;
34512545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
34522545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "offset < 0";
3453560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
3454560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
3455560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    _remaining = _env->GetArrayLength(params_ref) - offset;
3456560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (_remaining < 1) {
3457560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _exception = 1;
34582545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
34592545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "length - offset < 1 < needed";
3460560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
3461560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
3462560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    params_base = (GLint *)
3463560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _env->GetPrimitiveArrayCritical(params_ref, (jboolean *)0);
3464560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    params = params_base + offset;
3465560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
3466560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glGetTexParameteriv(
3467560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLenum)target,
3468560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLenum)pname,
3469560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLint *)params
3470560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
3471560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
3472560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichexit:
3473560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (params_base) {
3474560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _env->ReleasePrimitiveArrayCritical(params_ref, params_base,
3475560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich            _exception ? JNI_ABORT: 0);
3476560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
34772545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    if (_exception) {
34782545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        jniThrowException(_env, _exceptionType, _exceptionMessage);
34792545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    }
3480560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
3481560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
3482560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glGetTexParameteriv ( GLenum target, GLenum pname, GLint *params ) */
3483560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
3484560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glGetTexParameteriv__IILjava_nio_IntBuffer_2
3485560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint target, jint pname, jobject params_buf) {
3486560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _exception = 0;
34872545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    const char * _exceptionType;
34882545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    const char * _exceptionMessage;
3489560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jarray _array = (jarray) 0;
349017045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    jint _bufferOffset = (jint) 0;
3491560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _remaining;
3492560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLint *params = (GLint *) 0;
3493560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
349417045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    params = (GLint *)getPointer(_env, params_buf, &_array, &_remaining, &_bufferOffset);
3495560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (_remaining < 1) {
3496560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _exception = 1;
34972545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
34982545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "remaining() < 1 < needed";
3499560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
3500560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
350117045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    if (params == NULL) {
350217045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        char * _paramsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
350317045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        params = (GLint *) (_paramsBase + _bufferOffset);
350417045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    }
3505560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glGetTexParameteriv(
3506560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLenum)target,
3507560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLenum)pname,
3508560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLint *)params
3509560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
3510560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
3511560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichexit:
3512560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (_array) {
3513560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        releasePointer(_env, _array, params, _exception ? JNI_FALSE : JNI_TRUE);
3514560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
35152545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    if (_exception) {
35162545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        jniThrowException(_env, _exceptionType, _exceptionMessage);
35172545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    }
3518560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
3519560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
3520560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glGetUniformfv ( GLuint program, GLint location, GLfloat *params ) */
3521560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
3522560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glGetUniformfv__II_3FI
3523560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint program, jint location, jfloatArray params_ref, jint offset) {
3524560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _exception = 0;
35252545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    const char * _exceptionType;
35262545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    const char * _exceptionMessage;
3527560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLfloat *params_base = (GLfloat *) 0;
3528560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _remaining;
3529560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLfloat *params = (GLfloat *) 0;
3530560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
3531560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (!params_ref) {
3532560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _exception = 1;
35332545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
35342545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "params == null";
3535560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
3536560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
3537560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (offset < 0) {
3538560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _exception = 1;
35392545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
35402545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "offset < 0";
3541560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
3542560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
3543560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    _remaining = _env->GetArrayLength(params_ref) - offset;
3544560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    params_base = (GLfloat *)
3545560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _env->GetPrimitiveArrayCritical(params_ref, (jboolean *)0);
3546560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    params = params_base + offset;
3547560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
3548560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glGetUniformfv(
3549560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLuint)program,
3550560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLint)location,
3551560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLfloat *)params
3552560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
3553560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
3554560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichexit:
3555560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (params_base) {
3556560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _env->ReleasePrimitiveArrayCritical(params_ref, params_base,
3557560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich            _exception ? JNI_ABORT: 0);
3558560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
35592545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    if (_exception) {
35602545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        jniThrowException(_env, _exceptionType, _exceptionMessage);
35612545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    }
3562560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
3563560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
3564560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glGetUniformfv ( GLuint program, GLint location, GLfloat *params ) */
3565560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
3566560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glGetUniformfv__IILjava_nio_FloatBuffer_2
3567560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint program, jint location, jobject params_buf) {
3568560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jarray _array = (jarray) 0;
356917045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    jint _bufferOffset = (jint) 0;
3570560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _remaining;
3571560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLfloat *params = (GLfloat *) 0;
3572560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
357317045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    params = (GLfloat *)getPointer(_env, params_buf, &_array, &_remaining, &_bufferOffset);
357417045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    if (params == NULL) {
357517045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        char * _paramsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
357617045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        params = (GLfloat *) (_paramsBase + _bufferOffset);
357717045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    }
3578560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glGetUniformfv(
3579560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLuint)program,
3580560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLint)location,
3581560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLfloat *)params
3582560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
3583560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (_array) {
35842545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        releasePointer(_env, _array, params, JNI_TRUE);
3585560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
3586560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
3587560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
3588560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glGetUniformiv ( GLuint program, GLint location, GLint *params ) */
3589560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
3590560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glGetUniformiv__II_3II
3591560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint program, jint location, jintArray params_ref, jint offset) {
3592560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _exception = 0;
35932545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    const char * _exceptionType;
35942545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    const char * _exceptionMessage;
3595560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLint *params_base = (GLint *) 0;
3596560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _remaining;
3597560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLint *params = (GLint *) 0;
3598560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
3599560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (!params_ref) {
3600560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _exception = 1;
36012545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
36022545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "params == null";
3603560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
3604560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
3605560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (offset < 0) {
3606560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _exception = 1;
36072545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
36082545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "offset < 0";
3609560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
3610560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
3611560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    _remaining = _env->GetArrayLength(params_ref) - offset;
3612560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    params_base = (GLint *)
3613560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _env->GetPrimitiveArrayCritical(params_ref, (jboolean *)0);
3614560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    params = params_base + offset;
3615560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
3616560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glGetUniformiv(
3617560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLuint)program,
3618560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLint)location,
3619560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLint *)params
3620560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
3621560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
3622560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichexit:
3623560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (params_base) {
3624560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _env->ReleasePrimitiveArrayCritical(params_ref, params_base,
3625560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich            _exception ? JNI_ABORT: 0);
3626560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
36272545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    if (_exception) {
36282545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        jniThrowException(_env, _exceptionType, _exceptionMessage);
36292545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    }
3630560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
3631560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
3632560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glGetUniformiv ( GLuint program, GLint location, GLint *params ) */
3633560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
3634560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glGetUniformiv__IILjava_nio_IntBuffer_2
3635560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint program, jint location, jobject params_buf) {
3636560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jarray _array = (jarray) 0;
363717045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    jint _bufferOffset = (jint) 0;
3638560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _remaining;
3639560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLint *params = (GLint *) 0;
3640560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
364117045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    params = (GLint *)getPointer(_env, params_buf, &_array, &_remaining, &_bufferOffset);
364217045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    if (params == NULL) {
364317045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        char * _paramsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
364417045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        params = (GLint *) (_paramsBase + _bufferOffset);
364517045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    }
3646560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glGetUniformiv(
3647560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLuint)program,
3648560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLint)location,
3649560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLint *)params
3650560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
3651560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (_array) {
36522545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        releasePointer(_env, _array, params, JNI_TRUE);
3653560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
3654560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
3655560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
3656560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* int glGetUniformLocation ( GLuint program, const char *name ) */
3657560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic jint
3658560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glGetUniformLocation__ILjava_lang_String_2
3659560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint program, jstring name) {
36602545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    jint _exception = 0;
36612545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    const char * _exceptionType;
36622545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    const char * _exceptionMessage;
3663560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    int _returnValue = 0;
3664560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    const char* _nativename = 0;
3665560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
3666560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (!name) {
36672545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
36682545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "name == null";
3669560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
3670560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
3671560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    _nativename = _env->GetStringUTFChars(name, 0);
3672560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
3673560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    _returnValue = glGetUniformLocation(
3674560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLuint)program,
3675560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (char *)_nativename
3676560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
3677560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
3678560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichexit:
3679560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (_nativename) {
3680560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _env->ReleaseStringUTFChars(name, _nativename);
3681560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
3682560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
36832545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    if (_exception) {
36842545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        jniThrowException(_env, _exceptionType, _exceptionMessage);
36852545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    }
3686560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    return _returnValue;
3687560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
3688560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
3689560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glGetVertexAttribfv ( GLuint index, GLenum pname, GLfloat *params ) */
3690560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
3691560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glGetVertexAttribfv__II_3FI
3692560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint index, jint pname, jfloatArray params_ref, jint offset) {
3693560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _exception = 0;
36942545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    const char * _exceptionType;
36952545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    const char * _exceptionMessage;
3696560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLfloat *params_base = (GLfloat *) 0;
3697560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _remaining;
3698560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLfloat *params = (GLfloat *) 0;
3699560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
3700560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (!params_ref) {
3701560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _exception = 1;
37022545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
37032545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "params == null";
3704560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
3705560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
3706560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (offset < 0) {
3707560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _exception = 1;
37082545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
37092545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "offset < 0";
3710560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
3711560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
3712560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    _remaining = _env->GetArrayLength(params_ref) - offset;
3713560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    params_base = (GLfloat *)
3714560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _env->GetPrimitiveArrayCritical(params_ref, (jboolean *)0);
3715560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    params = params_base + offset;
3716560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
3717560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glGetVertexAttribfv(
3718560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLuint)index,
3719560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLenum)pname,
3720560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLfloat *)params
3721560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
3722560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
3723560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichexit:
3724560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (params_base) {
3725560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _env->ReleasePrimitiveArrayCritical(params_ref, params_base,
3726560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich            _exception ? JNI_ABORT: 0);
3727560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
37282545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    if (_exception) {
37292545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        jniThrowException(_env, _exceptionType, _exceptionMessage);
37302545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    }
3731560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
3732560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
3733560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glGetVertexAttribfv ( GLuint index, GLenum pname, GLfloat *params ) */
3734560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
3735560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glGetVertexAttribfv__IILjava_nio_FloatBuffer_2
3736560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint index, jint pname, jobject params_buf) {
3737560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jarray _array = (jarray) 0;
373817045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    jint _bufferOffset = (jint) 0;
3739560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _remaining;
3740560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLfloat *params = (GLfloat *) 0;
3741560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
374217045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    params = (GLfloat *)getPointer(_env, params_buf, &_array, &_remaining, &_bufferOffset);
374317045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    if (params == NULL) {
374417045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        char * _paramsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
374517045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        params = (GLfloat *) (_paramsBase + _bufferOffset);
374617045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    }
3747560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glGetVertexAttribfv(
3748560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLuint)index,
3749560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLenum)pname,
3750560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLfloat *)params
3751560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
3752560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (_array) {
37532545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        releasePointer(_env, _array, params, JNI_TRUE);
3754560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
3755560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
3756560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
3757560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glGetVertexAttribiv ( GLuint index, GLenum pname, GLint *params ) */
3758560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
3759560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glGetVertexAttribiv__II_3II
3760560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint index, jint pname, jintArray params_ref, jint offset) {
3761560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _exception = 0;
37622545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    const char * _exceptionType;
37632545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    const char * _exceptionMessage;
3764560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLint *params_base = (GLint *) 0;
3765560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _remaining;
3766560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLint *params = (GLint *) 0;
3767560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
3768560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (!params_ref) {
3769560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _exception = 1;
37702545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
37712545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "params == null";
3772560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
3773560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
3774560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (offset < 0) {
3775560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _exception = 1;
37762545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
37772545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "offset < 0";
3778560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
3779560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
3780560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    _remaining = _env->GetArrayLength(params_ref) - offset;
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) {
3805560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jarray _array = (jarray) 0;
380617045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    jint _bufferOffset = (jint) 0;
3807560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _remaining;
3808560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLint *params = (GLint *) 0;
3809560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
381017045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    params = (GLint *)getPointer(_env, params_buf, &_array, &_remaining, &_bufferOffset);
381117045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    if (params == NULL) {
381217045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        char * _paramsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
381317045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        params = (GLint *) (_paramsBase + _bufferOffset);
381417045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    }
3815560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glGetVertexAttribiv(
3816560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLuint)index,
3817560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLenum)pname,
3818560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLint *)params
3819560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
3820560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (_array) {
38212545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        releasePointer(_env, _array, params, JNI_TRUE);
3822560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
3823560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
3824560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
3825560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glHint ( GLenum target, GLenum mode ) */
3826560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
3827560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glHint__II
3828560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint target, jint mode) {
3829560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glHint(
3830560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLenum)target,
3831560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLenum)mode
3832560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
3833560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
3834560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
3835560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* GLboolean glIsBuffer ( GLuint buffer ) */
3836560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic jboolean
3837560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glIsBuffer__I
3838560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint buffer) {
3839560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLboolean _returnValue;
3840560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    _returnValue = glIsBuffer(
3841560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLuint)buffer
3842560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
3843560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    return _returnValue;
3844560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
3845560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
3846560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* GLboolean glIsEnabled ( GLenum cap ) */
3847560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic jboolean
3848560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glIsEnabled__I
3849560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint cap) {
3850560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLboolean _returnValue;
3851560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    _returnValue = glIsEnabled(
3852560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLenum)cap
3853560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
3854560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    return _returnValue;
3855560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
3856560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
3857560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* GLboolean glIsFramebuffer ( GLuint framebuffer ) */
3858560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic jboolean
3859560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glIsFramebuffer__I
3860560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint framebuffer) {
3861560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLboolean _returnValue;
3862560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    _returnValue = glIsFramebuffer(
3863560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLuint)framebuffer
3864560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
3865560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    return _returnValue;
3866560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
3867560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
3868560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* GLboolean glIsProgram ( GLuint program ) */
3869560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic jboolean
3870560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glIsProgram__I
3871560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint program) {
3872560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLboolean _returnValue;
3873560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    _returnValue = glIsProgram(
3874560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLuint)program
3875560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
3876560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    return _returnValue;
3877560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
3878560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
3879560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* GLboolean glIsRenderbuffer ( GLuint renderbuffer ) */
3880560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic jboolean
3881560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glIsRenderbuffer__I
3882560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint renderbuffer) {
3883560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLboolean _returnValue;
3884560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    _returnValue = glIsRenderbuffer(
3885560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLuint)renderbuffer
3886560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
3887560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    return _returnValue;
3888560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
3889560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
3890560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* GLboolean glIsShader ( GLuint shader ) */
3891560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic jboolean
3892560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glIsShader__I
3893560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint shader) {
3894560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLboolean _returnValue;
3895560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    _returnValue = glIsShader(
3896560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLuint)shader
3897560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
3898560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    return _returnValue;
3899560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
3900560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
3901560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* GLboolean glIsTexture ( GLuint texture ) */
3902560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic jboolean
3903560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glIsTexture__I
3904560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint texture) {
3905560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLboolean _returnValue;
3906560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    _returnValue = glIsTexture(
3907560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLuint)texture
3908560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
3909560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    return _returnValue;
3910560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
3911560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
3912560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glLineWidth ( GLfloat width ) */
3913560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
3914560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glLineWidth__F
3915560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jfloat width) {
3916560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glLineWidth(
3917560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLfloat)width
3918560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
3919560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
3920560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
3921560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glLinkProgram ( GLuint program ) */
3922560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
3923560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glLinkProgram__I
3924560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint program) {
3925560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glLinkProgram(
3926560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLuint)program
3927560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
3928560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
3929560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
3930560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glPixelStorei ( GLenum pname, GLint param ) */
3931560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
3932560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glPixelStorei__II
3933560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint pname, jint param) {
3934560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glPixelStorei(
3935560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLenum)pname,
3936560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLint)param
3937560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
3938560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
3939560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
3940560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glPolygonOffset ( GLfloat factor, GLfloat units ) */
3941560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
3942560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glPolygonOffset__FF
3943560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jfloat factor, jfloat units) {
3944560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glPolygonOffset(
3945560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLfloat)factor,
3946560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLfloat)units
3947560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
3948560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
3949560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
3950560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glReadPixels ( GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLvoid *pixels ) */
3951560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
3952560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glReadPixels__IIIIIILjava_nio_Buffer_2
3953560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint x, jint y, jint width, jint height, jint format, jint type, jobject pixels_buf) {
3954560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jarray _array = (jarray) 0;
395517045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    jint _bufferOffset = (jint) 0;
3956560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _remaining;
3957560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLvoid *pixels = (GLvoid *) 0;
3958560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
395917045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    pixels = (GLvoid *)getPointer(_env, pixels_buf, &_array, &_remaining, &_bufferOffset);
396017045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    if (pixels == NULL) {
396117045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        char * _pixelsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
396217045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        pixels = (GLvoid *) (_pixelsBase + _bufferOffset);
396317045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    }
3964560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glReadPixels(
3965560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLint)x,
3966560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLint)y,
3967560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLsizei)width,
3968560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLsizei)height,
3969560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLenum)format,
3970560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLenum)type,
3971560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLvoid *)pixels
3972560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
3973560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (_array) {
39742545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        releasePointer(_env, _array, pixels, JNI_TRUE);
3975560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
3976560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
3977560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
3978560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glReleaseShaderCompiler ( void ) */
3979560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
3980560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glReleaseShaderCompiler__
3981560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this) {
3982560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glReleaseShaderCompiler();
3983560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
3984560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
3985560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glRenderbufferStorage ( GLenum target, GLenum internalformat, GLsizei width, GLsizei height ) */
3986560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
3987560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glRenderbufferStorage__IIII
3988560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint target, jint internalformat, jint width, jint height) {
3989560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glRenderbufferStorage(
3990560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLenum)target,
3991560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLenum)internalformat,
3992560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLsizei)width,
3993560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLsizei)height
3994560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
3995560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
3996560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
3997560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glSampleCoverage ( GLclampf value, GLboolean invert ) */
3998560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
3999560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glSampleCoverage__FZ
4000560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jfloat value, jboolean invert) {
4001560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glSampleCoverage(
4002560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLclampf)value,
4003560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLboolean)invert
4004560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
4005560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
4006560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
4007560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glScissor ( GLint x, GLint y, GLsizei width, GLsizei height ) */
4008560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
4009560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glScissor__IIII
4010560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint x, jint y, jint width, jint height) {
4011560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glScissor(
4012560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLint)x,
4013560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLint)y,
4014560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLsizei)width,
4015560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLsizei)height
4016560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
4017560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
4018560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
4019560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glShaderBinary ( GLsizei n, const GLuint *shaders, GLenum binaryformat, const GLvoid *binary, GLsizei length ) */
4020560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
4021560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glShaderBinary__I_3IIILjava_nio_Buffer_2I
4022560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint n, jintArray shaders_ref, jint offset, jint binaryformat, jobject binary_buf, jint length) {
40232545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    jint _exception = 0;
40242545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    const char * _exceptionType;
40252545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    const char * _exceptionMessage;
4026560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jarray _array = (jarray) 0;
402717045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    jint _bufferOffset = (jint) 0;
4028560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLuint *shaders_base = (GLuint *) 0;
4029560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _shadersRemaining;
4030560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLuint *shaders = (GLuint *) 0;
4031560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _binaryRemaining;
4032560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLvoid *binary = (GLvoid *) 0;
4033560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
4034560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (!shaders_ref) {
40352545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exception = 1;
40362545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
40372545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "shaders == null";
4038560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
4039560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
4040560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (offset < 0) {
40412545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exception = 1;
40422545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
40432545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "offset < 0";
4044560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
4045560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
4046560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    _shadersRemaining = _env->GetArrayLength(shaders_ref) - offset;
4047560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    shaders_base = (GLuint *)
4048560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _env->GetPrimitiveArrayCritical(shaders_ref, (jboolean *)0);
4049560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    shaders = shaders_base + offset;
4050560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
405117045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    binary = (GLvoid *)getPointer(_env, binary_buf, &_array, &_binaryRemaining, &_bufferOffset);
405217045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    if (binary == NULL) {
405317045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        char * _binaryBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
405417045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        binary = (GLvoid *) (_binaryBase + _bufferOffset);
405517045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    }
4056560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glShaderBinary(
4057560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLsizei)n,
4058560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLuint *)shaders,
4059560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLenum)binaryformat,
4060560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLvoid *)binary,
4061560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLsizei)length
4062560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
4063560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
4064560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichexit:
4065560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (_array) {
4066560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        releasePointer(_env, _array, binary, JNI_FALSE);
4067560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
4068560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (shaders_base) {
4069560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _env->ReleasePrimitiveArrayCritical(shaders_ref, shaders_base,
4070560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich            JNI_ABORT);
4071560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
40722545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    if (_exception) {
40732545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        jniThrowException(_env, _exceptionType, _exceptionMessage);
40742545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    }
4075560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
4076560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
4077560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glShaderBinary ( GLsizei n, const GLuint *shaders, GLenum binaryformat, const GLvoid *binary, GLsizei length ) */
4078560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
4079560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glShaderBinary__ILjava_nio_IntBuffer_2ILjava_nio_Buffer_2I
4080560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint n, jobject shaders_buf, jint binaryformat, jobject binary_buf, jint length) {
4081560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jarray _shadersArray = (jarray) 0;
408217045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    jint _shadersBufferOffset = (jint) 0;
4083560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jarray _binaryArray = (jarray) 0;
408417045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    jint _binaryBufferOffset = (jint) 0;
4085560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _shadersRemaining;
4086560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLuint *shaders = (GLuint *) 0;
4087560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _binaryRemaining;
4088560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLvoid *binary = (GLvoid *) 0;
4089560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
409017045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    shaders = (GLuint *)getPointer(_env, shaders_buf, &_shadersArray, &_shadersRemaining, &_shadersBufferOffset);
409117045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    binary = (GLvoid *)getPointer(_env, binary_buf, &_binaryArray, &_binaryRemaining, &_binaryBufferOffset);
409217045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    if (shaders == NULL) {
409317045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        char * _shadersBase = (char *)_env->GetPrimitiveArrayCritical(_shadersArray, (jboolean *) 0);
409417045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        shaders = (GLuint *) (_shadersBase + _shadersBufferOffset);
409517045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    }
409617045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    if (binary == NULL) {
409717045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        char * _binaryBase = (char *)_env->GetPrimitiveArrayCritical(_binaryArray, (jboolean *) 0);
409817045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        binary = (GLvoid *) (_binaryBase + _binaryBufferOffset);
409917045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    }
4100560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glShaderBinary(
4101560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLsizei)n,
4102560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLuint *)shaders,
4103560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLenum)binaryformat,
4104560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLvoid *)binary,
4105560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLsizei)length
4106560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
4107560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (_binaryArray) {
410817045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        releasePointer(_env, _binaryArray, binary, JNI_FALSE);
410917045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    }
411017045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    if (_shadersArray) {
411117045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        releasePointer(_env, _shadersArray, shaders, JNI_FALSE);
4112560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
4113560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
4114560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
4115560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
4116560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glShaderSource ( GLuint shader, GLsizei count, const GLchar ** string, const GLint * length ) */
4117560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic
4118560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichvoid
4119560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glShaderSource
4120560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    (JNIEnv *_env, jobject _this, jint shader, jstring string) {
4121560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
4122560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (!string) {
412324ce5fb2cc09d0a14406e7b935f8648c5720d27eElliott Hughes        jniThrowException(_env, "java/lang/IllegalArgumentException", "string == null");
4124560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        return;
4125560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
4126560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
4127560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    const char* nativeString = _env->GetStringUTFChars(string, 0);
4128560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    const char* strings[] = {nativeString};
4129560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glShaderSource(shader, 1, strings, 0);
4130560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    _env->ReleaseStringUTFChars(string, nativeString);
4131560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
4132560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glStencilFunc ( GLenum func, GLint ref, GLuint mask ) */
4133560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
4134560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glStencilFunc__III
4135560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint func, jint ref, jint mask) {
4136560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glStencilFunc(
4137560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLenum)func,
4138560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLint)ref,
4139560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLuint)mask
4140560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
4141560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
4142560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
4143560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glStencilFuncSeparate ( GLenum face, GLenum func, GLint ref, GLuint mask ) */
4144560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
4145560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glStencilFuncSeparate__IIII
4146560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint face, jint func, jint ref, jint mask) {
4147560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glStencilFuncSeparate(
4148560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLenum)face,
4149560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLenum)func,
4150560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLint)ref,
4151560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLuint)mask
4152560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
4153560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
4154560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
4155560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glStencilMask ( GLuint mask ) */
4156560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
4157560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glStencilMask__I
4158560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint mask) {
4159560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glStencilMask(
4160560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLuint)mask
4161560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
4162560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
4163560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
4164560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glStencilMaskSeparate ( GLenum face, GLuint mask ) */
4165560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
4166560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glStencilMaskSeparate__II
4167560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint face, jint mask) {
4168560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glStencilMaskSeparate(
4169560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLenum)face,
4170560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLuint)mask
4171560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
4172560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
4173560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
4174560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glStencilOp ( GLenum fail, GLenum zfail, GLenum zpass ) */
4175560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
4176560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glStencilOp__III
4177560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint fail, jint zfail, jint zpass) {
4178560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glStencilOp(
4179560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLenum)fail,
4180560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLenum)zfail,
4181560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLenum)zpass
4182560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
4183560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
4184560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
4185560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glStencilOpSeparate ( GLenum face, GLenum fail, GLenum zfail, GLenum zpass ) */
4186560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
4187560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glStencilOpSeparate__IIII
4188560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint face, jint fail, jint zfail, jint zpass) {
4189560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glStencilOpSeparate(
4190560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLenum)face,
4191560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLenum)fail,
4192560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLenum)zfail,
4193560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLenum)zpass
4194560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
4195560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
4196560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
4197560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glTexImage2D ( GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const GLvoid *pixels ) */
4198560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
4199560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glTexImage2D__IIIIIIIILjava_nio_Buffer_2
4200560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint target, jint level, jint internalformat, jint width, jint height, jint border, jint format, jint type, jobject pixels_buf) {
4201560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jarray _array = (jarray) 0;
420217045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    jint _bufferOffset = (jint) 0;
4203560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _remaining;
4204560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLvoid *pixels = (GLvoid *) 0;
4205560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
4206560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (pixels_buf) {
420717045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        pixels = (GLvoid *)getPointer(_env, pixels_buf, &_array, &_remaining, &_bufferOffset);
420817045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    }
420917045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    if (pixels == NULL) {
421017045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        char * _pixelsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
421117045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        pixels = (GLvoid *) (_pixelsBase + _bufferOffset);
4212560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
4213560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glTexImage2D(
4214560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLenum)target,
4215560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLint)level,
4216560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLint)internalformat,
4217560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLsizei)width,
4218560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLsizei)height,
4219560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLint)border,
4220560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLenum)format,
4221560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLenum)type,
4222560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLvoid *)pixels
4223560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
4224560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (_array) {
4225560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        releasePointer(_env, _array, pixels, JNI_FALSE);
4226560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
4227560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
4228560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
4229560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glTexParameterf ( GLenum target, GLenum pname, GLfloat param ) */
4230560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
4231560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glTexParameterf__IIF
4232560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint target, jint pname, jfloat param) {
4233560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glTexParameterf(
4234560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLenum)target,
4235560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLenum)pname,
4236560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLfloat)param
4237560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
4238560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
4239560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
4240560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glTexParameterfv ( GLenum target, GLenum pname, const GLfloat *params ) */
4241560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
4242560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glTexParameterfv__II_3FI
4243560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint target, jint pname, jfloatArray params_ref, jint offset) {
42442545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    jint _exception = 0;
42452545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    const char * _exceptionType;
42462545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    const char * _exceptionMessage;
4247560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLfloat *params_base = (GLfloat *) 0;
4248560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _remaining;
4249560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLfloat *params = (GLfloat *) 0;
4250560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
4251560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (!params_ref) {
42522545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exception = 1;
42532545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
42542545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "params == null";
4255560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
4256560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
4257560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (offset < 0) {
42582545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exception = 1;
42592545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
42602545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "offset < 0";
4261560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
4262560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
4263560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    _remaining = _env->GetArrayLength(params_ref) - offset;
4264560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (_remaining < 1) {
42652545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exception = 1;
42662545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
42672545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "length - offset < 1 < needed";
4268560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
4269560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
4270560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    params_base = (GLfloat *)
4271560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _env->GetPrimitiveArrayCritical(params_ref, (jboolean *)0);
4272560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    params = params_base + offset;
4273560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
4274560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glTexParameterfv(
4275560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLenum)target,
4276560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLenum)pname,
4277560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLfloat *)params
4278560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
4279560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
4280560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichexit:
4281560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (params_base) {
4282560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _env->ReleasePrimitiveArrayCritical(params_ref, params_base,
4283560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich            JNI_ABORT);
4284560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
42852545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    if (_exception) {
42862545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        jniThrowException(_env, _exceptionType, _exceptionMessage);
42872545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    }
4288560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
4289560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
4290560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glTexParameterfv ( GLenum target, GLenum pname, const GLfloat *params ) */
4291560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
4292560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glTexParameterfv__IILjava_nio_FloatBuffer_2
4293560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint target, jint pname, jobject params_buf) {
42942545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    jint _exception = 0;
42952545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    const char * _exceptionType;
42962545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    const char * _exceptionMessage;
4297560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jarray _array = (jarray) 0;
429817045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    jint _bufferOffset = (jint) 0;
4299560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _remaining;
4300560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLfloat *params = (GLfloat *) 0;
4301560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
430217045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    params = (GLfloat *)getPointer(_env, params_buf, &_array, &_remaining, &_bufferOffset);
4303560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (_remaining < 1) {
43042545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exception = 1;
43052545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
43062545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "remaining() < 1 < needed";
4307560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
4308560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
430917045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    if (params == NULL) {
431017045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        char * _paramsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
431117045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        params = (GLfloat *) (_paramsBase + _bufferOffset);
431217045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    }
4313560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glTexParameterfv(
4314560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLenum)target,
4315560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLenum)pname,
4316560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLfloat *)params
4317560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
4318560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
4319560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichexit:
4320560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (_array) {
4321560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        releasePointer(_env, _array, params, JNI_FALSE);
4322560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
43232545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    if (_exception) {
43242545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        jniThrowException(_env, _exceptionType, _exceptionMessage);
43252545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    }
4326560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
4327560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
4328560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glTexParameteri ( GLenum target, GLenum pname, GLint param ) */
4329560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
4330560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glTexParameteri__III
4331560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint target, jint pname, jint param) {
4332560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glTexParameteri(
4333560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLenum)target,
4334560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLenum)pname,
4335560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLint)param
4336560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
4337560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
4338560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
4339560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glTexParameteriv ( GLenum target, GLenum pname, const GLint *params ) */
4340560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
4341560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glTexParameteriv__II_3II
4342560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint target, jint pname, jintArray params_ref, jint offset) {
43432545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    jint _exception = 0;
43442545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    const char * _exceptionType;
43452545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    const char * _exceptionMessage;
4346560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLint *params_base = (GLint *) 0;
4347560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _remaining;
4348560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLint *params = (GLint *) 0;
4349560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
4350560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (!params_ref) {
43512545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exception = 1;
43522545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
43532545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "params == null";
4354560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
4355560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
4356560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (offset < 0) {
43572545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exception = 1;
43582545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
43592545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "offset < 0";
4360560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
4361560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
4362560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    _remaining = _env->GetArrayLength(params_ref) - offset;
4363560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (_remaining < 1) {
43642545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exception = 1;
43652545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
43662545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "length - offset < 1 < needed";
4367560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
4368560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
4369560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    params_base = (GLint *)
4370560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _env->GetPrimitiveArrayCritical(params_ref, (jboolean *)0);
4371560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    params = params_base + offset;
4372560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
4373560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glTexParameteriv(
4374560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLenum)target,
4375560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLenum)pname,
4376560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLint *)params
4377560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
4378560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
4379560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichexit:
4380560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (params_base) {
4381560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _env->ReleasePrimitiveArrayCritical(params_ref, params_base,
4382560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich            JNI_ABORT);
4383560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
43842545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    if (_exception) {
43852545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        jniThrowException(_env, _exceptionType, _exceptionMessage);
43862545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    }
4387560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
4388560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
4389560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glTexParameteriv ( GLenum target, GLenum pname, const GLint *params ) */
4390560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
4391560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glTexParameteriv__IILjava_nio_IntBuffer_2
4392560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint target, jint pname, jobject params_buf) {
43932545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    jint _exception = 0;
43942545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    const char * _exceptionType;
43952545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    const char * _exceptionMessage;
4396560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jarray _array = (jarray) 0;
439717045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    jint _bufferOffset = (jint) 0;
4398560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _remaining;
4399560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLint *params = (GLint *) 0;
4400560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
440117045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    params = (GLint *)getPointer(_env, params_buf, &_array, &_remaining, &_bufferOffset);
4402560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (_remaining < 1) {
44032545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exception = 1;
44042545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
44052545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "remaining() < 1 < needed";
4406560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
4407560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
440817045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    if (params == NULL) {
440917045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        char * _paramsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
441017045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        params = (GLint *) (_paramsBase + _bufferOffset);
441117045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    }
4412560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glTexParameteriv(
4413560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLenum)target,
4414560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLenum)pname,
4415560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLint *)params
4416560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
4417560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
4418560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichexit:
4419560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (_array) {
4420560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        releasePointer(_env, _array, params, JNI_FALSE);
4421560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
44222545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    if (_exception) {
44232545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        jniThrowException(_env, _exceptionType, _exceptionMessage);
44242545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    }
4425560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
4426560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
4427560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glTexSubImage2D ( GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels ) */
4428560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
4429560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glTexSubImage2D__IIIIIIIILjava_nio_Buffer_2
4430560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint target, jint level, jint xoffset, jint yoffset, jint width, jint height, jint format, jint type, jobject pixels_buf) {
4431560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jarray _array = (jarray) 0;
443217045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    jint _bufferOffset = (jint) 0;
4433560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _remaining;
4434560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLvoid *pixels = (GLvoid *) 0;
4435560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
4436560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (pixels_buf) {
443717045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        pixels = (GLvoid *)getPointer(_env, pixels_buf, &_array, &_remaining, &_bufferOffset);
443817045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    }
443917045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    if (pixels == NULL) {
444017045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        char * _pixelsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
444117045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        pixels = (GLvoid *) (_pixelsBase + _bufferOffset);
4442560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
4443560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glTexSubImage2D(
4444560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLenum)target,
4445560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLint)level,
4446560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLint)xoffset,
4447560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLint)yoffset,
4448560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLsizei)width,
4449560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLsizei)height,
4450560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLenum)format,
4451560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLenum)type,
4452560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLvoid *)pixels
4453560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
4454560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (_array) {
4455560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        releasePointer(_env, _array, pixels, JNI_FALSE);
4456560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
4457560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
4458560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
4459560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glUniform1f ( GLint location, GLfloat x ) */
4460560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
4461560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glUniform1f__IF
4462560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint location, jfloat x) {
4463560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glUniform1f(
4464560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLint)location,
4465560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLfloat)x
4466560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
4467560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
4468560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
4469560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glUniform1fv ( GLint location, GLsizei count, const GLfloat *v ) */
4470560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
4471560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glUniform1fv__II_3FI
4472560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint location, jint count, jfloatArray v_ref, jint offset) {
44732545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    jint _exception = 0;
44742545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    const char * _exceptionType;
44752545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    const char * _exceptionMessage;
4476560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLfloat *v_base = (GLfloat *) 0;
4477560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _remaining;
4478560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLfloat *v = (GLfloat *) 0;
4479560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
4480560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (!v_ref) {
44812545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exception = 1;
44822545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
44832545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "v == null";
4484560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
4485560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
4486560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (offset < 0) {
44872545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exception = 1;
44882545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
44892545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "offset < 0";
4490560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
4491560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
4492560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    _remaining = _env->GetArrayLength(v_ref) - offset;
4493560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    v_base = (GLfloat *)
4494560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _env->GetPrimitiveArrayCritical(v_ref, (jboolean *)0);
4495560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    v = v_base + offset;
4496560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
4497560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glUniform1fv(
4498560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLint)location,
4499560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLsizei)count,
4500560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLfloat *)v
4501560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
4502560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
4503560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichexit:
4504560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (v_base) {
4505560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _env->ReleasePrimitiveArrayCritical(v_ref, v_base,
4506560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich            JNI_ABORT);
4507560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
45082545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    if (_exception) {
45092545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        jniThrowException(_env, _exceptionType, _exceptionMessage);
45102545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    }
4511560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
4512560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
4513560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glUniform1fv ( GLint location, GLsizei count, const GLfloat *v ) */
4514560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
4515560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glUniform1fv__IILjava_nio_FloatBuffer_2
4516560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint location, jint count, jobject v_buf) {
4517560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jarray _array = (jarray) 0;
451817045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    jint _bufferOffset = (jint) 0;
4519560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _remaining;
4520560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLfloat *v = (GLfloat *) 0;
4521560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
452217045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    v = (GLfloat *)getPointer(_env, v_buf, &_array, &_remaining, &_bufferOffset);
452317045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    if (v == NULL) {
452417045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        char * _vBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
452517045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        v = (GLfloat *) (_vBase + _bufferOffset);
452617045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    }
4527560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glUniform1fv(
4528560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLint)location,
4529560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLsizei)count,
4530560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLfloat *)v
4531560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
4532560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (_array) {
4533560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        releasePointer(_env, _array, v, JNI_FALSE);
4534560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
4535560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
4536560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
4537560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glUniform1i ( GLint location, GLint x ) */
4538560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
4539560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glUniform1i__II
4540560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint location, jint x) {
4541560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glUniform1i(
4542560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLint)location,
4543560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLint)x
4544560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
4545560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
4546560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
4547560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glUniform1iv ( GLint location, GLsizei count, const GLint *v ) */
4548560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
4549560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glUniform1iv__II_3II
4550560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint location, jint count, jintArray v_ref, jint offset) {
45512545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    jint _exception = 0;
45522545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    const char * _exceptionType;
45532545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    const char * _exceptionMessage;
4554560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLint *v_base = (GLint *) 0;
4555560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _remaining;
4556560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLint *v = (GLint *) 0;
4557560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
4558560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (!v_ref) {
45592545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exception = 1;
45602545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
45612545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "v == null";
4562560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
4563560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
4564560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (offset < 0) {
45652545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exception = 1;
45662545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
45672545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "offset < 0";
4568560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
4569560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
4570560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    _remaining = _env->GetArrayLength(v_ref) - offset;
4571560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    v_base = (GLint *)
4572560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _env->GetPrimitiveArrayCritical(v_ref, (jboolean *)0);
4573560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    v = v_base + offset;
4574560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
4575560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glUniform1iv(
4576560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLint)location,
4577560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLsizei)count,
4578560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLint *)v
4579560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
4580560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
4581560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichexit:
4582560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (v_base) {
4583560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _env->ReleasePrimitiveArrayCritical(v_ref, v_base,
4584560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich            JNI_ABORT);
4585560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
45862545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    if (_exception) {
45872545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        jniThrowException(_env, _exceptionType, _exceptionMessage);
45882545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    }
4589560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
4590560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
4591560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glUniform1iv ( GLint location, GLsizei count, const GLint *v ) */
4592560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
4593560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glUniform1iv__IILjava_nio_IntBuffer_2
4594560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint location, jint count, jobject v_buf) {
4595560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jarray _array = (jarray) 0;
459617045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    jint _bufferOffset = (jint) 0;
4597560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _remaining;
4598560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLint *v = (GLint *) 0;
4599560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
460017045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    v = (GLint *)getPointer(_env, v_buf, &_array, &_remaining, &_bufferOffset);
460117045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    if (v == NULL) {
460217045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        char * _vBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
460317045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        v = (GLint *) (_vBase + _bufferOffset);
460417045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    }
4605560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glUniform1iv(
4606560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLint)location,
4607560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLsizei)count,
4608560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLint *)v
4609560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
4610560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (_array) {
4611560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        releasePointer(_env, _array, v, JNI_FALSE);
4612560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
4613560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
4614560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
4615560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glUniform2f ( GLint location, GLfloat x, GLfloat y ) */
4616560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
4617560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glUniform2f__IFF
4618560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint location, jfloat x, jfloat y) {
4619560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glUniform2f(
4620560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLint)location,
4621560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLfloat)x,
4622560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLfloat)y
4623560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
4624560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
4625560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
4626560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glUniform2fv ( GLint location, GLsizei count, const GLfloat *v ) */
4627560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
4628560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glUniform2fv__II_3FI
4629560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint location, jint count, jfloatArray v_ref, jint offset) {
46302545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    jint _exception = 0;
46312545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    const char * _exceptionType;
46322545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    const char * _exceptionMessage;
4633560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLfloat *v_base = (GLfloat *) 0;
4634560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _remaining;
4635560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLfloat *v = (GLfloat *) 0;
4636560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
4637560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (!v_ref) {
46382545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exception = 1;
46392545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
46402545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "v == null";
4641560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
4642560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
4643560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (offset < 0) {
46442545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exception = 1;
46452545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
46462545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "offset < 0";
4647560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
4648560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
4649560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    _remaining = _env->GetArrayLength(v_ref) - offset;
4650560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    v_base = (GLfloat *)
4651560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _env->GetPrimitiveArrayCritical(v_ref, (jboolean *)0);
4652560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    v = v_base + offset;
4653560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
4654560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glUniform2fv(
4655560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLint)location,
4656560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLsizei)count,
4657560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLfloat *)v
4658560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
4659560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
4660560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichexit:
4661560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (v_base) {
4662560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _env->ReleasePrimitiveArrayCritical(v_ref, v_base,
4663560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich            JNI_ABORT);
4664560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
46652545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    if (_exception) {
46662545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        jniThrowException(_env, _exceptionType, _exceptionMessage);
46672545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    }
4668560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
4669560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
4670560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glUniform2fv ( GLint location, GLsizei count, const GLfloat *v ) */
4671560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
4672560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glUniform2fv__IILjava_nio_FloatBuffer_2
4673560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint location, jint count, jobject v_buf) {
4674560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jarray _array = (jarray) 0;
467517045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    jint _bufferOffset = (jint) 0;
4676560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _remaining;
4677560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLfloat *v = (GLfloat *) 0;
4678560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
467917045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    v = (GLfloat *)getPointer(_env, v_buf, &_array, &_remaining, &_bufferOffset);
468017045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    if (v == NULL) {
468117045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        char * _vBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
468217045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        v = (GLfloat *) (_vBase + _bufferOffset);
468317045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    }
4684560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glUniform2fv(
4685560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLint)location,
4686560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLsizei)count,
4687560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLfloat *)v
4688560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
4689560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (_array) {
4690560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        releasePointer(_env, _array, v, JNI_FALSE);
4691560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
4692560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
4693560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
4694560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glUniform2i ( GLint location, GLint x, GLint y ) */
4695560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
4696560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glUniform2i__III
4697560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint location, jint x, jint y) {
4698560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glUniform2i(
4699560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLint)location,
4700560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLint)x,
4701560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLint)y
4702560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
4703560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
4704560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
4705560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glUniform2iv ( GLint location, GLsizei count, const GLint *v ) */
4706560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
4707560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glUniform2iv__II_3II
4708560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint location, jint count, jintArray v_ref, jint offset) {
47092545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    jint _exception = 0;
47102545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    const char * _exceptionType;
47112545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    const char * _exceptionMessage;
4712560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLint *v_base = (GLint *) 0;
4713560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _remaining;
4714560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLint *v = (GLint *) 0;
4715560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
4716560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (!v_ref) {
47172545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exception = 1;
47182545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
47192545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "v == null";
4720560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
4721560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
4722560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (offset < 0) {
47232545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exception = 1;
47242545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
47252545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "offset < 0";
4726560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
4727560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
4728560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    _remaining = _env->GetArrayLength(v_ref) - offset;
4729560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    v_base = (GLint *)
4730560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _env->GetPrimitiveArrayCritical(v_ref, (jboolean *)0);
4731560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    v = v_base + offset;
4732560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
4733560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glUniform2iv(
4734560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLint)location,
4735560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLsizei)count,
4736560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLint *)v
4737560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
4738560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
4739560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichexit:
4740560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (v_base) {
4741560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _env->ReleasePrimitiveArrayCritical(v_ref, v_base,
4742560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich            JNI_ABORT);
4743560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
47442545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    if (_exception) {
47452545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        jniThrowException(_env, _exceptionType, _exceptionMessage);
47462545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    }
4747560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
4748560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
4749560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glUniform2iv ( GLint location, GLsizei count, const GLint *v ) */
4750560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
4751560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glUniform2iv__IILjava_nio_IntBuffer_2
4752560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint location, jint count, jobject v_buf) {
4753560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jarray _array = (jarray) 0;
475417045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    jint _bufferOffset = (jint) 0;
4755560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _remaining;
4756560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLint *v = (GLint *) 0;
4757560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
475817045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    v = (GLint *)getPointer(_env, v_buf, &_array, &_remaining, &_bufferOffset);
475917045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    if (v == NULL) {
476017045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        char * _vBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
476117045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        v = (GLint *) (_vBase + _bufferOffset);
476217045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    }
4763560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glUniform2iv(
4764560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLint)location,
4765560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLsizei)count,
4766560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLint *)v
4767560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
4768560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (_array) {
4769560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        releasePointer(_env, _array, v, JNI_FALSE);
4770560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
4771560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
4772560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
4773560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glUniform3f ( GLint location, GLfloat x, GLfloat y, GLfloat z ) */
4774560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
4775560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glUniform3f__IFFF
4776560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint location, jfloat x, jfloat y, jfloat z) {
4777560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glUniform3f(
4778560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLint)location,
4779560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLfloat)x,
4780560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLfloat)y,
4781560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLfloat)z
4782560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
4783560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
4784560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
4785560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glUniform3fv ( GLint location, GLsizei count, const GLfloat *v ) */
4786560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
4787560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glUniform3fv__II_3FI
4788560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint location, jint count, jfloatArray v_ref, jint offset) {
47892545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    jint _exception = 0;
47902545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    const char * _exceptionType;
47912545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    const char * _exceptionMessage;
4792560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLfloat *v_base = (GLfloat *) 0;
4793560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _remaining;
4794560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLfloat *v = (GLfloat *) 0;
4795560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
4796560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (!v_ref) {
47972545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exception = 1;
47982545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
47992545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "v == null";
4800560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
4801560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
4802560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (offset < 0) {
48032545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exception = 1;
48042545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
48052545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "offset < 0";
4806560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
4807560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
4808560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    _remaining = _env->GetArrayLength(v_ref) - offset;
4809560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    v_base = (GLfloat *)
4810560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _env->GetPrimitiveArrayCritical(v_ref, (jboolean *)0);
4811560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    v = v_base + offset;
4812560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
4813560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glUniform3fv(
4814560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLint)location,
4815560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLsizei)count,
4816560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLfloat *)v
4817560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
4818560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
4819560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichexit:
4820560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (v_base) {
4821560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _env->ReleasePrimitiveArrayCritical(v_ref, v_base,
4822560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich            JNI_ABORT);
4823560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
48242545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    if (_exception) {
48252545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        jniThrowException(_env, _exceptionType, _exceptionMessage);
48262545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    }
4827560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
4828560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
4829560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glUniform3fv ( GLint location, GLsizei count, const GLfloat *v ) */
4830560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
4831560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glUniform3fv__IILjava_nio_FloatBuffer_2
4832560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint location, jint count, jobject v_buf) {
4833560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jarray _array = (jarray) 0;
483417045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    jint _bufferOffset = (jint) 0;
4835560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _remaining;
4836560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLfloat *v = (GLfloat *) 0;
4837560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
483817045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    v = (GLfloat *)getPointer(_env, v_buf, &_array, &_remaining, &_bufferOffset);
483917045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    if (v == NULL) {
484017045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        char * _vBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
484117045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        v = (GLfloat *) (_vBase + _bufferOffset);
484217045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    }
4843560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glUniform3fv(
4844560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLint)location,
4845560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLsizei)count,
4846560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLfloat *)v
4847560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
4848560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (_array) {
4849560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        releasePointer(_env, _array, v, JNI_FALSE);
4850560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
4851560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
4852560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
4853560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glUniform3i ( GLint location, GLint x, GLint y, GLint z ) */
4854560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
4855560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glUniform3i__IIII
4856560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint location, jint x, jint y, jint z) {
4857560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glUniform3i(
4858560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLint)location,
4859560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLint)x,
4860560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLint)y,
4861560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLint)z
4862560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
4863560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
4864560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
4865560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glUniform3iv ( GLint location, GLsizei count, const GLint *v ) */
4866560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
4867560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glUniform3iv__II_3II
4868560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint location, jint count, jintArray v_ref, jint offset) {
48692545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    jint _exception = 0;
48702545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    const char * _exceptionType;
48712545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    const char * _exceptionMessage;
4872560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLint *v_base = (GLint *) 0;
4873560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _remaining;
4874560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLint *v = (GLint *) 0;
4875560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
4876560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (!v_ref) {
48772545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exception = 1;
48782545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
48792545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "v == null";
4880560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
4881560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
4882560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (offset < 0) {
48832545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exception = 1;
48842545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
48852545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "offset < 0";
4886560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
4887560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
4888560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    _remaining = _env->GetArrayLength(v_ref) - offset;
4889560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    v_base = (GLint *)
4890560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _env->GetPrimitiveArrayCritical(v_ref, (jboolean *)0);
4891560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    v = v_base + offset;
4892560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
4893560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glUniform3iv(
4894560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLint)location,
4895560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLsizei)count,
4896560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLint *)v
4897560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
4898560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
4899560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichexit:
4900560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (v_base) {
4901560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _env->ReleasePrimitiveArrayCritical(v_ref, v_base,
4902560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich            JNI_ABORT);
4903560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
49042545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    if (_exception) {
49052545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        jniThrowException(_env, _exceptionType, _exceptionMessage);
49062545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    }
4907560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
4908560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
4909560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glUniform3iv ( GLint location, GLsizei count, const GLint *v ) */
4910560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
4911560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glUniform3iv__IILjava_nio_IntBuffer_2
4912560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint location, jint count, jobject v_buf) {
4913560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jarray _array = (jarray) 0;
491417045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    jint _bufferOffset = (jint) 0;
4915560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _remaining;
4916560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLint *v = (GLint *) 0;
4917560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
491817045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    v = (GLint *)getPointer(_env, v_buf, &_array, &_remaining, &_bufferOffset);
491917045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    if (v == NULL) {
492017045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        char * _vBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
492117045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        v = (GLint *) (_vBase + _bufferOffset);
492217045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    }
4923560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glUniform3iv(
4924560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLint)location,
4925560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLsizei)count,
4926560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLint *)v
4927560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
4928560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (_array) {
4929560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        releasePointer(_env, _array, v, JNI_FALSE);
4930560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
4931560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
4932560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
4933560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glUniform4f ( GLint location, GLfloat x, GLfloat y, GLfloat z, GLfloat w ) */
4934560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
4935560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glUniform4f__IFFFF
4936560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint location, jfloat x, jfloat y, jfloat z, jfloat w) {
4937560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glUniform4f(
4938560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLint)location,
4939560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLfloat)x,
4940560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLfloat)y,
4941560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLfloat)z,
4942560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLfloat)w
4943560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
4944560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
4945560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
4946560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glUniform4fv ( GLint location, GLsizei count, const GLfloat *v ) */
4947560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
4948560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glUniform4fv__II_3FI
4949560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint location, jint count, jfloatArray v_ref, jint offset) {
49502545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    jint _exception = 0;
49512545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    const char * _exceptionType;
49522545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    const char * _exceptionMessage;
4953560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLfloat *v_base = (GLfloat *) 0;
4954560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _remaining;
4955560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLfloat *v = (GLfloat *) 0;
4956560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
4957560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (!v_ref) {
49582545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exception = 1;
49592545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
49602545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "v == null";
4961560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
4962560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
4963560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (offset < 0) {
49642545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exception = 1;
49652545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
49662545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "offset < 0";
4967560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
4968560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
4969560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    _remaining = _env->GetArrayLength(v_ref) - offset;
4970560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    v_base = (GLfloat *)
4971560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _env->GetPrimitiveArrayCritical(v_ref, (jboolean *)0);
4972560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    v = v_base + offset;
4973560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
4974560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glUniform4fv(
4975560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLint)location,
4976560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLsizei)count,
4977560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLfloat *)v
4978560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
4979560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
4980560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichexit:
4981560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (v_base) {
4982560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _env->ReleasePrimitiveArrayCritical(v_ref, v_base,
4983560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich            JNI_ABORT);
4984560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
49852545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    if (_exception) {
49862545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        jniThrowException(_env, _exceptionType, _exceptionMessage);
49872545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    }
4988560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
4989560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
4990560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glUniform4fv ( GLint location, GLsizei count, const GLfloat *v ) */
4991560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
4992560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glUniform4fv__IILjava_nio_FloatBuffer_2
4993560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint location, jint count, jobject v_buf) {
4994560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jarray _array = (jarray) 0;
499517045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    jint _bufferOffset = (jint) 0;
4996560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _remaining;
4997560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLfloat *v = (GLfloat *) 0;
4998560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
499917045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    v = (GLfloat *)getPointer(_env, v_buf, &_array, &_remaining, &_bufferOffset);
500017045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    if (v == NULL) {
500117045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        char * _vBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
500217045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        v = (GLfloat *) (_vBase + _bufferOffset);
500317045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    }
5004560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glUniform4fv(
5005560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLint)location,
5006560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLsizei)count,
5007560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLfloat *)v
5008560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
5009560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (_array) {
5010560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        releasePointer(_env, _array, v, JNI_FALSE);
5011560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
5012560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
5013560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
5014560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glUniform4i ( GLint location, GLint x, GLint y, GLint z, GLint w ) */
5015560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
5016560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glUniform4i__IIIII
5017560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint location, jint x, jint y, jint z, jint w) {
5018560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glUniform4i(
5019560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLint)location,
5020560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLint)x,
5021560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLint)y,
5022560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLint)z,
5023560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLint)w
5024560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
5025560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
5026560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
5027560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glUniform4iv ( GLint location, GLsizei count, const GLint *v ) */
5028560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
5029560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glUniform4iv__II_3II
5030560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint location, jint count, jintArray v_ref, jint offset) {
50312545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    jint _exception = 0;
50322545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    const char * _exceptionType;
50332545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    const char * _exceptionMessage;
5034560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLint *v_base = (GLint *) 0;
5035560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _remaining;
5036560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLint *v = (GLint *) 0;
5037560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
5038560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (!v_ref) {
50392545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exception = 1;
50402545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
50412545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "v == null";
5042560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
5043560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
5044560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (offset < 0) {
50452545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exception = 1;
50462545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
50472545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "offset < 0";
5048560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
5049560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
5050560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    _remaining = _env->GetArrayLength(v_ref) - offset;
5051560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    v_base = (GLint *)
5052560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _env->GetPrimitiveArrayCritical(v_ref, (jboolean *)0);
5053560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    v = v_base + offset;
5054560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
5055560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glUniform4iv(
5056560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLint)location,
5057560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLsizei)count,
5058560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLint *)v
5059560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
5060560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
5061560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichexit:
5062560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (v_base) {
5063560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _env->ReleasePrimitiveArrayCritical(v_ref, v_base,
5064560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich            JNI_ABORT);
5065560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
50662545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    if (_exception) {
50672545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        jniThrowException(_env, _exceptionType, _exceptionMessage);
50682545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    }
5069560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
5070560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
5071560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glUniform4iv ( GLint location, GLsizei count, const GLint *v ) */
5072560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
5073560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glUniform4iv__IILjava_nio_IntBuffer_2
5074560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint location, jint count, jobject v_buf) {
5075560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jarray _array = (jarray) 0;
507617045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    jint _bufferOffset = (jint) 0;
5077560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _remaining;
5078560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLint *v = (GLint *) 0;
5079560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
508017045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    v = (GLint *)getPointer(_env, v_buf, &_array, &_remaining, &_bufferOffset);
508117045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    if (v == NULL) {
508217045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        char * _vBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
508317045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        v = (GLint *) (_vBase + _bufferOffset);
508417045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    }
5085560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glUniform4iv(
5086560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLint)location,
5087560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLsizei)count,
5088560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLint *)v
5089560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
5090560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (_array) {
5091560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        releasePointer(_env, _array, v, JNI_FALSE);
5092560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
5093560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
5094560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
5095560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glUniformMatrix2fv ( GLint location, GLsizei count, GLboolean transpose, const GLfloat *value ) */
5096560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
5097560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glUniformMatrix2fv__IIZ_3FI
5098560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint location, jint count, jboolean transpose, jfloatArray value_ref, jint offset) {
50992545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    jint _exception = 0;
51002545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    const char * _exceptionType;
51012545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    const char * _exceptionMessage;
5102560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLfloat *value_base = (GLfloat *) 0;
5103560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _remaining;
5104560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLfloat *value = (GLfloat *) 0;
5105560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
5106560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (!value_ref) {
51072545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exception = 1;
51082545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
51092545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "value == null";
5110560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
5111560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
5112560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (offset < 0) {
51132545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exception = 1;
51142545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
51152545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "offset < 0";
5116560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
5117560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
5118560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    _remaining = _env->GetArrayLength(value_ref) - offset;
5119560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    value_base = (GLfloat *)
5120560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _env->GetPrimitiveArrayCritical(value_ref, (jboolean *)0);
5121560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    value = value_base + offset;
5122560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
5123560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glUniformMatrix2fv(
5124560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLint)location,
5125560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLsizei)count,
5126560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLboolean)transpose,
5127560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLfloat *)value
5128560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
5129560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
5130560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichexit:
5131560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (value_base) {
5132560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _env->ReleasePrimitiveArrayCritical(value_ref, value_base,
5133560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich            JNI_ABORT);
5134560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
51352545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    if (_exception) {
51362545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        jniThrowException(_env, _exceptionType, _exceptionMessage);
51372545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    }
5138560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
5139560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
5140560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glUniformMatrix2fv ( GLint location, GLsizei count, GLboolean transpose, const GLfloat *value ) */
5141560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
5142560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glUniformMatrix2fv__IIZLjava_nio_FloatBuffer_2
5143560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint location, jint count, jboolean transpose, jobject value_buf) {
5144560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jarray _array = (jarray) 0;
514517045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    jint _bufferOffset = (jint) 0;
5146560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _remaining;
5147560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLfloat *value = (GLfloat *) 0;
5148560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
514917045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    value = (GLfloat *)getPointer(_env, value_buf, &_array, &_remaining, &_bufferOffset);
515017045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    if (value == NULL) {
515117045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        char * _valueBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
515217045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        value = (GLfloat *) (_valueBase + _bufferOffset);
515317045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    }
5154560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glUniformMatrix2fv(
5155560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLint)location,
5156560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLsizei)count,
5157560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLboolean)transpose,
5158560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLfloat *)value
5159560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
5160560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (_array) {
5161560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        releasePointer(_env, _array, value, JNI_FALSE);
5162560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
5163560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
5164560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
5165560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glUniformMatrix3fv ( GLint location, GLsizei count, GLboolean transpose, const GLfloat *value ) */
5166560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
5167560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glUniformMatrix3fv__IIZ_3FI
5168560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint location, jint count, jboolean transpose, jfloatArray value_ref, jint offset) {
51692545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    jint _exception = 0;
51702545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    const char * _exceptionType;
51712545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    const char * _exceptionMessage;
5172560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLfloat *value_base = (GLfloat *) 0;
5173560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _remaining;
5174560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLfloat *value = (GLfloat *) 0;
5175560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
5176560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (!value_ref) {
51772545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exception = 1;
51782545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
51792545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "value == null";
5180560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
5181560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
5182560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (offset < 0) {
51832545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exception = 1;
51842545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
51852545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "offset < 0";
5186560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
5187560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
5188560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    _remaining = _env->GetArrayLength(value_ref) - offset;
5189560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    value_base = (GLfloat *)
5190560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _env->GetPrimitiveArrayCritical(value_ref, (jboolean *)0);
5191560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    value = value_base + offset;
5192560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
5193560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glUniformMatrix3fv(
5194560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLint)location,
5195560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLsizei)count,
5196560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLboolean)transpose,
5197560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLfloat *)value
5198560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
5199560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
5200560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichexit:
5201560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (value_base) {
5202560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _env->ReleasePrimitiveArrayCritical(value_ref, value_base,
5203560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich            JNI_ABORT);
5204560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
52052545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    if (_exception) {
52062545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        jniThrowException(_env, _exceptionType, _exceptionMessage);
52072545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    }
5208560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
5209560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
5210560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glUniformMatrix3fv ( GLint location, GLsizei count, GLboolean transpose, const GLfloat *value ) */
5211560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
5212560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glUniformMatrix3fv__IIZLjava_nio_FloatBuffer_2
5213560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint location, jint count, jboolean transpose, jobject value_buf) {
5214560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jarray _array = (jarray) 0;
521517045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    jint _bufferOffset = (jint) 0;
5216560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _remaining;
5217560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLfloat *value = (GLfloat *) 0;
5218560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
521917045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    value = (GLfloat *)getPointer(_env, value_buf, &_array, &_remaining, &_bufferOffset);
522017045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    if (value == NULL) {
522117045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        char * _valueBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
522217045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        value = (GLfloat *) (_valueBase + _bufferOffset);
522317045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    }
5224560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glUniformMatrix3fv(
5225560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLint)location,
5226560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLsizei)count,
5227560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLboolean)transpose,
5228560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLfloat *)value
5229560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
5230560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (_array) {
5231560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        releasePointer(_env, _array, value, JNI_FALSE);
5232560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
5233560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
5234560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
5235560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glUniformMatrix4fv ( GLint location, GLsizei count, GLboolean transpose, const GLfloat *value ) */
5236560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
5237560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glUniformMatrix4fv__IIZ_3FI
5238560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint location, jint count, jboolean transpose, jfloatArray value_ref, jint offset) {
52392545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    jint _exception = 0;
52402545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    const char * _exceptionType;
52412545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    const char * _exceptionMessage;
5242560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLfloat *value_base = (GLfloat *) 0;
5243560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _remaining;
5244560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLfloat *value = (GLfloat *) 0;
5245560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
5246560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (!value_ref) {
52472545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exception = 1;
52482545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
52492545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "value == null";
5250560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
5251560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
5252560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (offset < 0) {
52532545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exception = 1;
52542545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
52552545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "offset < 0";
5256560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
5257560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
5258560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    _remaining = _env->GetArrayLength(value_ref) - offset;
5259560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    value_base = (GLfloat *)
5260560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _env->GetPrimitiveArrayCritical(value_ref, (jboolean *)0);
5261560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    value = value_base + offset;
5262560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
5263560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glUniformMatrix4fv(
5264560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLint)location,
5265560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLsizei)count,
5266560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLboolean)transpose,
5267560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLfloat *)value
5268560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
5269560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
5270560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichexit:
5271560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (value_base) {
5272560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _env->ReleasePrimitiveArrayCritical(value_ref, value_base,
5273560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich            JNI_ABORT);
5274560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
52752545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    if (_exception) {
52762545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        jniThrowException(_env, _exceptionType, _exceptionMessage);
52772545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    }
5278560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
5279560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
5280560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glUniformMatrix4fv ( GLint location, GLsizei count, GLboolean transpose, const GLfloat *value ) */
5281560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
5282560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glUniformMatrix4fv__IIZLjava_nio_FloatBuffer_2
5283560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint location, jint count, jboolean transpose, jobject value_buf) {
5284560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jarray _array = (jarray) 0;
528517045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    jint _bufferOffset = (jint) 0;
5286560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _remaining;
5287560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLfloat *value = (GLfloat *) 0;
5288560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
528917045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    value = (GLfloat *)getPointer(_env, value_buf, &_array, &_remaining, &_bufferOffset);
529017045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    if (value == NULL) {
529117045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        char * _valueBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
529217045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        value = (GLfloat *) (_valueBase + _bufferOffset);
529317045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    }
5294560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glUniformMatrix4fv(
5295560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLint)location,
5296560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLsizei)count,
5297560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLboolean)transpose,
5298560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLfloat *)value
5299560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
5300560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (_array) {
5301560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        releasePointer(_env, _array, value, JNI_FALSE);
5302560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
5303560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
5304560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
5305560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glUseProgram ( GLuint program ) */
5306560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
5307560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glUseProgram__I
5308560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint program) {
5309560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glUseProgram(
5310560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLuint)program
5311560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
5312560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
5313560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
5314560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glValidateProgram ( GLuint program ) */
5315560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
5316560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glValidateProgram__I
5317560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint program) {
5318560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glValidateProgram(
5319560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLuint)program
5320560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
5321560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
5322560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
5323560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glVertexAttrib1f ( GLuint indx, GLfloat x ) */
5324560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
5325560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glVertexAttrib1f__IF
5326560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint indx, jfloat x) {
5327560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glVertexAttrib1f(
5328560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLuint)indx,
5329560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLfloat)x
5330560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
5331560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
5332560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
5333560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glVertexAttrib1fv ( GLuint indx, const GLfloat *values ) */
5334560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
5335560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glVertexAttrib1fv__I_3FI
5336560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint indx, jfloatArray values_ref, jint offset) {
53372545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    jint _exception = 0;
53382545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    const char * _exceptionType;
53392545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    const char * _exceptionMessage;
5340560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLfloat *values_base = (GLfloat *) 0;
5341560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _remaining;
5342560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLfloat *values = (GLfloat *) 0;
5343560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
5344560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (!values_ref) {
53452545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exception = 1;
53462545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
53472545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "values == null";
5348560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
5349560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
5350560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (offset < 0) {
53512545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exception = 1;
53522545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
53532545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "offset < 0";
5354560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
5355560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
5356560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    _remaining = _env->GetArrayLength(values_ref) - offset;
5357560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    values_base = (GLfloat *)
5358560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _env->GetPrimitiveArrayCritical(values_ref, (jboolean *)0);
5359560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    values = values_base + offset;
5360560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
5361560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glVertexAttrib1fv(
5362560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLuint)indx,
5363560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLfloat *)values
5364560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
5365560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
5366560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichexit:
5367560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (values_base) {
5368560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _env->ReleasePrimitiveArrayCritical(values_ref, values_base,
5369560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich            JNI_ABORT);
5370560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
53712545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    if (_exception) {
53722545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        jniThrowException(_env, _exceptionType, _exceptionMessage);
53732545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    }
5374560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
5375560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
5376560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glVertexAttrib1fv ( GLuint indx, const GLfloat *values ) */
5377560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
5378560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glVertexAttrib1fv__ILjava_nio_FloatBuffer_2
5379560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint indx, jobject values_buf) {
5380560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jarray _array = (jarray) 0;
538117045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    jint _bufferOffset = (jint) 0;
5382560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _remaining;
5383560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLfloat *values = (GLfloat *) 0;
5384560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
538517045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    values = (GLfloat *)getPointer(_env, values_buf, &_array, &_remaining, &_bufferOffset);
538617045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    if (values == NULL) {
538717045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        char * _valuesBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
538817045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        values = (GLfloat *) (_valuesBase + _bufferOffset);
538917045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    }
5390560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glVertexAttrib1fv(
5391560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLuint)indx,
5392560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLfloat *)values
5393560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
5394560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (_array) {
5395560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        releasePointer(_env, _array, values, JNI_FALSE);
5396560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
5397560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
5398560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
5399560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glVertexAttrib2f ( GLuint indx, GLfloat x, GLfloat y ) */
5400560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
5401560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glVertexAttrib2f__IFF
5402560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint indx, jfloat x, jfloat y) {
5403560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glVertexAttrib2f(
5404560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLuint)indx,
5405560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLfloat)x,
5406560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLfloat)y
5407560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
5408560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
5409560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
5410560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glVertexAttrib2fv ( GLuint indx, const GLfloat *values ) */
5411560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
5412560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glVertexAttrib2fv__I_3FI
5413560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint indx, jfloatArray values_ref, jint offset) {
54142545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    jint _exception = 0;
54152545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    const char * _exceptionType;
54162545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    const char * _exceptionMessage;
5417560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLfloat *values_base = (GLfloat *) 0;
5418560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _remaining;
5419560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLfloat *values = (GLfloat *) 0;
5420560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
5421560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (!values_ref) {
54222545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exception = 1;
54232545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
54242545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "values == null";
5425560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
5426560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
5427560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (offset < 0) {
54282545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exception = 1;
54292545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
54302545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "offset < 0";
5431560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
5432560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
5433560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    _remaining = _env->GetArrayLength(values_ref) - offset;
5434560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    values_base = (GLfloat *)
5435560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _env->GetPrimitiveArrayCritical(values_ref, (jboolean *)0);
5436560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    values = values_base + offset;
5437560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
5438560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glVertexAttrib2fv(
5439560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLuint)indx,
5440560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLfloat *)values
5441560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
5442560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
5443560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichexit:
5444560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (values_base) {
5445560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _env->ReleasePrimitiveArrayCritical(values_ref, values_base,
5446560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich            JNI_ABORT);
5447560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
54482545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    if (_exception) {
54492545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        jniThrowException(_env, _exceptionType, _exceptionMessage);
54502545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    }
5451560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
5452560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
5453560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glVertexAttrib2fv ( GLuint indx, const GLfloat *values ) */
5454560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
5455560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glVertexAttrib2fv__ILjava_nio_FloatBuffer_2
5456560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint indx, jobject values_buf) {
5457560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jarray _array = (jarray) 0;
545817045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    jint _bufferOffset = (jint) 0;
5459560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _remaining;
5460560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLfloat *values = (GLfloat *) 0;
5461560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
546217045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    values = (GLfloat *)getPointer(_env, values_buf, &_array, &_remaining, &_bufferOffset);
546317045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    if (values == NULL) {
546417045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        char * _valuesBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
546517045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        values = (GLfloat *) (_valuesBase + _bufferOffset);
546617045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    }
5467560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glVertexAttrib2fv(
5468560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLuint)indx,
5469560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLfloat *)values
5470560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
5471560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (_array) {
5472560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        releasePointer(_env, _array, values, JNI_FALSE);
5473560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
5474560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
5475560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
5476560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glVertexAttrib3f ( GLuint indx, GLfloat x, GLfloat y, GLfloat z ) */
5477560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
5478560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glVertexAttrib3f__IFFF
5479560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint indx, jfloat x, jfloat y, jfloat z) {
5480560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glVertexAttrib3f(
5481560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLuint)indx,
5482560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLfloat)x,
5483560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLfloat)y,
5484560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLfloat)z
5485560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
5486560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
5487560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
5488560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glVertexAttrib3fv ( GLuint indx, const GLfloat *values ) */
5489560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
5490560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glVertexAttrib3fv__I_3FI
5491560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint indx, jfloatArray values_ref, jint offset) {
54922545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    jint _exception = 0;
54932545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    const char * _exceptionType;
54942545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    const char * _exceptionMessage;
5495560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLfloat *values_base = (GLfloat *) 0;
5496560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _remaining;
5497560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLfloat *values = (GLfloat *) 0;
5498560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
5499560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (!values_ref) {
55002545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exception = 1;
55012545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
55022545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "values == null";
5503560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
5504560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
5505560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (offset < 0) {
55062545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exception = 1;
55072545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
55082545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "offset < 0";
5509560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
5510560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
5511560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    _remaining = _env->GetArrayLength(values_ref) - offset;
5512560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    values_base = (GLfloat *)
5513560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _env->GetPrimitiveArrayCritical(values_ref, (jboolean *)0);
5514560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    values = values_base + offset;
5515560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
5516560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glVertexAttrib3fv(
5517560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLuint)indx,
5518560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLfloat *)values
5519560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
5520560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
5521560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichexit:
5522560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (values_base) {
5523560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _env->ReleasePrimitiveArrayCritical(values_ref, values_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 glVertexAttrib3fv ( GLuint indx, const GLfloat *values ) */
5532560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
5533560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glVertexAttrib3fv__ILjava_nio_FloatBuffer_2
5534560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint indx, jobject values_buf) {
5535560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jarray _array = (jarray) 0;
553617045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    jint _bufferOffset = (jint) 0;
5537560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _remaining;
5538560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLfloat *values = (GLfloat *) 0;
5539560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
554017045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    values = (GLfloat *)getPointer(_env, values_buf, &_array, &_remaining, &_bufferOffset);
554117045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    if (values == NULL) {
554217045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        char * _valuesBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
554317045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        values = (GLfloat *) (_valuesBase + _bufferOffset);
554417045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    }
5545560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glVertexAttrib3fv(
5546560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLuint)indx,
5547560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLfloat *)values
5548560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
5549560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (_array) {
5550560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        releasePointer(_env, _array, values, JNI_FALSE);
5551560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
5552560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
5553560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
5554560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glVertexAttrib4f ( GLuint indx, GLfloat x, GLfloat y, GLfloat z, GLfloat w ) */
5555560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
5556560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glVertexAttrib4f__IFFFF
5557560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint indx, jfloat x, jfloat y, jfloat z, jfloat w) {
5558560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glVertexAttrib4f(
5559560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLuint)indx,
5560560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLfloat)x,
5561560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLfloat)y,
5562560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLfloat)z,
5563560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLfloat)w
5564560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
5565560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
5566560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
5567560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glVertexAttrib4fv ( GLuint indx, const GLfloat *values ) */
5568560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
5569560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glVertexAttrib4fv__I_3FI
5570560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint indx, jfloatArray values_ref, jint offset) {
55712545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    jint _exception = 0;
55722545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    const char * _exceptionType;
55732545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    const char * _exceptionMessage;
5574560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLfloat *values_base = (GLfloat *) 0;
5575560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _remaining;
5576560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLfloat *values = (GLfloat *) 0;
5577560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
5578560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (!values_ref) {
55792545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exception = 1;
55802545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
55812545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "values == null";
5582560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
5583560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
5584560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (offset < 0) {
55852545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exception = 1;
55862545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
55872545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "offset < 0";
5588560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
5589560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
5590560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    _remaining = _env->GetArrayLength(values_ref) - offset;
5591560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    values_base = (GLfloat *)
5592560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _env->GetPrimitiveArrayCritical(values_ref, (jboolean *)0);
5593560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    values = values_base + offset;
5594560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
5595560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glVertexAttrib4fv(
5596560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLuint)indx,
5597560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLfloat *)values
5598560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
5599560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
5600560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichexit:
5601560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (values_base) {
5602560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _env->ReleasePrimitiveArrayCritical(values_ref, values_base,
5603560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich            JNI_ABORT);
5604560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
56052545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    if (_exception) {
56062545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        jniThrowException(_env, _exceptionType, _exceptionMessage);
56072545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    }
5608560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
5609560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
5610560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glVertexAttrib4fv ( GLuint indx, const GLfloat *values ) */
5611560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
5612560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glVertexAttrib4fv__ILjava_nio_FloatBuffer_2
5613560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint indx, jobject values_buf) {
5614560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jarray _array = (jarray) 0;
561517045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    jint _bufferOffset = (jint) 0;
5616560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _remaining;
5617560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLfloat *values = (GLfloat *) 0;
5618560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
561917045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    values = (GLfloat *)getPointer(_env, values_buf, &_array, &_remaining, &_bufferOffset);
562017045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    if (values == NULL) {
562117045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        char * _valuesBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
562217045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        values = (GLfloat *) (_valuesBase + _bufferOffset);
562317045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    }
5624560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glVertexAttrib4fv(
5625560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLuint)indx,
5626560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLfloat *)values
5627560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
5628560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (_array) {
5629560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        releasePointer(_env, _array, values, JNI_FALSE);
5630560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
5631560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
5632560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
5633224107a421e2611b15d1ec736df54bca9ee3e78dJack Palevich/* void glVertexAttribPointer ( GLuint indx, GLint size, GLenum type, GLboolean normalized, GLsizei stride, GLint offset ) */
5634224107a421e2611b15d1ec736df54bca9ee3e78dJack Palevichstatic void
5635224107a421e2611b15d1ec736df54bca9ee3e78dJack Palevichandroid_glVertexAttribPointer__IIIZII
5636224107a421e2611b15d1ec736df54bca9ee3e78dJack Palevich  (JNIEnv *_env, jobject _this, jint indx, jint size, jint type, jboolean normalized, jint stride, jint offset) {
5637224107a421e2611b15d1ec736df54bca9ee3e78dJack Palevich    glVertexAttribPointer(
5638224107a421e2611b15d1ec736df54bca9ee3e78dJack Palevich        (GLuint)indx,
5639224107a421e2611b15d1ec736df54bca9ee3e78dJack Palevich        (GLint)size,
5640224107a421e2611b15d1ec736df54bca9ee3e78dJack Palevich        (GLenum)type,
5641224107a421e2611b15d1ec736df54bca9ee3e78dJack Palevich        (GLboolean)normalized,
5642224107a421e2611b15d1ec736df54bca9ee3e78dJack Palevich        (GLsizei)stride,
5643224107a421e2611b15d1ec736df54bca9ee3e78dJack Palevich        (const GLvoid *)offset
5644224107a421e2611b15d1ec736df54bca9ee3e78dJack Palevich    );
5645224107a421e2611b15d1ec736df54bca9ee3e78dJack Palevich}
5646224107a421e2611b15d1ec736df54bca9ee3e78dJack Palevich
5647560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glVertexAttribPointer ( GLuint indx, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const GLvoid *ptr ) */
5648560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
5649560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glVertexAttribPointerBounds__IIIZILjava_nio_Buffer_2I
5650560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint indx, jint size, jint type, jboolean normalized, jint stride, jobject ptr_buf, jint remaining) {
5651560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jarray _array = (jarray) 0;
565217045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    jint _bufferOffset = (jint) 0;
5653560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _remaining;
5654560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLvoid *ptr = (GLvoid *) 0;
5655560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
5656560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (ptr_buf) {
5657560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        ptr = (GLvoid *) getDirectBufferPointer(_env, ptr_buf);
5658560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        if ( ! ptr ) {
5659560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich            return;
5660560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        }
5661560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
5662560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glVertexAttribPointerBounds(
5663560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLuint)indx,
5664560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLint)size,
5665560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLenum)type,
5666560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLboolean)normalized,
5667560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLsizei)stride,
5668560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLvoid *)ptr,
5669560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLsizei)remaining
5670560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
5671560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
5672560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
5673560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glViewport ( GLint x, GLint y, GLsizei width, GLsizei height ) */
5674560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
5675560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glViewport__IIII
5676560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint x, jint y, jint width, jint height) {
5677560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glViewport(
5678560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLint)x,
5679560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLint)y,
5680560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLsizei)width,
5681560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLsizei)height
5682560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
5683560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
5684560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
5685560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic const char *classPathName = "android/opengl/GLES20";
5686560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
5687560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic JNINativeMethod methods[] = {
5688560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"_nativeClassInit", "()V", (void*)nativeClassInit },
5689560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glActiveTexture", "(I)V", (void *) android_glActiveTexture__I },
5690560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glAttachShader", "(II)V", (void *) android_glAttachShader__II },
5691560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glBindAttribLocation", "(IILjava/lang/String;)V", (void *) android_glBindAttribLocation__IILjava_lang_String_2 },
5692560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glBindBuffer", "(II)V", (void *) android_glBindBuffer__II },
5693560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glBindFramebuffer", "(II)V", (void *) android_glBindFramebuffer__II },
5694560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glBindRenderbuffer", "(II)V", (void *) android_glBindRenderbuffer__II },
5695560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glBindTexture", "(II)V", (void *) android_glBindTexture__II },
5696560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glBlendColor", "(FFFF)V", (void *) android_glBlendColor__FFFF },
5697560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glBlendEquation", "(I)V", (void *) android_glBlendEquation__I },
5698560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glBlendEquationSeparate", "(II)V", (void *) android_glBlendEquationSeparate__II },
5699560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glBlendFunc", "(II)V", (void *) android_glBlendFunc__II },
5700560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glBlendFuncSeparate", "(IIII)V", (void *) android_glBlendFuncSeparate__IIII },
5701560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glBufferData", "(IILjava/nio/Buffer;I)V", (void *) android_glBufferData__IILjava_nio_Buffer_2I },
5702560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glBufferSubData", "(IIILjava/nio/Buffer;)V", (void *) android_glBufferSubData__IIILjava_nio_Buffer_2 },
5703560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glCheckFramebufferStatus", "(I)I", (void *) android_glCheckFramebufferStatus__I },
5704560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glClear", "(I)V", (void *) android_glClear__I },
5705560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glClearColor", "(FFFF)V", (void *) android_glClearColor__FFFF },
5706560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glClearDepthf", "(F)V", (void *) android_glClearDepthf__F },
5707560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glClearStencil", "(I)V", (void *) android_glClearStencil__I },
5708560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glColorMask", "(ZZZZ)V", (void *) android_glColorMask__ZZZZ },
5709560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glCompileShader", "(I)V", (void *) android_glCompileShader__I },
5710560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glCompressedTexImage2D", "(IIIIIIILjava/nio/Buffer;)V", (void *) android_glCompressedTexImage2D__IIIIIIILjava_nio_Buffer_2 },
5711560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glCompressedTexSubImage2D", "(IIIIIIIILjava/nio/Buffer;)V", (void *) android_glCompressedTexSubImage2D__IIIIIIIILjava_nio_Buffer_2 },
5712560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glCopyTexImage2D", "(IIIIIIII)V", (void *) android_glCopyTexImage2D__IIIIIIII },
5713560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glCopyTexSubImage2D", "(IIIIIIII)V", (void *) android_glCopyTexSubImage2D__IIIIIIII },
5714560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glCreateProgram", "()I", (void *) android_glCreateProgram__ },
5715560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glCreateShader", "(I)I", (void *) android_glCreateShader__I },
5716560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glCullFace", "(I)V", (void *) android_glCullFace__I },
5717560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glDeleteBuffers", "(I[II)V", (void *) android_glDeleteBuffers__I_3II },
5718560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glDeleteBuffers", "(ILjava/nio/IntBuffer;)V", (void *) android_glDeleteBuffers__ILjava_nio_IntBuffer_2 },
5719560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glDeleteFramebuffers", "(I[II)V", (void *) android_glDeleteFramebuffers__I_3II },
5720560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glDeleteFramebuffers", "(ILjava/nio/IntBuffer;)V", (void *) android_glDeleteFramebuffers__ILjava_nio_IntBuffer_2 },
5721560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glDeleteProgram", "(I)V", (void *) android_glDeleteProgram__I },
5722560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glDeleteRenderbuffers", "(I[II)V", (void *) android_glDeleteRenderbuffers__I_3II },
5723560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glDeleteRenderbuffers", "(ILjava/nio/IntBuffer;)V", (void *) android_glDeleteRenderbuffers__ILjava_nio_IntBuffer_2 },
5724560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glDeleteShader", "(I)V", (void *) android_glDeleteShader__I },
5725560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glDeleteTextures", "(I[II)V", (void *) android_glDeleteTextures__I_3II },
5726560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glDeleteTextures", "(ILjava/nio/IntBuffer;)V", (void *) android_glDeleteTextures__ILjava_nio_IntBuffer_2 },
5727560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glDepthFunc", "(I)V", (void *) android_glDepthFunc__I },
5728560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glDepthMask", "(Z)V", (void *) android_glDepthMask__Z },
5729560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glDepthRangef", "(FF)V", (void *) android_glDepthRangef__FF },
5730560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glDetachShader", "(II)V", (void *) android_glDetachShader__II },
5731560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glDisable", "(I)V", (void *) android_glDisable__I },
5732560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glDisableVertexAttribArray", "(I)V", (void *) android_glDisableVertexAttribArray__I },
5733560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glDrawArrays", "(III)V", (void *) android_glDrawArrays__III },
5734224107a421e2611b15d1ec736df54bca9ee3e78dJack Palevich{"glDrawElements", "(IIII)V", (void *) android_glDrawElements__IIII },
5735560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glDrawElements", "(IIILjava/nio/Buffer;)V", (void *) android_glDrawElements__IIILjava_nio_Buffer_2 },
5736560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glEnable", "(I)V", (void *) android_glEnable__I },
5737560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glEnableVertexAttribArray", "(I)V", (void *) android_glEnableVertexAttribArray__I },
5738560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glFinish", "()V", (void *) android_glFinish__ },
5739560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glFlush", "()V", (void *) android_glFlush__ },
5740560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glFramebufferRenderbuffer", "(IIII)V", (void *) android_glFramebufferRenderbuffer__IIII },
5741560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glFramebufferTexture2D", "(IIIII)V", (void *) android_glFramebufferTexture2D__IIIII },
5742560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glFrontFace", "(I)V", (void *) android_glFrontFace__I },
5743560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glGenBuffers", "(I[II)V", (void *) android_glGenBuffers__I_3II },
5744560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glGenBuffers", "(ILjava/nio/IntBuffer;)V", (void *) android_glGenBuffers__ILjava_nio_IntBuffer_2 },
5745560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glGenerateMipmap", "(I)V", (void *) android_glGenerateMipmap__I },
5746560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glGenFramebuffers", "(I[II)V", (void *) android_glGenFramebuffers__I_3II },
5747560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glGenFramebuffers", "(ILjava/nio/IntBuffer;)V", (void *) android_glGenFramebuffers__ILjava_nio_IntBuffer_2 },
5748560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glGenRenderbuffers", "(I[II)V", (void *) android_glGenRenderbuffers__I_3II },
5749560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glGenRenderbuffers", "(ILjava/nio/IntBuffer;)V", (void *) android_glGenRenderbuffers__ILjava_nio_IntBuffer_2 },
5750560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glGenTextures", "(I[II)V", (void *) android_glGenTextures__I_3II },
5751560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glGenTextures", "(ILjava/nio/IntBuffer;)V", (void *) android_glGenTextures__ILjava_nio_IntBuffer_2 },
5752560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glGetActiveAttrib", "(III[II[II[II[BI)V", (void *) android_glGetActiveAttrib__III_3II_3II_3II_3BI },
5753560814f6b11abe83ff0c4ed18cac015c276b3181Jack 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 },
5754560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glGetActiveUniform", "(III[II[II[II[BI)V", (void *) android_glGetActiveUniform__III_3II_3II_3II_3BI },
5755560814f6b11abe83ff0c4ed18cac015c276b3181Jack 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 },
5756560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glGetAttachedShaders", "(II[II[II)V", (void *) android_glGetAttachedShaders__II_3II_3II },
5757560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glGetAttachedShaders", "(IILjava/nio/IntBuffer;Ljava/nio/IntBuffer;)V", (void *) android_glGetAttachedShaders__IILjava_nio_IntBuffer_2Ljava_nio_IntBuffer_2 },
5758560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glGetAttribLocation", "(ILjava/lang/String;)I", (void *) android_glGetAttribLocation__ILjava_lang_String_2 },
5759560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glGetBooleanv", "(I[ZI)V", (void *) android_glGetBooleanv__I_3ZI },
5760560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glGetBooleanv", "(ILjava/nio/IntBuffer;)V", (void *) android_glGetBooleanv__ILjava_nio_IntBuffer_2 },
5761560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glGetBufferParameteriv", "(II[II)V", (void *) android_glGetBufferParameteriv__II_3II },
5762560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glGetBufferParameteriv", "(IILjava/nio/IntBuffer;)V", (void *) android_glGetBufferParameteriv__IILjava_nio_IntBuffer_2 },
5763560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glGetError", "()I", (void *) android_glGetError__ },
5764560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glGetFloatv", "(I[FI)V", (void *) android_glGetFloatv__I_3FI },
5765560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glGetFloatv", "(ILjava/nio/FloatBuffer;)V", (void *) android_glGetFloatv__ILjava_nio_FloatBuffer_2 },
5766560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glGetFramebufferAttachmentParameteriv", "(III[II)V", (void *) android_glGetFramebufferAttachmentParameteriv__III_3II },
5767560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glGetFramebufferAttachmentParameteriv", "(IIILjava/nio/IntBuffer;)V", (void *) android_glGetFramebufferAttachmentParameteriv__IIILjava_nio_IntBuffer_2 },
5768560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glGetIntegerv", "(I[II)V", (void *) android_glGetIntegerv__I_3II },
5769560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glGetIntegerv", "(ILjava/nio/IntBuffer;)V", (void *) android_glGetIntegerv__ILjava_nio_IntBuffer_2 },
5770560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glGetProgramiv", "(II[II)V", (void *) android_glGetProgramiv__II_3II },
5771560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glGetProgramiv", "(IILjava/nio/IntBuffer;)V", (void *) android_glGetProgramiv__IILjava_nio_IntBuffer_2 },
5772560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glGetProgramInfoLog", "(I)Ljava/lang/String;", (void *) android_glGetProgramInfoLog },
5773560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glGetRenderbufferParameteriv", "(II[II)V", (void *) android_glGetRenderbufferParameteriv__II_3II },
5774560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glGetRenderbufferParameteriv", "(IILjava/nio/IntBuffer;)V", (void *) android_glGetRenderbufferParameteriv__IILjava_nio_IntBuffer_2 },
5775560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glGetShaderiv", "(II[II)V", (void *) android_glGetShaderiv__II_3II },
5776560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glGetShaderiv", "(IILjava/nio/IntBuffer;)V", (void *) android_glGetShaderiv__IILjava_nio_IntBuffer_2 },
5777560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glGetShaderInfoLog", "(I)Ljava/lang/String;", (void *) android_glGetShaderInfoLog },
5778560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glGetShaderPrecisionFormat", "(II[II[II)V", (void *) android_glGetShaderPrecisionFormat__II_3II_3II },
5779560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glGetShaderPrecisionFormat", "(IILjava/nio/IntBuffer;Ljava/nio/IntBuffer;)V", (void *) android_glGetShaderPrecisionFormat__IILjava_nio_IntBuffer_2Ljava_nio_IntBuffer_2 },
5780560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glGetShaderSource", "(II[II[BI)V", (void *) android_glGetShaderSource__II_3II_3BI },
5781560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glGetShaderSource", "(IILjava/nio/IntBuffer;B)V", (void *) android_glGetShaderSource__IILjava_nio_IntBuffer_2B },
5782560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glGetString", "(I)Ljava/lang/String;", (void *) android_glGetString },
5783560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glGetTexParameterfv", "(II[FI)V", (void *) android_glGetTexParameterfv__II_3FI },
5784560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glGetTexParameterfv", "(IILjava/nio/FloatBuffer;)V", (void *) android_glGetTexParameterfv__IILjava_nio_FloatBuffer_2 },
5785560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glGetTexParameteriv", "(II[II)V", (void *) android_glGetTexParameteriv__II_3II },
5786560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glGetTexParameteriv", "(IILjava/nio/IntBuffer;)V", (void *) android_glGetTexParameteriv__IILjava_nio_IntBuffer_2 },
5787560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glGetUniformfv", "(II[FI)V", (void *) android_glGetUniformfv__II_3FI },
5788560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glGetUniformfv", "(IILjava/nio/FloatBuffer;)V", (void *) android_glGetUniformfv__IILjava_nio_FloatBuffer_2 },
5789560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glGetUniformiv", "(II[II)V", (void *) android_glGetUniformiv__II_3II },
5790560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glGetUniformiv", "(IILjava/nio/IntBuffer;)V", (void *) android_glGetUniformiv__IILjava_nio_IntBuffer_2 },
5791560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glGetUniformLocation", "(ILjava/lang/String;)I", (void *) android_glGetUniformLocation__ILjava_lang_String_2 },
5792560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glGetVertexAttribfv", "(II[FI)V", (void *) android_glGetVertexAttribfv__II_3FI },
5793560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glGetVertexAttribfv", "(IILjava/nio/FloatBuffer;)V", (void *) android_glGetVertexAttribfv__IILjava_nio_FloatBuffer_2 },
5794560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glGetVertexAttribiv", "(II[II)V", (void *) android_glGetVertexAttribiv__II_3II },
5795560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glGetVertexAttribiv", "(IILjava/nio/IntBuffer;)V", (void *) android_glGetVertexAttribiv__IILjava_nio_IntBuffer_2 },
5796560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glHint", "(II)V", (void *) android_glHint__II },
5797560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glIsBuffer", "(I)Z", (void *) android_glIsBuffer__I },
5798560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glIsEnabled", "(I)Z", (void *) android_glIsEnabled__I },
5799560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glIsFramebuffer", "(I)Z", (void *) android_glIsFramebuffer__I },
5800560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glIsProgram", "(I)Z", (void *) android_glIsProgram__I },
5801560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glIsRenderbuffer", "(I)Z", (void *) android_glIsRenderbuffer__I },
5802560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glIsShader", "(I)Z", (void *) android_glIsShader__I },
5803560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glIsTexture", "(I)Z", (void *) android_glIsTexture__I },
5804560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glLineWidth", "(F)V", (void *) android_glLineWidth__F },
5805560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glLinkProgram", "(I)V", (void *) android_glLinkProgram__I },
5806560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glPixelStorei", "(II)V", (void *) android_glPixelStorei__II },
5807560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glPolygonOffset", "(FF)V", (void *) android_glPolygonOffset__FF },
5808560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glReadPixels", "(IIIIIILjava/nio/Buffer;)V", (void *) android_glReadPixels__IIIIIILjava_nio_Buffer_2 },
5809560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glReleaseShaderCompiler", "()V", (void *) android_glReleaseShaderCompiler__ },
5810560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glRenderbufferStorage", "(IIII)V", (void *) android_glRenderbufferStorage__IIII },
5811560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glSampleCoverage", "(FZ)V", (void *) android_glSampleCoverage__FZ },
5812560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glScissor", "(IIII)V", (void *) android_glScissor__IIII },
5813560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glShaderBinary", "(I[IIILjava/nio/Buffer;I)V", (void *) android_glShaderBinary__I_3IIILjava_nio_Buffer_2I },
5814560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glShaderBinary", "(ILjava/nio/IntBuffer;ILjava/nio/Buffer;I)V", (void *) android_glShaderBinary__ILjava_nio_IntBuffer_2ILjava_nio_Buffer_2I },
5815560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glShaderSource", "(ILjava/lang/String;)V", (void *) android_glShaderSource },
5816560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glStencilFunc", "(III)V", (void *) android_glStencilFunc__III },
5817560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glStencilFuncSeparate", "(IIII)V", (void *) android_glStencilFuncSeparate__IIII },
5818560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glStencilMask", "(I)V", (void *) android_glStencilMask__I },
5819560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glStencilMaskSeparate", "(II)V", (void *) android_glStencilMaskSeparate__II },
5820560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glStencilOp", "(III)V", (void *) android_glStencilOp__III },
5821560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glStencilOpSeparate", "(IIII)V", (void *) android_glStencilOpSeparate__IIII },
5822560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glTexImage2D", "(IIIIIIIILjava/nio/Buffer;)V", (void *) android_glTexImage2D__IIIIIIIILjava_nio_Buffer_2 },
5823560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glTexParameterf", "(IIF)V", (void *) android_glTexParameterf__IIF },
5824560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glTexParameterfv", "(II[FI)V", (void *) android_glTexParameterfv__II_3FI },
5825560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glTexParameterfv", "(IILjava/nio/FloatBuffer;)V", (void *) android_glTexParameterfv__IILjava_nio_FloatBuffer_2 },
5826560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glTexParameteri", "(III)V", (void *) android_glTexParameteri__III },
5827560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glTexParameteriv", "(II[II)V", (void *) android_glTexParameteriv__II_3II },
5828560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glTexParameteriv", "(IILjava/nio/IntBuffer;)V", (void *) android_glTexParameteriv__IILjava_nio_IntBuffer_2 },
5829560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glTexSubImage2D", "(IIIIIIIILjava/nio/Buffer;)V", (void *) android_glTexSubImage2D__IIIIIIIILjava_nio_Buffer_2 },
5830560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glUniform1f", "(IF)V", (void *) android_glUniform1f__IF },
5831560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glUniform1fv", "(II[FI)V", (void *) android_glUniform1fv__II_3FI },
5832560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glUniform1fv", "(IILjava/nio/FloatBuffer;)V", (void *) android_glUniform1fv__IILjava_nio_FloatBuffer_2 },
5833560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glUniform1i", "(II)V", (void *) android_glUniform1i__II },
5834560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glUniform1iv", "(II[II)V", (void *) android_glUniform1iv__II_3II },
5835560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glUniform1iv", "(IILjava/nio/IntBuffer;)V", (void *) android_glUniform1iv__IILjava_nio_IntBuffer_2 },
5836560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glUniform2f", "(IFF)V", (void *) android_glUniform2f__IFF },
5837560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glUniform2fv", "(II[FI)V", (void *) android_glUniform2fv__II_3FI },
5838560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glUniform2fv", "(IILjava/nio/FloatBuffer;)V", (void *) android_glUniform2fv__IILjava_nio_FloatBuffer_2 },
5839560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glUniform2i", "(III)V", (void *) android_glUniform2i__III },
5840560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glUniform2iv", "(II[II)V", (void *) android_glUniform2iv__II_3II },
5841560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glUniform2iv", "(IILjava/nio/IntBuffer;)V", (void *) android_glUniform2iv__IILjava_nio_IntBuffer_2 },
5842560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glUniform3f", "(IFFF)V", (void *) android_glUniform3f__IFFF },
5843560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glUniform3fv", "(II[FI)V", (void *) android_glUniform3fv__II_3FI },
5844560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glUniform3fv", "(IILjava/nio/FloatBuffer;)V", (void *) android_glUniform3fv__IILjava_nio_FloatBuffer_2 },
5845560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glUniform3i", "(IIII)V", (void *) android_glUniform3i__IIII },
5846560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glUniform3iv", "(II[II)V", (void *) android_glUniform3iv__II_3II },
5847560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glUniform3iv", "(IILjava/nio/IntBuffer;)V", (void *) android_glUniform3iv__IILjava_nio_IntBuffer_2 },
5848560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glUniform4f", "(IFFFF)V", (void *) android_glUniform4f__IFFFF },
5849560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glUniform4fv", "(II[FI)V", (void *) android_glUniform4fv__II_3FI },
5850560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glUniform4fv", "(IILjava/nio/FloatBuffer;)V", (void *) android_glUniform4fv__IILjava_nio_FloatBuffer_2 },
5851560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glUniform4i", "(IIIII)V", (void *) android_glUniform4i__IIIII },
5852560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glUniform4iv", "(II[II)V", (void *) android_glUniform4iv__II_3II },
5853560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glUniform4iv", "(IILjava/nio/IntBuffer;)V", (void *) android_glUniform4iv__IILjava_nio_IntBuffer_2 },
5854560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glUniformMatrix2fv", "(IIZ[FI)V", (void *) android_glUniformMatrix2fv__IIZ_3FI },
5855560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glUniformMatrix2fv", "(IIZLjava/nio/FloatBuffer;)V", (void *) android_glUniformMatrix2fv__IIZLjava_nio_FloatBuffer_2 },
5856560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glUniformMatrix3fv", "(IIZ[FI)V", (void *) android_glUniformMatrix3fv__IIZ_3FI },
5857560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glUniformMatrix3fv", "(IIZLjava/nio/FloatBuffer;)V", (void *) android_glUniformMatrix3fv__IIZLjava_nio_FloatBuffer_2 },
5858560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glUniformMatrix4fv", "(IIZ[FI)V", (void *) android_glUniformMatrix4fv__IIZ_3FI },
5859560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glUniformMatrix4fv", "(IIZLjava/nio/FloatBuffer;)V", (void *) android_glUniformMatrix4fv__IIZLjava_nio_FloatBuffer_2 },
5860560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glUseProgram", "(I)V", (void *) android_glUseProgram__I },
5861560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glValidateProgram", "(I)V", (void *) android_glValidateProgram__I },
5862560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glVertexAttrib1f", "(IF)V", (void *) android_glVertexAttrib1f__IF },
5863560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glVertexAttrib1fv", "(I[FI)V", (void *) android_glVertexAttrib1fv__I_3FI },
5864560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glVertexAttrib1fv", "(ILjava/nio/FloatBuffer;)V", (void *) android_glVertexAttrib1fv__ILjava_nio_FloatBuffer_2 },
5865560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glVertexAttrib2f", "(IFF)V", (void *) android_glVertexAttrib2f__IFF },
5866560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glVertexAttrib2fv", "(I[FI)V", (void *) android_glVertexAttrib2fv__I_3FI },
5867560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glVertexAttrib2fv", "(ILjava/nio/FloatBuffer;)V", (void *) android_glVertexAttrib2fv__ILjava_nio_FloatBuffer_2 },
5868560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glVertexAttrib3f", "(IFFF)V", (void *) android_glVertexAttrib3f__IFFF },
5869560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glVertexAttrib3fv", "(I[FI)V", (void *) android_glVertexAttrib3fv__I_3FI },
5870560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glVertexAttrib3fv", "(ILjava/nio/FloatBuffer;)V", (void *) android_glVertexAttrib3fv__ILjava_nio_FloatBuffer_2 },
5871560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glVertexAttrib4f", "(IFFFF)V", (void *) android_glVertexAttrib4f__IFFFF },
5872560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glVertexAttrib4fv", "(I[FI)V", (void *) android_glVertexAttrib4fv__I_3FI },
5873560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glVertexAttrib4fv", "(ILjava/nio/FloatBuffer;)V", (void *) android_glVertexAttrib4fv__ILjava_nio_FloatBuffer_2 },
5874224107a421e2611b15d1ec736df54bca9ee3e78dJack Palevich{"glVertexAttribPointer", "(IIIZII)V", (void *) android_glVertexAttribPointer__IIIZII },
5875560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glVertexAttribPointerBounds", "(IIIZILjava/nio/Buffer;I)V", (void *) android_glVertexAttribPointerBounds__IIIZILjava_nio_Buffer_2I },
5876560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glViewport", "(IIII)V", (void *) android_glViewport__IIII },
5877560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich};
5878560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
5879560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichint register_android_opengl_jni_GLES20(JNIEnv *_env)
5880560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{
5881560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    int err;
5882560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    err = android::AndroidRuntime::registerNativeMethods(_env, classPathName, methods, NELEM(methods));
5883560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    return err;
5884560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
5885