android_opengl_GLES20.cpp revision dd06946252be852aa53eb6142a119b0fccc83cd1
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
1539dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer/* void glGetActiveAttrib ( GLuint program, GLuint index, GLsizei bufsize, GLsizei *length, GLint *size, GLenum *type, char *name ) */
1540dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshoferstatic jstring
1541dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshoferandroid_glGetActiveAttrib1
1542dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer  (JNIEnv *_env, jobject _this, jint program, jint index, jintArray size_ref, jint sizeOffset, jintArray type_ref, jint typeOffset) {
1543dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    jint _exception = 0;
1544dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    const char * _exceptionType;
1545dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    const char * _exceptionMessage;
1546dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    GLint *size_base = (GLint *) 0;
1547dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    jint _sizeRemaining;
1548dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    GLint *size = (GLint *) 0;
1549dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    GLenum *type_base = (GLenum *) 0;
1550dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    jint _typeRemaining;
1551dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    GLenum *type = (GLenum *) 0;
1552dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer
1553dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    jstring result = 0;
1554dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer
1555dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    GLint len = 0;
1556dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    glGetProgramiv((GLuint)program, GL_ACTIVE_ATTRIBUTE_MAX_LENGTH, &len);
1557dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    if (!len) {
1558dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer        return _env->NewStringUTF("");
1559dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    }
1560dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    char* buf = (char*) malloc(len);
1561dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer
1562dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    if (buf == NULL) {
1563dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer        jniThrowException(_env, "java/lang/IllegalArgumentException", "out of memory");
1564dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer        return NULL;
1565dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    }
1566dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    if (!size_ref) {
1567dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer        _exception = 1;
1568dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
1569dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer        _exceptionMessage = "size == null";
1570dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer        goto exit;
1571dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    }
1572dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    if (sizeOffset < 0) {
1573dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer        _exception = 1;
1574dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
1575dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer        _exceptionMessage = "sizeOffset < 0";
1576dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer        goto exit;
1577dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    }
1578dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    _sizeRemaining = _env->GetArrayLength(size_ref) - sizeOffset;
1579dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    size_base = (GLint *)
1580dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer        _env->GetPrimitiveArrayCritical(size_ref, (jboolean *)0);
1581dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    size = size_base + sizeOffset;
1582dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer
1583dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    if (!type_ref) {
1584dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer        _exception = 1;
1585dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
1586dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer        _exceptionMessage = "type == null";
1587dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer        goto exit;
1588dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    }
1589dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    if (typeOffset < 0) {
1590dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer        _exception = 1;
1591dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
1592dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer        _exceptionMessage = "typeOffset < 0";
1593dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer        goto exit;
1594dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    }
1595dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    _typeRemaining = _env->GetArrayLength(type_ref) - typeOffset;
1596dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    type_base = (GLenum *)
1597dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer        _env->GetPrimitiveArrayCritical(type_ref, (jboolean *)0);
1598dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    type = type_base + typeOffset;
1599dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer
1600dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    glGetActiveAttrib(
1601dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer        (GLuint)program,
1602dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer        (GLuint)index,
1603dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer        (GLsizei)len,
1604dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer        NULL,
1605dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer        (GLint *)size,
1606dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer        (GLenum *)type,
1607dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer        (char *)buf
1608dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    );
1609dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshoferexit:
1610dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    if (type_base) {
1611dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer        _env->ReleasePrimitiveArrayCritical(type_ref, type_base,
1612dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer            _exception ? JNI_ABORT: 0);
1613dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    }
1614dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    if (size_base) {
1615dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer        _env->ReleasePrimitiveArrayCritical(size_ref, size_base,
1616dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer            _exception ? JNI_ABORT: 0);
1617dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    }
1618dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    if (_exception != 1) {
1619dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer        result = _env->NewStringUTF(buf);
1620dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    }
1621dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    if (buf) {
1622dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer        free(buf);
1623dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    }
1624dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    if (_exception) {
1625dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer        jniThrowException(_env, _exceptionType, _exceptionMessage);
1626dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    }
1627dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    if (result == 0) {
1628dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer        result = _env->NewStringUTF("");
1629dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    }
1630dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer
1631dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    return result;
1632dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer}
1633dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer
1634dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer/* void glGetActiveAttrib ( GLuint program, GLuint index, GLsizei bufsize, GLsizei *length, GLint *size, GLenum *type, char *name ) */
1635dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshoferstatic jstring
1636dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshoferandroid_glGetActiveAttrib2
1637dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer  (JNIEnv *_env, jobject _this, jint program, jint index, jobject size_buf, jobject type_buf) {
1638dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    jarray _sizeArray = (jarray) 0;
1639dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    jint _sizeBufferOffset = (jint) 0;
1640dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    jarray _typeArray = (jarray) 0;
1641dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    jint _typeBufferOffset = (jint) 0;
1642dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    jint _lengthRemaining;
1643dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    GLsizei *length = (GLsizei *) 0;
1644dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    jint _sizeRemaining;
1645dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    GLint *size = (GLint *) 0;
1646dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    jint _typeRemaining;
1647dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    GLenum *type = (GLenum *) 0;
1648dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer
1649dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    jstring result = 0;
1650dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer
1651dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    GLint len = 0;
1652dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    glGetProgramiv((GLuint)program, GL_ACTIVE_ATTRIBUTE_MAX_LENGTH, &len);
1653dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    if (!len) {
1654dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer        return _env->NewStringUTF("");
1655dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    }
1656dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    char* buf = (char*) malloc(len);
1657dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer
1658dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    if (buf == NULL) {
1659dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer        jniThrowException(_env, "java/lang/IllegalArgumentException", "out of memory");
1660dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer        return NULL;
1661dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    }
1662dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer
1663dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    size = (GLint *)getPointer(_env, size_buf, &_sizeArray, &_sizeRemaining, &_sizeBufferOffset);
1664dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    type = (GLenum *)getPointer(_env, type_buf, &_typeArray, &_typeRemaining, &_typeBufferOffset);
1665dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    if (size == NULL) {
1666dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer        char * _sizeBase = (char *)_env->GetPrimitiveArrayCritical(_sizeArray, (jboolean *) 0);
1667dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer        size = (GLint *) (_sizeBase + _sizeBufferOffset);
1668dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    }
1669dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    if (type == NULL) {
1670dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer        char * _typeBase = (char *)_env->GetPrimitiveArrayCritical(_typeArray, (jboolean *) 0);
1671dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer        type = (GLenum *) (_typeBase + _typeBufferOffset);
1672dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    }
1673dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    glGetActiveAttrib(
1674dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer        (GLuint)program,
1675dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer        (GLuint)index,
1676dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer        (GLsizei)len,
1677dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer        NULL,
1678dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer        (GLint *)size,
1679dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer        (GLenum *)type,
1680dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer        (char *)buf
1681dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    );
1682dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer
1683dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    if (_typeArray) {
1684dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer        releasePointer(_env, _typeArray, type, JNI_TRUE);
1685dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    }
1686dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    if (_sizeArray) {
1687dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer        releasePointer(_env, _sizeArray, size, JNI_TRUE);
1688dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    }
1689dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    result = _env->NewStringUTF(buf);
1690dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    if (buf) {
1691dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer        free(buf);
1692dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    }
1693dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    return result;
1694dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer}
1695560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glGetActiveUniform ( GLuint program, GLuint index, GLsizei bufsize, GLsizei *length, GLint *size, GLenum *type, char *name ) */
1696560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
1697560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glGetActiveUniform__III_3II_3II_3II_3BI
1698560814f6b11abe83ff0c4ed18cac015c276b3181Jack 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) {
1699560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _exception = 0;
17002545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    const char * _exceptionType;
17012545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    const char * _exceptionMessage;
1702560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLsizei *length_base = (GLsizei *) 0;
1703560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _lengthRemaining;
1704560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLsizei *length = (GLsizei *) 0;
1705560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLint *size_base = (GLint *) 0;
1706560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _sizeRemaining;
1707560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLint *size = (GLint *) 0;
1708560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLenum *type_base = (GLenum *) 0;
1709560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _typeRemaining;
1710560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLenum *type = (GLenum *) 0;
1711560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    char *name_base = (char *) 0;
1712560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _nameRemaining;
1713560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    char *name = (char *) 0;
1714560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
1715560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (!length_ref) {
1716560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _exception = 1;
17172545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
17182545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "length == null";
1719560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
1720560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
1721560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (lengthOffset < 0) {
1722560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _exception = 1;
17232545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
17242545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "lengthOffset < 0";
1725560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
1726560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
1727560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    _lengthRemaining = _env->GetArrayLength(length_ref) - lengthOffset;
1728560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    length_base = (GLsizei *)
1729560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _env->GetPrimitiveArrayCritical(length_ref, (jboolean *)0);
1730560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    length = length_base + lengthOffset;
1731560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
1732560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (!size_ref) {
1733560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _exception = 1;
17342545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
17352545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "size == null";
1736560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
1737560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
1738560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (sizeOffset < 0) {
1739560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _exception = 1;
17402545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
17412545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "sizeOffset < 0";
1742560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
1743560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
1744560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    _sizeRemaining = _env->GetArrayLength(size_ref) - sizeOffset;
1745560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    size_base = (GLint *)
1746560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _env->GetPrimitiveArrayCritical(size_ref, (jboolean *)0);
1747560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    size = size_base + sizeOffset;
1748560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
1749560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (!type_ref) {
1750560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _exception = 1;
17512545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
17522545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "type == null";
1753560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
1754560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
1755560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (typeOffset < 0) {
1756560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _exception = 1;
17572545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
17582545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "typeOffset < 0";
1759560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
1760560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
1761560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    _typeRemaining = _env->GetArrayLength(type_ref) - typeOffset;
1762560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    type_base = (GLenum *)
1763560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _env->GetPrimitiveArrayCritical(type_ref, (jboolean *)0);
1764560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    type = type_base + typeOffset;
1765560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
1766560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (!name_ref) {
1767560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _exception = 1;
17682545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
17692545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "name == null";
1770560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
1771560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
1772560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (nameOffset < 0) {
1773560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _exception = 1;
17742545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
17752545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "nameOffset < 0";
1776560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
1777560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
1778560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    _nameRemaining = _env->GetArrayLength(name_ref) - nameOffset;
1779560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    name_base = (char *)
1780560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _env->GetPrimitiveArrayCritical(name_ref, (jboolean *)0);
1781560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    name = name_base + nameOffset;
1782560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
1783560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glGetActiveUniform(
1784560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLuint)program,
1785560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLuint)index,
1786560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLsizei)bufsize,
1787560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLsizei *)length,
1788560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLint *)size,
1789560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLenum *)type,
1790560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (char *)name
1791560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
1792560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
1793560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichexit:
1794560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (name_base) {
1795560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _env->ReleasePrimitiveArrayCritical(name_ref, name_base,
1796560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich            _exception ? JNI_ABORT: 0);
1797560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
1798560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (type_base) {
1799560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _env->ReleasePrimitiveArrayCritical(type_ref, type_base,
1800560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich            _exception ? JNI_ABORT: 0);
1801560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
1802560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (size_base) {
1803560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _env->ReleasePrimitiveArrayCritical(size_ref, size_base,
1804560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich            _exception ? JNI_ABORT: 0);
1805560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
1806560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (length_base) {
1807560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _env->ReleasePrimitiveArrayCritical(length_ref, length_base,
1808560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich            _exception ? JNI_ABORT: 0);
1809560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
18102545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    if (_exception) {
18112545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        jniThrowException(_env, _exceptionType, _exceptionMessage);
18122545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    }
1813560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
1814560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
1815560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glGetActiveUniform ( GLuint program, GLuint index, GLsizei bufsize, GLsizei *length, GLint *size, GLenum *type, char *name ) */
1816560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
1817560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glGetActiveUniform__IIILjava_nio_IntBuffer_2Ljava_nio_IntBuffer_2Ljava_nio_IntBuffer_2B
1818560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint program, jint index, jint bufsize, jobject length_buf, jobject size_buf, jobject type_buf, jbyte name) {
1819560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jarray _lengthArray = (jarray) 0;
182017045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    jint _lengthBufferOffset = (jint) 0;
1821560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jarray _sizeArray = (jarray) 0;
182217045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    jint _sizeBufferOffset = (jint) 0;
1823560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jarray _typeArray = (jarray) 0;
182417045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    jint _typeBufferOffset = (jint) 0;
1825560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _lengthRemaining;
1826560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLsizei *length = (GLsizei *) 0;
1827560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _sizeRemaining;
1828560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLint *size = (GLint *) 0;
1829560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _typeRemaining;
1830560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLenum *type = (GLenum *) 0;
1831560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
183217045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    length = (GLsizei *)getPointer(_env, length_buf, &_lengthArray, &_lengthRemaining, &_lengthBufferOffset);
183317045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    size = (GLint *)getPointer(_env, size_buf, &_sizeArray, &_sizeRemaining, &_sizeBufferOffset);
183417045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    type = (GLenum *)getPointer(_env, type_buf, &_typeArray, &_typeRemaining, &_typeBufferOffset);
183517045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    if (length == NULL) {
183617045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        char * _lengthBase = (char *)_env->GetPrimitiveArrayCritical(_lengthArray, (jboolean *) 0);
183717045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        length = (GLsizei *) (_lengthBase + _lengthBufferOffset);
183817045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    }
183917045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    if (size == NULL) {
184017045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        char * _sizeBase = (char *)_env->GetPrimitiveArrayCritical(_sizeArray, (jboolean *) 0);
184117045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        size = (GLint *) (_sizeBase + _sizeBufferOffset);
184217045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    }
184317045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    if (type == NULL) {
184417045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        char * _typeBase = (char *)_env->GetPrimitiveArrayCritical(_typeArray, (jboolean *) 0);
184517045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        type = (GLenum *) (_typeBase + _typeBufferOffset);
184617045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    }
1847560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glGetActiveUniform(
1848560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLuint)program,
1849560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLuint)index,
1850560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLsizei)bufsize,
1851560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLsizei *)length,
1852560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLint *)size,
1853560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLenum *)type,
1854560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (char *)name
1855560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
185617045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    if (_typeArray) {
185717045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        releasePointer(_env, _typeArray, type, JNI_TRUE);
1858560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
1859560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (_sizeArray) {
18602545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        releasePointer(_env, _sizeArray, size, JNI_TRUE);
1861560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
186217045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    if (_lengthArray) {
186317045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        releasePointer(_env, _lengthArray, length, JNI_TRUE);
1864560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
1865560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
1866560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
1867dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer/* void glGetActiveUniform ( GLuint program, GLuint index, GLsizei bufsize, GLsizei *length, GLint *size, GLenum *type, char *name ) */
1868dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshoferstatic jstring
1869dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshoferandroid_glGetActiveUniform1
1870dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer  (JNIEnv *_env, jobject _this, jint program, jint index, jintArray size_ref, jint sizeOffset, jintArray type_ref, jint typeOffset) {
1871dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    jint _exception = 0;
1872dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    const char * _exceptionType;
1873dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    const char * _exceptionMessage;
1874dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer
1875dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    GLint *size_base = (GLint *) 0;
1876dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    jint _sizeRemaining;
1877dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    GLint *size = (GLint *) 0;
1878dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer
1879dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    GLenum *type_base = (GLenum *) 0;
1880dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    jint _typeRemaining;
1881dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    GLenum *type = (GLenum *) 0;
1882dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer
1883dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    jstring result = 0;
1884dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer
1885dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    GLint len = 0;
1886dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    glGetProgramiv((GLuint)program, GL_ACTIVE_UNIFORM_MAX_LENGTH, &len);
1887dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    if (!len) {
1888dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer        return _env->NewStringUTF("");
1889dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    }
1890dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    char* buf = (char*) malloc(len);
1891dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer
1892dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    if (buf == NULL) {
1893dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer        jniThrowException(_env, "java/lang/IllegalArgumentException", "out of memory");
1894dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer        return NULL;
1895dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    }
1896dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer
1897dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    if (!size_ref) {
1898dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer        _exception = 1;
1899dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
1900dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer        _exceptionMessage = "size == null";
1901dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer        goto exit;
1902dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    }
1903dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    if (sizeOffset < 0) {
1904dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer        _exception = 1;
1905dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
1906dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer        _exceptionMessage = "sizeOffset < 0";
1907dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer        goto exit;
1908dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    }
1909dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    _sizeRemaining = _env->GetArrayLength(size_ref) - sizeOffset;
1910dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    size_base = (GLint *)
1911dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer        _env->GetPrimitiveArrayCritical(size_ref, (jboolean *)0);
1912dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    size = size_base + sizeOffset;
1913dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer
1914dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    if (!type_ref) {
1915dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer        _exception = 1;
1916dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
1917dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer        _exceptionMessage = "type == null";
1918dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer        goto exit;
1919dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    }
1920dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    if (typeOffset < 0) {
1921dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer        _exception = 1;
1922dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
1923dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer        _exceptionMessage = "typeOffset < 0";
1924dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer        goto exit;
1925dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    }
1926dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    _typeRemaining = _env->GetArrayLength(type_ref) - typeOffset;
1927dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    type_base = (GLenum *)
1928dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer        _env->GetPrimitiveArrayCritical(type_ref, (jboolean *)0);
1929dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    type = type_base + typeOffset;
1930dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer
1931dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    glGetActiveUniform(
1932dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer        (GLuint)program,
1933dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer        (GLuint)index,
1934dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer        (GLsizei)len,
1935dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer        NULL,
1936dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer        (GLint *)size,
1937dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer        (GLenum *)type,
1938dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer        (char *)buf
1939dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    );
1940dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer
1941dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshoferexit:
1942dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    if (type_base) {
1943dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer        _env->ReleasePrimitiveArrayCritical(type_ref, type_base,
1944dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer            _exception ? JNI_ABORT: 0);
1945dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    }
1946dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    if (size_base) {
1947dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer        _env->ReleasePrimitiveArrayCritical(size_ref, size_base,
1948dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer            _exception ? JNI_ABORT: 0);
1949dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    }
1950dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    if (_exception != 1) {
1951dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer        result = _env->NewStringUTF(buf);
1952dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    }
1953dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    if (buf) {
1954dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer        free(buf);
1955dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    }
1956dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    if (_exception) {
1957dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer        jniThrowException(_env, _exceptionType, _exceptionMessage);
1958dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    }
1959dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    if (result == 0) {
1960dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer        result = _env->NewStringUTF("");
1961dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    }
1962dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    return result;
1963dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer}
1964dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer
1965dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer/* void glGetActiveUniform ( GLuint program, GLuint index, GLsizei bufsize, GLsizei *length, GLint *size, GLenum *type, char *name ) */
1966dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshoferstatic jstring
1967dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshoferandroid_glGetActiveUniform2
1968dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer  (JNIEnv *_env, jobject _this, jint program, jint index, jobject size_buf, jobject type_buf) {
1969dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    jarray _sizeArray = (jarray) 0;
1970dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    jint _sizeBufferOffset = (jint) 0;
1971dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    jarray _typeArray = (jarray) 0;
1972dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    jint _typeBufferOffset = (jint) 0;
1973dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    jint _sizeRemaining;
1974dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    GLint *size = (GLint *) 0;
1975dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    jint _typeRemaining;
1976dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    GLenum *type = (GLenum *) 0;
1977dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer
1978dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    jstring result = 0;
1979dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    GLint len = 0;
1980dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    glGetProgramiv((GLuint)program, GL_ACTIVE_UNIFORM_MAX_LENGTH, &len);
1981dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    if (!len) {
1982dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer        return _env->NewStringUTF("");
1983dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    }
1984dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    char* buf = (char*) malloc(len);
1985dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer
1986dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    if (buf == NULL) {
1987dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer        jniThrowException(_env, "java/lang/IllegalArgumentException", "out of memory");
1988dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer        return NULL;
1989dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    }
1990dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer
1991dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    size = (GLint *)getPointer(_env, size_buf, &_sizeArray, &_sizeRemaining, &_sizeBufferOffset);
1992dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    type = (GLenum *)getPointer(_env, type_buf, &_typeArray, &_typeRemaining, &_typeBufferOffset);
1993dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer
1994dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    if (size == NULL) {
1995dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer        char * _sizeBase = (char *)_env->GetPrimitiveArrayCritical(_sizeArray, (jboolean *) 0);
1996dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer        size = (GLint *) (_sizeBase + _sizeBufferOffset);
1997dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    }
1998dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    if (type == NULL) {
1999dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer        char * _typeBase = (char *)_env->GetPrimitiveArrayCritical(_typeArray, (jboolean *) 0);
2000dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer        type = (GLenum *) (_typeBase + _typeBufferOffset);
2001dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    }
2002dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    glGetActiveUniform(
2003dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer        (GLuint)program,
2004dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer        (GLuint)index,
2005dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer        len,
2006dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer        NULL,
2007dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer        (GLint *)size,
2008dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer        (GLenum *)type,
2009dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer        (char *)buf
2010dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    );
2011dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer
2012dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    if (_typeArray) {
2013dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer        releasePointer(_env, _typeArray, type, JNI_TRUE);
2014dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    }
2015dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    if (_sizeArray) {
2016dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer        releasePointer(_env, _sizeArray, size, JNI_TRUE);
2017dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    }
2018dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    result = _env->NewStringUTF(buf);
2019dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    if (buf) {
2020dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer        free(buf);
2021dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    }
2022dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    return result;
2023dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer}
2024560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glGetAttachedShaders ( GLuint program, GLsizei maxcount, GLsizei *count, GLuint *shaders ) */
2025560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
2026560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glGetAttachedShaders__II_3II_3II
2027560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint program, jint maxcount, jintArray count_ref, jint countOffset, jintArray shaders_ref, jint shadersOffset) {
2028560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _exception = 0;
20292545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    const char * _exceptionType;
20302545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    const char * _exceptionMessage;
2031560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLsizei *count_base = (GLsizei *) 0;
2032560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _countRemaining;
2033560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLsizei *count = (GLsizei *) 0;
2034560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLuint *shaders_base = (GLuint *) 0;
2035560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _shadersRemaining;
2036560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLuint *shaders = (GLuint *) 0;
2037560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
2038560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (!count_ref) {
2039560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _exception = 1;
20402545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
20412545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "count == null";
2042560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
2043560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
2044560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (countOffset < 0) {
2045560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _exception = 1;
20462545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
20472545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "countOffset < 0";
2048560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
2049560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
2050560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    _countRemaining = _env->GetArrayLength(count_ref) - countOffset;
2051560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    count_base = (GLsizei *)
2052560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _env->GetPrimitiveArrayCritical(count_ref, (jboolean *)0);
2053560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    count = count_base + countOffset;
2054560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
2055560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (!shaders_ref) {
2056560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _exception = 1;
20572545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
20582545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "shaders == null";
2059560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
2060560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
2061560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (shadersOffset < 0) {
2062560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _exception = 1;
20632545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
20642545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "shadersOffset < 0";
2065560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
2066560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
2067560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    _shadersRemaining = _env->GetArrayLength(shaders_ref) - shadersOffset;
2068560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    shaders_base = (GLuint *)
2069560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _env->GetPrimitiveArrayCritical(shaders_ref, (jboolean *)0);
2070560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    shaders = shaders_base + shadersOffset;
2071560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
2072560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glGetAttachedShaders(
2073560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLuint)program,
2074560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLsizei)maxcount,
2075560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLsizei *)count,
2076560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLuint *)shaders
2077560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
2078560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
2079560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichexit:
2080560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (shaders_base) {
2081560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _env->ReleasePrimitiveArrayCritical(shaders_ref, shaders_base,
2082560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich            _exception ? JNI_ABORT: 0);
2083560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
2084560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (count_base) {
2085560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _env->ReleasePrimitiveArrayCritical(count_ref, count_base,
2086560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich            _exception ? JNI_ABORT: 0);
2087560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
20882545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    if (_exception) {
20892545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        jniThrowException(_env, _exceptionType, _exceptionMessage);
20902545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    }
2091560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
2092560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
2093560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glGetAttachedShaders ( GLuint program, GLsizei maxcount, GLsizei *count, GLuint *shaders ) */
2094560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
2095560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glGetAttachedShaders__IILjava_nio_IntBuffer_2Ljava_nio_IntBuffer_2
2096560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint program, jint maxcount, jobject count_buf, jobject shaders_buf) {
2097560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jarray _countArray = (jarray) 0;
209817045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    jint _countBufferOffset = (jint) 0;
2099560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jarray _shadersArray = (jarray) 0;
210017045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    jint _shadersBufferOffset = (jint) 0;
2101560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _countRemaining;
2102560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLsizei *count = (GLsizei *) 0;
2103560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _shadersRemaining;
2104560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLuint *shaders = (GLuint *) 0;
2105560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
210617045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    count = (GLsizei *)getPointer(_env, count_buf, &_countArray, &_countRemaining, &_countBufferOffset);
210717045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    shaders = (GLuint *)getPointer(_env, shaders_buf, &_shadersArray, &_shadersRemaining, &_shadersBufferOffset);
210817045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    if (count == NULL) {
210917045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        char * _countBase = (char *)_env->GetPrimitiveArrayCritical(_countArray, (jboolean *) 0);
211017045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        count = (GLsizei *) (_countBase + _countBufferOffset);
211117045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    }
211217045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    if (shaders == NULL) {
211317045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        char * _shadersBase = (char *)_env->GetPrimitiveArrayCritical(_shadersArray, (jboolean *) 0);
211417045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        shaders = (GLuint *) (_shadersBase + _shadersBufferOffset);
211517045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    }
2116560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glGetAttachedShaders(
2117560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLuint)program,
2118560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLsizei)maxcount,
2119560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLsizei *)count,
2120560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLuint *)shaders
2121560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
2122560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (_shadersArray) {
212317045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        releasePointer(_env, _shadersArray, shaders, JNI_TRUE);
212417045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    }
212517045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    if (_countArray) {
212617045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        releasePointer(_env, _countArray, count, JNI_TRUE);
2127560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
2128560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
2129560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
2130560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* int glGetAttribLocation ( GLuint program, const char *name ) */
2131560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic jint
2132560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glGetAttribLocation__ILjava_lang_String_2
2133560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint program, jstring name) {
21342545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    jint _exception = 0;
21352545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    const char * _exceptionType;
21362545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    const char * _exceptionMessage;
2137560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    int _returnValue = 0;
2138560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    const char* _nativename = 0;
2139560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
2140560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (!name) {
21412545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
21422545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "name == null";
2143560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
2144560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
2145560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    _nativename = _env->GetStringUTFChars(name, 0);
2146560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
2147560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    _returnValue = glGetAttribLocation(
2148560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLuint)program,
2149560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (char *)_nativename
2150560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
2151560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
2152560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichexit:
2153560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (_nativename) {
2154560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _env->ReleaseStringUTFChars(name, _nativename);
2155560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
2156560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
21572545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    if (_exception) {
21582545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        jniThrowException(_env, _exceptionType, _exceptionMessage);
21592545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    }
2160560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    return _returnValue;
2161560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
2162560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
2163560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glGetBooleanv ( GLenum pname, GLboolean *params ) */
2164560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
2165560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glGetBooleanv__I_3ZI
2166560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint pname, jbooleanArray params_ref, jint offset) {
2167560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _exception = 0;
21682545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    const char * _exceptionType;
21692545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    const char * _exceptionMessage;
2170560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLboolean *params_base = (GLboolean *) 0;
2171560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _remaining;
2172560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLboolean *params = (GLboolean *) 0;
2173560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
2174560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (!params_ref) {
2175560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _exception = 1;
21762545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
21772545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "params == null";
2178560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
2179560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
2180560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (offset < 0) {
2181560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _exception = 1;
21822545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
21832545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "offset < 0";
2184560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
2185560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
2186560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    _remaining = _env->GetArrayLength(params_ref) - offset;
2187560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    params_base = (GLboolean *)
2188560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _env->GetPrimitiveArrayCritical(params_ref, (jboolean *)0);
2189560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    params = params_base + offset;
2190560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
2191560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glGetBooleanv(
2192560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLenum)pname,
2193560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLboolean *)params
2194560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
2195560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
2196560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichexit:
2197560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (params_base) {
2198560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _env->ReleasePrimitiveArrayCritical(params_ref, params_base,
2199560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich            _exception ? JNI_ABORT: 0);
2200560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
22012545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    if (_exception) {
22022545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        jniThrowException(_env, _exceptionType, _exceptionMessage);
22032545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    }
2204560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
2205560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
2206560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glGetBooleanv ( GLenum pname, GLboolean *params ) */
2207560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
2208560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glGetBooleanv__ILjava_nio_IntBuffer_2
2209560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint pname, jobject params_buf) {
2210560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jarray _array = (jarray) 0;
221117045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    jint _bufferOffset = (jint) 0;
2212560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _remaining;
2213560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLboolean *params = (GLboolean *) 0;
2214560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
221517045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    params = (GLboolean *)getPointer(_env, params_buf, &_array, &_remaining, &_bufferOffset);
221617045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    if (params == NULL) {
221717045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        char * _paramsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
221817045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        params = (GLboolean *) (_paramsBase + _bufferOffset);
221917045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    }
2220560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glGetBooleanv(
2221560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLenum)pname,
2222560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLboolean *)params
2223560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
2224560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (_array) {
22252545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        releasePointer(_env, _array, params, JNI_TRUE);
2226560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
2227560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
2228560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
2229560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glGetBufferParameteriv ( GLenum target, GLenum pname, GLint *params ) */
2230560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
2231560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glGetBufferParameteriv__II_3II
2232560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint target, jint pname, jintArray params_ref, jint offset) {
223373108675c944ab4ee89631dced23566b12341b66Jack Palevich    jint _exception = 0;
22342545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    const char * _exceptionType;
22352545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    const char * _exceptionMessage;
223673108675c944ab4ee89631dced23566b12341b66Jack Palevich    GLint *params_base = (GLint *) 0;
223773108675c944ab4ee89631dced23566b12341b66Jack Palevich    jint _remaining;
223873108675c944ab4ee89631dced23566b12341b66Jack Palevich    GLint *params = (GLint *) 0;
223973108675c944ab4ee89631dced23566b12341b66Jack Palevich
224073108675c944ab4ee89631dced23566b12341b66Jack Palevich    if (!params_ref) {
224173108675c944ab4ee89631dced23566b12341b66Jack Palevich        _exception = 1;
22422545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
22432545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "params == null";
224473108675c944ab4ee89631dced23566b12341b66Jack Palevich        goto exit;
224573108675c944ab4ee89631dced23566b12341b66Jack Palevich    }
224673108675c944ab4ee89631dced23566b12341b66Jack Palevich    if (offset < 0) {
224773108675c944ab4ee89631dced23566b12341b66Jack Palevich        _exception = 1;
22482545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
22492545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "offset < 0";
225073108675c944ab4ee89631dced23566b12341b66Jack Palevich        goto exit;
225173108675c944ab4ee89631dced23566b12341b66Jack Palevich    }
225273108675c944ab4ee89631dced23566b12341b66Jack Palevich    _remaining = _env->GetArrayLength(params_ref) - offset;
225373108675c944ab4ee89631dced23566b12341b66Jack Palevich    if (_remaining < 1) {
225473108675c944ab4ee89631dced23566b12341b66Jack Palevich        _exception = 1;
22552545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
22562545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "length - offset < 1 < needed";
225773108675c944ab4ee89631dced23566b12341b66Jack Palevich        goto exit;
225873108675c944ab4ee89631dced23566b12341b66Jack Palevich    }
225973108675c944ab4ee89631dced23566b12341b66Jack Palevich    params_base = (GLint *)
226073108675c944ab4ee89631dced23566b12341b66Jack Palevich        _env->GetPrimitiveArrayCritical(params_ref, (jboolean *)0);
226173108675c944ab4ee89631dced23566b12341b66Jack Palevich    params = params_base + offset;
226273108675c944ab4ee89631dced23566b12341b66Jack Palevich
226373108675c944ab4ee89631dced23566b12341b66Jack Palevich    glGetBufferParameteriv(
226473108675c944ab4ee89631dced23566b12341b66Jack Palevich        (GLenum)target,
226573108675c944ab4ee89631dced23566b12341b66Jack Palevich        (GLenum)pname,
226673108675c944ab4ee89631dced23566b12341b66Jack Palevich        (GLint *)params
226773108675c944ab4ee89631dced23566b12341b66Jack Palevich    );
226873108675c944ab4ee89631dced23566b12341b66Jack Palevich
226973108675c944ab4ee89631dced23566b12341b66Jack Palevichexit:
227073108675c944ab4ee89631dced23566b12341b66Jack Palevich    if (params_base) {
227173108675c944ab4ee89631dced23566b12341b66Jack Palevich        _env->ReleasePrimitiveArrayCritical(params_ref, params_base,
227273108675c944ab4ee89631dced23566b12341b66Jack Palevich            _exception ? JNI_ABORT: 0);
227373108675c944ab4ee89631dced23566b12341b66Jack Palevich    }
22742545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    if (_exception) {
22752545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        jniThrowException(_env, _exceptionType, _exceptionMessage);
22762545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    }
2277560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
2278560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
2279560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glGetBufferParameteriv ( GLenum target, GLenum pname, GLint *params ) */
2280560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
2281560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glGetBufferParameteriv__IILjava_nio_IntBuffer_2
2282560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint target, jint pname, jobject params_buf) {
228373108675c944ab4ee89631dced23566b12341b66Jack Palevich    jint _exception = 0;
22842545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    const char * _exceptionType;
22852545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    const char * _exceptionMessage;
228673108675c944ab4ee89631dced23566b12341b66Jack Palevich    jarray _array = (jarray) 0;
228717045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    jint _bufferOffset = (jint) 0;
228873108675c944ab4ee89631dced23566b12341b66Jack Palevich    jint _remaining;
228973108675c944ab4ee89631dced23566b12341b66Jack Palevich    GLint *params = (GLint *) 0;
229073108675c944ab4ee89631dced23566b12341b66Jack Palevich
229117045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    params = (GLint *)getPointer(_env, params_buf, &_array, &_remaining, &_bufferOffset);
229273108675c944ab4ee89631dced23566b12341b66Jack Palevich    if (_remaining < 1) {
229373108675c944ab4ee89631dced23566b12341b66Jack Palevich        _exception = 1;
22942545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
22952545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "remaining() < 1 < needed";
229673108675c944ab4ee89631dced23566b12341b66Jack Palevich        goto exit;
229773108675c944ab4ee89631dced23566b12341b66Jack Palevich    }
229817045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    if (params == NULL) {
229917045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        char * _paramsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
230017045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        params = (GLint *) (_paramsBase + _bufferOffset);
230117045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    }
230273108675c944ab4ee89631dced23566b12341b66Jack Palevich    glGetBufferParameteriv(
230373108675c944ab4ee89631dced23566b12341b66Jack Palevich        (GLenum)target,
230473108675c944ab4ee89631dced23566b12341b66Jack Palevich        (GLenum)pname,
230573108675c944ab4ee89631dced23566b12341b66Jack Palevich        (GLint *)params
230673108675c944ab4ee89631dced23566b12341b66Jack Palevich    );
230773108675c944ab4ee89631dced23566b12341b66Jack Palevich
230873108675c944ab4ee89631dced23566b12341b66Jack Palevichexit:
230973108675c944ab4ee89631dced23566b12341b66Jack Palevich    if (_array) {
231073108675c944ab4ee89631dced23566b12341b66Jack Palevich        releasePointer(_env, _array, params, _exception ? JNI_FALSE : JNI_TRUE);
231173108675c944ab4ee89631dced23566b12341b66Jack Palevich    }
23122545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    if (_exception) {
23132545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        jniThrowException(_env, _exceptionType, _exceptionMessage);
23142545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    }
2315560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
2316560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
2317560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* GLenum glGetError ( void ) */
2318560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic jint
2319560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glGetError__
2320560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this) {
2321560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLenum _returnValue;
2322560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    _returnValue = glGetError();
2323560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    return _returnValue;
2324560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
2325560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
2326560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glGetFloatv ( GLenum pname, GLfloat *params ) */
2327560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
2328560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glGetFloatv__I_3FI
2329560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint pname, jfloatArray params_ref, jint offset) {
2330560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _exception = 0;
23312545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    const char * _exceptionType;
23322545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    const char * _exceptionMessage;
2333560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLfloat *params_base = (GLfloat *) 0;
2334560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _remaining;
2335560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLfloat *params = (GLfloat *) 0;
2336560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
2337560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (!params_ref) {
2338560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _exception = 1;
23392545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
23402545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "params == null";
2341560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
2342560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
2343560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (offset < 0) {
2344560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _exception = 1;
23452545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
23462545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "offset < 0";
2347560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
2348560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
2349560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    _remaining = _env->GetArrayLength(params_ref) - offset;
2350560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    params_base = (GLfloat *)
2351560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _env->GetPrimitiveArrayCritical(params_ref, (jboolean *)0);
2352560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    params = params_base + offset;
2353560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
2354560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glGetFloatv(
2355560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLenum)pname,
2356560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLfloat *)params
2357560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
2358560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
2359560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichexit:
2360560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (params_base) {
2361560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _env->ReleasePrimitiveArrayCritical(params_ref, params_base,
2362560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich            _exception ? JNI_ABORT: 0);
2363560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
23642545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    if (_exception) {
23652545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        jniThrowException(_env, _exceptionType, _exceptionMessage);
23662545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    }
2367560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
2368560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
2369560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glGetFloatv ( GLenum pname, GLfloat *params ) */
2370560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
2371560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glGetFloatv__ILjava_nio_FloatBuffer_2
2372560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint pname, jobject params_buf) {
2373560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jarray _array = (jarray) 0;
237417045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    jint _bufferOffset = (jint) 0;
2375560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _remaining;
2376560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLfloat *params = (GLfloat *) 0;
2377560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
237817045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    params = (GLfloat *)getPointer(_env, params_buf, &_array, &_remaining, &_bufferOffset);
237917045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    if (params == NULL) {
238017045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        char * _paramsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
238117045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        params = (GLfloat *) (_paramsBase + _bufferOffset);
238217045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    }
2383560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glGetFloatv(
2384560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLenum)pname,
2385560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLfloat *)params
2386560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
2387560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (_array) {
23882545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        releasePointer(_env, _array, params, JNI_TRUE);
2389560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
2390560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
2391560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
2392560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glGetFramebufferAttachmentParameteriv ( GLenum target, GLenum attachment, GLenum pname, GLint *params ) */
2393560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
2394560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glGetFramebufferAttachmentParameteriv__III_3II
2395560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint target, jint attachment, jint pname, jintArray params_ref, jint offset) {
2396560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _exception = 0;
23972545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    const char * _exceptionType;
23982545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    const char * _exceptionMessage;
2399560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLint *params_base = (GLint *) 0;
2400560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _remaining;
2401560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLint *params = (GLint *) 0;
2402560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
2403560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (!params_ref) {
2404560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _exception = 1;
24052545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
24062545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "params == null";
2407560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
2408560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
2409560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (offset < 0) {
2410560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _exception = 1;
24112545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
24122545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "offset < 0";
2413560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
2414560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
2415560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    _remaining = _env->GetArrayLength(params_ref) - offset;
2416560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    params_base = (GLint *)
2417560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _env->GetPrimitiveArrayCritical(params_ref, (jboolean *)0);
2418560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    params = params_base + offset;
2419560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
2420560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glGetFramebufferAttachmentParameteriv(
2421560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLenum)target,
2422560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLenum)attachment,
2423560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLenum)pname,
2424560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLint *)params
2425560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
2426560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
2427560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichexit:
2428560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (params_base) {
2429560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _env->ReleasePrimitiveArrayCritical(params_ref, params_base,
2430560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich            _exception ? JNI_ABORT: 0);
2431560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
24322545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    if (_exception) {
24332545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        jniThrowException(_env, _exceptionType, _exceptionMessage);
24342545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    }
2435560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
2436560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
2437560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glGetFramebufferAttachmentParameteriv ( GLenum target, GLenum attachment, GLenum pname, GLint *params ) */
2438560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
2439560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glGetFramebufferAttachmentParameteriv__IIILjava_nio_IntBuffer_2
2440560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint target, jint attachment, jint pname, jobject params_buf) {
2441560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jarray _array = (jarray) 0;
244217045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    jint _bufferOffset = (jint) 0;
2443560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _remaining;
2444560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLint *params = (GLint *) 0;
2445560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
244617045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    params = (GLint *)getPointer(_env, params_buf, &_array, &_remaining, &_bufferOffset);
244717045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    if (params == NULL) {
244817045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        char * _paramsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
244917045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        params = (GLint *) (_paramsBase + _bufferOffset);
245017045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    }
2451560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glGetFramebufferAttachmentParameteriv(
2452560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLenum)target,
2453560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLenum)attachment,
2454560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLenum)pname,
2455560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLint *)params
2456560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
2457560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (_array) {
24582545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        releasePointer(_env, _array, params, JNI_TRUE);
2459560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
2460560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
2461560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
2462560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glGetIntegerv ( GLenum pname, GLint *params ) */
2463560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
2464560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glGetIntegerv__I_3II
2465560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint pname, jintArray params_ref, jint offset) {
2466560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _exception = 0;
24672545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    const char * _exceptionType;
24682545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    const char * _exceptionMessage;
2469560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLint *params_base = (GLint *) 0;
2470560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _remaining;
2471560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLint *params = (GLint *) 0;
2472560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
2473560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (!params_ref) {
2474560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _exception = 1;
24752545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
24762545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "params == null";
2477560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
2478560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
2479560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (offset < 0) {
2480560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _exception = 1;
24812545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
24822545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "offset < 0";
2483560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
2484560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
2485560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    _remaining = _env->GetArrayLength(params_ref) - offset;
2486560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    int _needed;
2487560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    switch (pname) {
2488560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_ALPHA_BITS)
2489560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_ALPHA_BITS:
2490560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_ALPHA_BITS)
2491560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_ALPHA_TEST_FUNC)
2492560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_ALPHA_TEST_FUNC:
2493560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_ALPHA_TEST_FUNC)
2494560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_ALPHA_TEST_REF)
2495560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_ALPHA_TEST_REF:
2496560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_ALPHA_TEST_REF)
2497560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_BLEND_DST)
2498560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_BLEND_DST:
2499560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_BLEND_DST)
2500560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_BLUE_BITS)
2501560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_BLUE_BITS:
2502560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_BLUE_BITS)
2503560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_COLOR_ARRAY_BUFFER_BINDING)
2504560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_COLOR_ARRAY_BUFFER_BINDING:
2505560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_COLOR_ARRAY_BUFFER_BINDING)
2506560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_COLOR_ARRAY_SIZE)
2507560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_COLOR_ARRAY_SIZE:
2508560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_COLOR_ARRAY_SIZE)
2509560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_COLOR_ARRAY_STRIDE)
2510560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_COLOR_ARRAY_STRIDE:
2511560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_COLOR_ARRAY_STRIDE)
2512560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_COLOR_ARRAY_TYPE)
2513560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_COLOR_ARRAY_TYPE:
2514560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_COLOR_ARRAY_TYPE)
2515560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_CULL_FACE)
2516560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_CULL_FACE:
2517560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_CULL_FACE)
2518560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_DEPTH_BITS)
2519560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_DEPTH_BITS:
2520560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_DEPTH_BITS)
2521560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_DEPTH_CLEAR_VALUE)
2522560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_DEPTH_CLEAR_VALUE:
2523560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_DEPTH_CLEAR_VALUE)
2524560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_DEPTH_FUNC)
2525560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_DEPTH_FUNC:
2526560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_DEPTH_FUNC)
2527560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_DEPTH_WRITEMASK)
2528560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_DEPTH_WRITEMASK:
2529560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_DEPTH_WRITEMASK)
2530560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_FOG_DENSITY)
2531560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_FOG_DENSITY:
2532560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_FOG_DENSITY)
2533560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_FOG_END)
2534560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_FOG_END:
2535560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_FOG_END)
2536560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_FOG_MODE)
2537560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_FOG_MODE:
2538560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_FOG_MODE)
2539560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_FOG_START)
2540560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_FOG_START:
2541560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_FOG_START)
2542560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_FRONT_FACE)
2543560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_FRONT_FACE:
2544560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_FRONT_FACE)
2545560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_GREEN_BITS)
2546560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_GREEN_BITS:
2547560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_GREEN_BITS)
2548560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_IMPLEMENTATION_COLOR_READ_FORMAT_OES)
2549560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_IMPLEMENTATION_COLOR_READ_FORMAT_OES:
2550560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_IMPLEMENTATION_COLOR_READ_FORMAT_OES)
2551560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_IMPLEMENTATION_COLOR_READ_TYPE_OES)
2552560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_IMPLEMENTATION_COLOR_READ_TYPE_OES:
2553560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_IMPLEMENTATION_COLOR_READ_TYPE_OES)
2554560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_LIGHT_MODEL_COLOR_CONTROL)
2555560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_LIGHT_MODEL_COLOR_CONTROL:
2556560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_LIGHT_MODEL_COLOR_CONTROL)
2557560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_LIGHT_MODEL_LOCAL_VIEWER)
2558560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_LIGHT_MODEL_LOCAL_VIEWER:
2559560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_LIGHT_MODEL_LOCAL_VIEWER)
2560560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_LIGHT_MODEL_TWO_SIDE)
2561560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_LIGHT_MODEL_TWO_SIDE:
2562560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_LIGHT_MODEL_TWO_SIDE)
2563560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_LINE_SMOOTH_HINT)
2564560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_LINE_SMOOTH_HINT:
2565560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_LINE_SMOOTH_HINT)
2566560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_LINE_WIDTH)
2567560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_LINE_WIDTH:
2568560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_LINE_WIDTH)
2569560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_LOGIC_OP_MODE)
2570560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_LOGIC_OP_MODE:
2571560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_LOGIC_OP_MODE)
2572560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_MATRIX_INDEX_ARRAY_BUFFER_BINDING_OES)
2573560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_MATRIX_INDEX_ARRAY_BUFFER_BINDING_OES:
2574560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_MATRIX_INDEX_ARRAY_BUFFER_BINDING_OES)
2575560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_MATRIX_INDEX_ARRAY_SIZE_OES)
2576560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_MATRIX_INDEX_ARRAY_SIZE_OES:
2577560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_MATRIX_INDEX_ARRAY_SIZE_OES)
2578560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_MATRIX_INDEX_ARRAY_STRIDE_OES)
2579560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_MATRIX_INDEX_ARRAY_STRIDE_OES:
2580560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_MATRIX_INDEX_ARRAY_STRIDE_OES)
2581560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_MATRIX_INDEX_ARRAY_TYPE_OES)
2582560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_MATRIX_INDEX_ARRAY_TYPE_OES:
2583560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_MATRIX_INDEX_ARRAY_TYPE_OES)
2584560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_MATRIX_MODE)
2585560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_MATRIX_MODE:
2586560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_MATRIX_MODE)
2587560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_MAX_CLIP_PLANES)
2588560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_MAX_CLIP_PLANES:
2589560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_MAX_CLIP_PLANES)
2590560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_MAX_ELEMENTS_INDICES)
2591560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_MAX_ELEMENTS_INDICES:
2592560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_MAX_ELEMENTS_INDICES)
2593560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_MAX_ELEMENTS_VERTICES)
2594560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_MAX_ELEMENTS_VERTICES:
2595560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_MAX_ELEMENTS_VERTICES)
2596560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_MAX_LIGHTS)
2597560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_MAX_LIGHTS:
2598560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_MAX_LIGHTS)
2599560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_MAX_MODELVIEW_STACK_DEPTH)
2600560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_MAX_MODELVIEW_STACK_DEPTH:
2601560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_MAX_MODELVIEW_STACK_DEPTH)
2602560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_MAX_PALETTE_MATRICES_OES)
2603560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_MAX_PALETTE_MATRICES_OES:
2604560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_MAX_PALETTE_MATRICES_OES)
2605560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_MAX_PROJECTION_STACK_DEPTH)
2606560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_MAX_PROJECTION_STACK_DEPTH:
2607560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_MAX_PROJECTION_STACK_DEPTH)
2608560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_MAX_TEXTURE_SIZE)
2609560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_MAX_TEXTURE_SIZE:
2610560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_MAX_TEXTURE_SIZE)
2611560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_MAX_TEXTURE_STACK_DEPTH)
2612560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_MAX_TEXTURE_STACK_DEPTH:
2613560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_MAX_TEXTURE_STACK_DEPTH)
2614560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_MAX_TEXTURE_UNITS)
2615560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_MAX_TEXTURE_UNITS:
2616560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_MAX_TEXTURE_UNITS)
2617560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_MAX_VERTEX_UNITS_OES)
2618560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_MAX_VERTEX_UNITS_OES:
2619560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_MAX_VERTEX_UNITS_OES)
2620560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_MODELVIEW_STACK_DEPTH)
2621560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_MODELVIEW_STACK_DEPTH:
2622560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_MODELVIEW_STACK_DEPTH)
2623560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_NORMAL_ARRAY_BUFFER_BINDING)
2624560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_NORMAL_ARRAY_BUFFER_BINDING:
2625560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_NORMAL_ARRAY_BUFFER_BINDING)
2626560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_NORMAL_ARRAY_STRIDE)
2627560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_NORMAL_ARRAY_STRIDE:
2628560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_NORMAL_ARRAY_STRIDE)
2629560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_NORMAL_ARRAY_TYPE)
2630560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_NORMAL_ARRAY_TYPE:
2631560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_NORMAL_ARRAY_TYPE)
2632560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_NUM_COMPRESSED_TEXTURE_FORMATS)
2633560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_NUM_COMPRESSED_TEXTURE_FORMATS:
2634560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_NUM_COMPRESSED_TEXTURE_FORMATS)
2635560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_PACK_ALIGNMENT)
2636560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_PACK_ALIGNMENT:
2637560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_PACK_ALIGNMENT)
2638560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_PERSPECTIVE_CORRECTION_HINT)
2639560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_PERSPECTIVE_CORRECTION_HINT:
2640560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_PERSPECTIVE_CORRECTION_HINT)
2641560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_POINT_SIZE)
2642560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_POINT_SIZE:
2643560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_POINT_SIZE)
2644560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_POINT_SIZE_ARRAY_BUFFER_BINDING_OES)
2645560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_POINT_SIZE_ARRAY_BUFFER_BINDING_OES:
2646560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_POINT_SIZE_ARRAY_BUFFER_BINDING_OES)
2647560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_POINT_SIZE_ARRAY_STRIDE_OES)
2648560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_POINT_SIZE_ARRAY_STRIDE_OES:
2649560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_POINT_SIZE_ARRAY_STRIDE_OES)
2650560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_POINT_SIZE_ARRAY_TYPE_OES)
2651560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_POINT_SIZE_ARRAY_TYPE_OES:
2652560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_POINT_SIZE_ARRAY_TYPE_OES)
2653560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_POINT_SMOOTH_HINT)
2654560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_POINT_SMOOTH_HINT:
2655560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_POINT_SMOOTH_HINT)
2656560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_POLYGON_OFFSET_FACTOR)
2657560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_POLYGON_OFFSET_FACTOR:
2658560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_POLYGON_OFFSET_FACTOR)
2659560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_POLYGON_OFFSET_UNITS)
2660560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_POLYGON_OFFSET_UNITS:
2661560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_POLYGON_OFFSET_UNITS)
2662560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_PROJECTION_STACK_DEPTH)
2663560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_PROJECTION_STACK_DEPTH:
2664560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_PROJECTION_STACK_DEPTH)
2665560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_RED_BITS)
2666560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_RED_BITS:
2667560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_RED_BITS)
2668560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_SHADE_MODEL)
2669560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_SHADE_MODEL:
2670560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_SHADE_MODEL)
2671560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_STENCIL_BITS)
2672560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_STENCIL_BITS:
2673560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_STENCIL_BITS)
2674560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_STENCIL_CLEAR_VALUE)
2675560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_STENCIL_CLEAR_VALUE:
2676560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_STENCIL_CLEAR_VALUE)
2677560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_STENCIL_FAIL)
2678560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_STENCIL_FAIL:
2679560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_STENCIL_FAIL)
2680560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_STENCIL_FUNC)
2681560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_STENCIL_FUNC:
2682560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_STENCIL_FUNC)
2683560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_STENCIL_PASS_DEPTH_FAIL)
2684560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_STENCIL_PASS_DEPTH_FAIL:
2685560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_STENCIL_PASS_DEPTH_FAIL)
2686560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_STENCIL_PASS_DEPTH_PASS)
2687560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_STENCIL_PASS_DEPTH_PASS:
2688560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_STENCIL_PASS_DEPTH_PASS)
2689560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_STENCIL_REF)
2690560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_STENCIL_REF:
2691560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_STENCIL_REF)
2692560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_STENCIL_VALUE_MASK)
2693560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_STENCIL_VALUE_MASK:
2694560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_STENCIL_VALUE_MASK)
2695560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_STENCIL_WRITEMASK)
2696560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_STENCIL_WRITEMASK:
2697560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_STENCIL_WRITEMASK)
2698560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_SUBPIXEL_BITS)
2699560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_SUBPIXEL_BITS:
2700560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_SUBPIXEL_BITS)
2701560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_TEXTURE_BINDING_2D)
2702560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_TEXTURE_BINDING_2D:
2703560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_TEXTURE_BINDING_2D)
2704560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING)
2705560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING:
2706560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING)
2707560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_TEXTURE_COORD_ARRAY_SIZE)
2708560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_TEXTURE_COORD_ARRAY_SIZE:
2709560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_TEXTURE_COORD_ARRAY_SIZE)
2710560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_TEXTURE_COORD_ARRAY_STRIDE)
2711560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_TEXTURE_COORD_ARRAY_STRIDE:
2712560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_TEXTURE_COORD_ARRAY_STRIDE)
2713560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_TEXTURE_COORD_ARRAY_TYPE)
2714560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_TEXTURE_COORD_ARRAY_TYPE:
2715560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_TEXTURE_COORD_ARRAY_TYPE)
2716560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_TEXTURE_STACK_DEPTH)
2717560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_TEXTURE_STACK_DEPTH:
2718560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_TEXTURE_STACK_DEPTH)
2719560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_UNPACK_ALIGNMENT)
2720560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_UNPACK_ALIGNMENT:
2721560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_UNPACK_ALIGNMENT)
2722560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_VERTEX_ARRAY_BUFFER_BINDING)
2723560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_VERTEX_ARRAY_BUFFER_BINDING:
2724560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_VERTEX_ARRAY_BUFFER_BINDING)
2725560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_VERTEX_ARRAY_SIZE)
2726560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_VERTEX_ARRAY_SIZE:
2727560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_VERTEX_ARRAY_SIZE)
2728560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_VERTEX_ARRAY_STRIDE)
2729560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_VERTEX_ARRAY_STRIDE:
2730560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_VERTEX_ARRAY_STRIDE)
2731560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_VERTEX_ARRAY_TYPE)
2732560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_VERTEX_ARRAY_TYPE:
2733560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_VERTEX_ARRAY_TYPE)
2734560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_WEIGHT_ARRAY_BUFFER_BINDING_OES)
2735560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_WEIGHT_ARRAY_BUFFER_BINDING_OES:
2736560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_WEIGHT_ARRAY_BUFFER_BINDING_OES)
2737560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_WEIGHT_ARRAY_SIZE_OES)
2738560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_WEIGHT_ARRAY_SIZE_OES:
2739560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_WEIGHT_ARRAY_SIZE_OES)
2740560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_WEIGHT_ARRAY_STRIDE_OES)
2741560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_WEIGHT_ARRAY_STRIDE_OES:
2742560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_WEIGHT_ARRAY_STRIDE_OES)
2743560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_WEIGHT_ARRAY_TYPE_OES)
2744560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_WEIGHT_ARRAY_TYPE_OES:
2745560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_WEIGHT_ARRAY_TYPE_OES)
2746560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich            _needed = 1;
2747560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich            break;
2748560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_ALIASED_POINT_SIZE_RANGE)
2749560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_ALIASED_POINT_SIZE_RANGE:
2750560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_ALIASED_POINT_SIZE_RANGE)
2751560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_ALIASED_LINE_WIDTH_RANGE)
2752560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_ALIASED_LINE_WIDTH_RANGE:
2753560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_ALIASED_LINE_WIDTH_RANGE)
2754560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_DEPTH_RANGE)
2755560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_DEPTH_RANGE:
2756560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_DEPTH_RANGE)
2757560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_MAX_VIEWPORT_DIMS)
2758560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_MAX_VIEWPORT_DIMS:
2759560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_MAX_VIEWPORT_DIMS)
2760560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_SMOOTH_LINE_WIDTH_RANGE)
2761560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_SMOOTH_LINE_WIDTH_RANGE:
2762560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_SMOOTH_LINE_WIDTH_RANGE)
2763560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_SMOOTH_POINT_SIZE_RANGE)
2764560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_SMOOTH_POINT_SIZE_RANGE:
2765560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_SMOOTH_POINT_SIZE_RANGE)
2766560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich            _needed = 2;
2767560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich            break;
2768560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_COLOR_CLEAR_VALUE)
2769560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_COLOR_CLEAR_VALUE:
2770560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_COLOR_CLEAR_VALUE)
2771560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_COLOR_WRITEMASK)
2772560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_COLOR_WRITEMASK:
2773560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_COLOR_WRITEMASK)
2774560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_FOG_COLOR)
2775560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_FOG_COLOR:
2776560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_FOG_COLOR)
2777560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_LIGHT_MODEL_AMBIENT)
2778560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_LIGHT_MODEL_AMBIENT:
2779560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_LIGHT_MODEL_AMBIENT)
2780560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_SCISSOR_BOX)
2781560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_SCISSOR_BOX:
2782560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_SCISSOR_BOX)
2783560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_VIEWPORT)
2784560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_VIEWPORT:
2785560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_VIEWPORT)
2786560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich            _needed = 4;
2787560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich            break;
2788560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_MODELVIEW_MATRIX)
2789560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_MODELVIEW_MATRIX:
2790560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_MODELVIEW_MATRIX)
2791560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_MODELVIEW_MATRIX_FLOAT_AS_INT_BITS_OES)
2792560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_MODELVIEW_MATRIX_FLOAT_AS_INT_BITS_OES:
2793560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_MODELVIEW_MATRIX_FLOAT_AS_INT_BITS_OES)
2794560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_PROJECTION_MATRIX)
2795560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_PROJECTION_MATRIX:
2796560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_PROJECTION_MATRIX)
2797560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_PROJECTION_MATRIX_FLOAT_AS_INT_BITS_OES)
2798560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_PROJECTION_MATRIX_FLOAT_AS_INT_BITS_OES:
2799560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_PROJECTION_MATRIX_FLOAT_AS_INT_BITS_OES)
2800560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_TEXTURE_MATRIX)
2801560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_TEXTURE_MATRIX:
2802560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_TEXTURE_MATRIX)
2803560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_TEXTURE_MATRIX_FLOAT_AS_INT_BITS_OES)
2804560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_TEXTURE_MATRIX_FLOAT_AS_INT_BITS_OES:
2805560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_TEXTURE_MATRIX_FLOAT_AS_INT_BITS_OES)
2806560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich            _needed = 16;
2807560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich            break;
2808560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_COMPRESSED_TEXTURE_FORMATS)
2809560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_COMPRESSED_TEXTURE_FORMATS:
2810560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_COMPRESSED_TEXTURE_FORMATS)
2811560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich            _needed = getNumCompressedTextureFormats();
2812560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich            break;
2813560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        default:
2814560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich            _needed = 0;
2815560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich            break;
2816560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
2817560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (_remaining < _needed) {
2818560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _exception = 1;
28192545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
28202545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "length - offset < needed";
2821560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
2822560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
2823560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    params_base = (GLint *)
2824560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _env->GetPrimitiveArrayCritical(params_ref, (jboolean *)0);
2825560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    params = params_base + offset;
2826560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
2827560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glGetIntegerv(
2828560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLenum)pname,
2829560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLint *)params
2830560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
2831560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
2832560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichexit:
2833560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (params_base) {
2834560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _env->ReleasePrimitiveArrayCritical(params_ref, params_base,
2835560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich            _exception ? JNI_ABORT: 0);
2836560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
28372545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    if (_exception) {
28382545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        jniThrowException(_env, _exceptionType, _exceptionMessage);
28392545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    }
2840560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
2841560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
2842560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glGetIntegerv ( GLenum pname, GLint *params ) */
2843560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
2844560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glGetIntegerv__ILjava_nio_IntBuffer_2
2845560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint pname, jobject params_buf) {
2846560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _exception = 0;
28472545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    const char * _exceptionType;
28482545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    const char * _exceptionMessage;
2849560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jarray _array = (jarray) 0;
285017045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    jint _bufferOffset = (jint) 0;
2851560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _remaining;
2852560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLint *params = (GLint *) 0;
2853560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
285417045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    params = (GLint *)getPointer(_env, params_buf, &_array, &_remaining, &_bufferOffset);
2855560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    int _needed;
2856560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    switch (pname) {
2857560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_ALPHA_BITS)
2858560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_ALPHA_BITS:
2859560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_ALPHA_BITS)
2860560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_ALPHA_TEST_FUNC)
2861560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_ALPHA_TEST_FUNC:
2862560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_ALPHA_TEST_FUNC)
2863560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_ALPHA_TEST_REF)
2864560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_ALPHA_TEST_REF:
2865560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_ALPHA_TEST_REF)
2866560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_BLEND_DST)
2867560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_BLEND_DST:
2868560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_BLEND_DST)
2869560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_BLUE_BITS)
2870560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_BLUE_BITS:
2871560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_BLUE_BITS)
2872560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_COLOR_ARRAY_BUFFER_BINDING)
2873560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_COLOR_ARRAY_BUFFER_BINDING:
2874560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_COLOR_ARRAY_BUFFER_BINDING)
2875560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_COLOR_ARRAY_SIZE)
2876560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_COLOR_ARRAY_SIZE:
2877560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_COLOR_ARRAY_SIZE)
2878560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_COLOR_ARRAY_STRIDE)
2879560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_COLOR_ARRAY_STRIDE:
2880560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_COLOR_ARRAY_STRIDE)
2881560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_COLOR_ARRAY_TYPE)
2882560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_COLOR_ARRAY_TYPE:
2883560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_COLOR_ARRAY_TYPE)
2884560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_CULL_FACE)
2885560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_CULL_FACE:
2886560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_CULL_FACE)
2887560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_DEPTH_BITS)
2888560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_DEPTH_BITS:
2889560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_DEPTH_BITS)
2890560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_DEPTH_CLEAR_VALUE)
2891560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_DEPTH_CLEAR_VALUE:
2892560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_DEPTH_CLEAR_VALUE)
2893560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_DEPTH_FUNC)
2894560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_DEPTH_FUNC:
2895560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_DEPTH_FUNC)
2896560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_DEPTH_WRITEMASK)
2897560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_DEPTH_WRITEMASK:
2898560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_DEPTH_WRITEMASK)
2899560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_FOG_DENSITY)
2900560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_FOG_DENSITY:
2901560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_FOG_DENSITY)
2902560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_FOG_END)
2903560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_FOG_END:
2904560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_FOG_END)
2905560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_FOG_MODE)
2906560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_FOG_MODE:
2907560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_FOG_MODE)
2908560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_FOG_START)
2909560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_FOG_START:
2910560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_FOG_START)
2911560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_FRONT_FACE)
2912560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_FRONT_FACE:
2913560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_FRONT_FACE)
2914560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_GREEN_BITS)
2915560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_GREEN_BITS:
2916560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_GREEN_BITS)
2917560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_IMPLEMENTATION_COLOR_READ_FORMAT_OES)
2918560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_IMPLEMENTATION_COLOR_READ_FORMAT_OES:
2919560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_IMPLEMENTATION_COLOR_READ_FORMAT_OES)
2920560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_IMPLEMENTATION_COLOR_READ_TYPE_OES)
2921560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_IMPLEMENTATION_COLOR_READ_TYPE_OES:
2922560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_IMPLEMENTATION_COLOR_READ_TYPE_OES)
2923560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_LIGHT_MODEL_COLOR_CONTROL)
2924560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_LIGHT_MODEL_COLOR_CONTROL:
2925560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_LIGHT_MODEL_COLOR_CONTROL)
2926560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_LIGHT_MODEL_LOCAL_VIEWER)
2927560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_LIGHT_MODEL_LOCAL_VIEWER:
2928560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_LIGHT_MODEL_LOCAL_VIEWER)
2929560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_LIGHT_MODEL_TWO_SIDE)
2930560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_LIGHT_MODEL_TWO_SIDE:
2931560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_LIGHT_MODEL_TWO_SIDE)
2932560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_LINE_SMOOTH_HINT)
2933560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_LINE_SMOOTH_HINT:
2934560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_LINE_SMOOTH_HINT)
2935560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_LINE_WIDTH)
2936560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_LINE_WIDTH:
2937560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_LINE_WIDTH)
2938560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_LOGIC_OP_MODE)
2939560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_LOGIC_OP_MODE:
2940560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_LOGIC_OP_MODE)
2941560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_MATRIX_INDEX_ARRAY_BUFFER_BINDING_OES)
2942560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_MATRIX_INDEX_ARRAY_BUFFER_BINDING_OES:
2943560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_MATRIX_INDEX_ARRAY_BUFFER_BINDING_OES)
2944560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_MATRIX_INDEX_ARRAY_SIZE_OES)
2945560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_MATRIX_INDEX_ARRAY_SIZE_OES:
2946560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_MATRIX_INDEX_ARRAY_SIZE_OES)
2947560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_MATRIX_INDEX_ARRAY_STRIDE_OES)
2948560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_MATRIX_INDEX_ARRAY_STRIDE_OES:
2949560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_MATRIX_INDEX_ARRAY_STRIDE_OES)
2950560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_MATRIX_INDEX_ARRAY_TYPE_OES)
2951560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_MATRIX_INDEX_ARRAY_TYPE_OES:
2952560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_MATRIX_INDEX_ARRAY_TYPE_OES)
2953560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_MATRIX_MODE)
2954560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_MATRIX_MODE:
2955560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_MATRIX_MODE)
2956560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_MAX_CLIP_PLANES)
2957560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_MAX_CLIP_PLANES:
2958560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_MAX_CLIP_PLANES)
2959560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_MAX_ELEMENTS_INDICES)
2960560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_MAX_ELEMENTS_INDICES:
2961560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_MAX_ELEMENTS_INDICES)
2962560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_MAX_ELEMENTS_VERTICES)
2963560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_MAX_ELEMENTS_VERTICES:
2964560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_MAX_ELEMENTS_VERTICES)
2965560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_MAX_LIGHTS)
2966560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_MAX_LIGHTS:
2967560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_MAX_LIGHTS)
2968560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_MAX_MODELVIEW_STACK_DEPTH)
2969560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_MAX_MODELVIEW_STACK_DEPTH:
2970560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_MAX_MODELVIEW_STACK_DEPTH)
2971560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_MAX_PALETTE_MATRICES_OES)
2972560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_MAX_PALETTE_MATRICES_OES:
2973560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_MAX_PALETTE_MATRICES_OES)
2974560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_MAX_PROJECTION_STACK_DEPTH)
2975560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_MAX_PROJECTION_STACK_DEPTH:
2976560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_MAX_PROJECTION_STACK_DEPTH)
2977560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_MAX_TEXTURE_SIZE)
2978560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_MAX_TEXTURE_SIZE:
2979560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_MAX_TEXTURE_SIZE)
2980560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_MAX_TEXTURE_STACK_DEPTH)
2981560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_MAX_TEXTURE_STACK_DEPTH:
2982560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_MAX_TEXTURE_STACK_DEPTH)
2983560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_MAX_TEXTURE_UNITS)
2984560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_MAX_TEXTURE_UNITS:
2985560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_MAX_TEXTURE_UNITS)
2986560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_MAX_VERTEX_UNITS_OES)
2987560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_MAX_VERTEX_UNITS_OES:
2988560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_MAX_VERTEX_UNITS_OES)
2989560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_MODELVIEW_STACK_DEPTH)
2990560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_MODELVIEW_STACK_DEPTH:
2991560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_MODELVIEW_STACK_DEPTH)
2992560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_NORMAL_ARRAY_BUFFER_BINDING)
2993560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_NORMAL_ARRAY_BUFFER_BINDING:
2994560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_NORMAL_ARRAY_BUFFER_BINDING)
2995560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_NORMAL_ARRAY_STRIDE)
2996560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_NORMAL_ARRAY_STRIDE:
2997560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_NORMAL_ARRAY_STRIDE)
2998560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_NORMAL_ARRAY_TYPE)
2999560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_NORMAL_ARRAY_TYPE:
3000560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_NORMAL_ARRAY_TYPE)
3001560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_NUM_COMPRESSED_TEXTURE_FORMATS)
3002560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_NUM_COMPRESSED_TEXTURE_FORMATS:
3003560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_NUM_COMPRESSED_TEXTURE_FORMATS)
3004560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_PACK_ALIGNMENT)
3005560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_PACK_ALIGNMENT:
3006560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_PACK_ALIGNMENT)
3007560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_PERSPECTIVE_CORRECTION_HINT)
3008560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_PERSPECTIVE_CORRECTION_HINT:
3009560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_PERSPECTIVE_CORRECTION_HINT)
3010560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_POINT_SIZE)
3011560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_POINT_SIZE:
3012560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_POINT_SIZE)
3013560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_POINT_SIZE_ARRAY_BUFFER_BINDING_OES)
3014560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_POINT_SIZE_ARRAY_BUFFER_BINDING_OES:
3015560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_POINT_SIZE_ARRAY_BUFFER_BINDING_OES)
3016560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_POINT_SIZE_ARRAY_STRIDE_OES)
3017560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_POINT_SIZE_ARRAY_STRIDE_OES:
3018560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_POINT_SIZE_ARRAY_STRIDE_OES)
3019560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_POINT_SIZE_ARRAY_TYPE_OES)
3020560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_POINT_SIZE_ARRAY_TYPE_OES:
3021560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_POINT_SIZE_ARRAY_TYPE_OES)
3022560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_POINT_SMOOTH_HINT)
3023560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_POINT_SMOOTH_HINT:
3024560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_POINT_SMOOTH_HINT)
3025560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_POLYGON_OFFSET_FACTOR)
3026560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_POLYGON_OFFSET_FACTOR:
3027560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_POLYGON_OFFSET_FACTOR)
3028560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_POLYGON_OFFSET_UNITS)
3029560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_POLYGON_OFFSET_UNITS:
3030560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_POLYGON_OFFSET_UNITS)
3031560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_PROJECTION_STACK_DEPTH)
3032560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_PROJECTION_STACK_DEPTH:
3033560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_PROJECTION_STACK_DEPTH)
3034560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_RED_BITS)
3035560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_RED_BITS:
3036560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_RED_BITS)
3037560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_SHADE_MODEL)
3038560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_SHADE_MODEL:
3039560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_SHADE_MODEL)
3040560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_STENCIL_BITS)
3041560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_STENCIL_BITS:
3042560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_STENCIL_BITS)
3043560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_STENCIL_CLEAR_VALUE)
3044560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_STENCIL_CLEAR_VALUE:
3045560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_STENCIL_CLEAR_VALUE)
3046560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_STENCIL_FAIL)
3047560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_STENCIL_FAIL:
3048560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_STENCIL_FAIL)
3049560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_STENCIL_FUNC)
3050560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_STENCIL_FUNC:
3051560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_STENCIL_FUNC)
3052560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_STENCIL_PASS_DEPTH_FAIL)
3053560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_STENCIL_PASS_DEPTH_FAIL:
3054560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_STENCIL_PASS_DEPTH_FAIL)
3055560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_STENCIL_PASS_DEPTH_PASS)
3056560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_STENCIL_PASS_DEPTH_PASS:
3057560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_STENCIL_PASS_DEPTH_PASS)
3058560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_STENCIL_REF)
3059560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_STENCIL_REF:
3060560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_STENCIL_REF)
3061560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_STENCIL_VALUE_MASK)
3062560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_STENCIL_VALUE_MASK:
3063560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_STENCIL_VALUE_MASK)
3064560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_STENCIL_WRITEMASK)
3065560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_STENCIL_WRITEMASK:
3066560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_STENCIL_WRITEMASK)
3067560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_SUBPIXEL_BITS)
3068560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_SUBPIXEL_BITS:
3069560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_SUBPIXEL_BITS)
3070560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_TEXTURE_BINDING_2D)
3071560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_TEXTURE_BINDING_2D:
3072560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_TEXTURE_BINDING_2D)
3073560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING)
3074560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING:
3075560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING)
3076560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_TEXTURE_COORD_ARRAY_SIZE)
3077560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_TEXTURE_COORD_ARRAY_SIZE:
3078560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_TEXTURE_COORD_ARRAY_SIZE)
3079560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_TEXTURE_COORD_ARRAY_STRIDE)
3080560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_TEXTURE_COORD_ARRAY_STRIDE:
3081560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_TEXTURE_COORD_ARRAY_STRIDE)
3082560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_TEXTURE_COORD_ARRAY_TYPE)
3083560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_TEXTURE_COORD_ARRAY_TYPE:
3084560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_TEXTURE_COORD_ARRAY_TYPE)
3085560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_TEXTURE_STACK_DEPTH)
3086560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_TEXTURE_STACK_DEPTH:
3087560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_TEXTURE_STACK_DEPTH)
3088560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_UNPACK_ALIGNMENT)
3089560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_UNPACK_ALIGNMENT:
3090560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_UNPACK_ALIGNMENT)
3091560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_VERTEX_ARRAY_BUFFER_BINDING)
3092560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_VERTEX_ARRAY_BUFFER_BINDING:
3093560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_VERTEX_ARRAY_BUFFER_BINDING)
3094560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_VERTEX_ARRAY_SIZE)
3095560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_VERTEX_ARRAY_SIZE:
3096560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_VERTEX_ARRAY_SIZE)
3097560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_VERTEX_ARRAY_STRIDE)
3098560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_VERTEX_ARRAY_STRIDE:
3099560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_VERTEX_ARRAY_STRIDE)
3100560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_VERTEX_ARRAY_TYPE)
3101560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_VERTEX_ARRAY_TYPE:
3102560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_VERTEX_ARRAY_TYPE)
3103560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_WEIGHT_ARRAY_BUFFER_BINDING_OES)
3104560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_WEIGHT_ARRAY_BUFFER_BINDING_OES:
3105560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_WEIGHT_ARRAY_BUFFER_BINDING_OES)
3106560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_WEIGHT_ARRAY_SIZE_OES)
3107560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_WEIGHT_ARRAY_SIZE_OES:
3108560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_WEIGHT_ARRAY_SIZE_OES)
3109560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_WEIGHT_ARRAY_STRIDE_OES)
3110560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_WEIGHT_ARRAY_STRIDE_OES:
3111560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_WEIGHT_ARRAY_STRIDE_OES)
3112560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_WEIGHT_ARRAY_TYPE_OES)
3113560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_WEIGHT_ARRAY_TYPE_OES:
3114560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_WEIGHT_ARRAY_TYPE_OES)
3115560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich            _needed = 1;
3116560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich            break;
3117560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_ALIASED_POINT_SIZE_RANGE)
3118560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_ALIASED_POINT_SIZE_RANGE:
3119560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_ALIASED_POINT_SIZE_RANGE)
3120560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_ALIASED_LINE_WIDTH_RANGE)
3121560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_ALIASED_LINE_WIDTH_RANGE:
3122560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_ALIASED_LINE_WIDTH_RANGE)
3123560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_DEPTH_RANGE)
3124560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_DEPTH_RANGE:
3125560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_DEPTH_RANGE)
3126560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_MAX_VIEWPORT_DIMS)
3127560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_MAX_VIEWPORT_DIMS:
3128560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_MAX_VIEWPORT_DIMS)
3129560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_SMOOTH_LINE_WIDTH_RANGE)
3130560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_SMOOTH_LINE_WIDTH_RANGE:
3131560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_SMOOTH_LINE_WIDTH_RANGE)
3132560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_SMOOTH_POINT_SIZE_RANGE)
3133560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_SMOOTH_POINT_SIZE_RANGE:
3134560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_SMOOTH_POINT_SIZE_RANGE)
3135560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich            _needed = 2;
3136560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich            break;
3137560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_COLOR_CLEAR_VALUE)
3138560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_COLOR_CLEAR_VALUE:
3139560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_COLOR_CLEAR_VALUE)
3140560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_COLOR_WRITEMASK)
3141560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_COLOR_WRITEMASK:
3142560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_COLOR_WRITEMASK)
3143560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_FOG_COLOR)
3144560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_FOG_COLOR:
3145560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_FOG_COLOR)
3146560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_LIGHT_MODEL_AMBIENT)
3147560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_LIGHT_MODEL_AMBIENT:
3148560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_LIGHT_MODEL_AMBIENT)
3149560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_SCISSOR_BOX)
3150560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_SCISSOR_BOX:
3151560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_SCISSOR_BOX)
3152560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_VIEWPORT)
3153560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_VIEWPORT:
3154560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_VIEWPORT)
3155560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich            _needed = 4;
3156560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich            break;
3157560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_MODELVIEW_MATRIX)
3158560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_MODELVIEW_MATRIX:
3159560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_MODELVIEW_MATRIX)
3160560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_MODELVIEW_MATRIX_FLOAT_AS_INT_BITS_OES)
3161560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_MODELVIEW_MATRIX_FLOAT_AS_INT_BITS_OES:
3162560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_MODELVIEW_MATRIX_FLOAT_AS_INT_BITS_OES)
3163560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_PROJECTION_MATRIX)
3164560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_PROJECTION_MATRIX:
3165560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_PROJECTION_MATRIX)
3166560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_PROJECTION_MATRIX_FLOAT_AS_INT_BITS_OES)
3167560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_PROJECTION_MATRIX_FLOAT_AS_INT_BITS_OES:
3168560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_PROJECTION_MATRIX_FLOAT_AS_INT_BITS_OES)
3169560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_TEXTURE_MATRIX)
3170560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_TEXTURE_MATRIX:
3171560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_TEXTURE_MATRIX)
3172560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_TEXTURE_MATRIX_FLOAT_AS_INT_BITS_OES)
3173560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_TEXTURE_MATRIX_FLOAT_AS_INT_BITS_OES:
3174560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_TEXTURE_MATRIX_FLOAT_AS_INT_BITS_OES)
3175560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich            _needed = 16;
3176560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich            break;
3177560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#if defined(GL_COMPRESSED_TEXTURE_FORMATS)
3178560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        case GL_COMPRESSED_TEXTURE_FORMATS:
3179560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich#endif // defined(GL_COMPRESSED_TEXTURE_FORMATS)
3180560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich            _needed = getNumCompressedTextureFormats();
3181560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich            break;
3182560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        default:
3183560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich            _needed = 0;
3184560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich            break;
3185560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
3186560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (_remaining < _needed) {
3187560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _exception = 1;
31882545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
31892545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "remaining() < needed";
3190560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
3191560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
319217045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    if (params == NULL) {
319317045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        char * _paramsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
319417045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        params = (GLint *) (_paramsBase + _bufferOffset);
319517045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    }
3196560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glGetIntegerv(
3197560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLenum)pname,
3198560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLint *)params
3199560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
3200560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
3201560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichexit:
3202560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (_array) {
3203560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        releasePointer(_env, _array, params, _exception ? JNI_FALSE : JNI_TRUE);
3204560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
32052545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    if (_exception) {
32062545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        jniThrowException(_env, _exceptionType, _exceptionMessage);
32072545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    }
3208560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
3209560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
3210560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glGetProgramiv ( GLuint program, GLenum pname, GLint *params ) */
3211560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
3212560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glGetProgramiv__II_3II
3213560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint program, jint pname, jintArray params_ref, jint offset) {
3214560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _exception = 0;
32152545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    const char * _exceptionType;
32162545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    const char * _exceptionMessage;
3217560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLint *params_base = (GLint *) 0;
3218560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _remaining;
3219560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLint *params = (GLint *) 0;
3220560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
3221560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (!params_ref) {
3222560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _exception = 1;
32232545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
32242545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "params == null";
3225560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
3226560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
3227560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (offset < 0) {
3228560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _exception = 1;
32292545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
32302545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "offset < 0";
3231560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
3232560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
3233560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    _remaining = _env->GetArrayLength(params_ref) - offset;
3234560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    params_base = (GLint *)
3235560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _env->GetPrimitiveArrayCritical(params_ref, (jboolean *)0);
3236560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    params = params_base + offset;
3237560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
3238560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glGetProgramiv(
3239560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLuint)program,
3240560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLenum)pname,
3241560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLint *)params
3242560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
3243560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
3244560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichexit:
3245560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (params_base) {
3246560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _env->ReleasePrimitiveArrayCritical(params_ref, params_base,
3247560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich            _exception ? JNI_ABORT: 0);
3248560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
32492545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    if (_exception) {
32502545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        jniThrowException(_env, _exceptionType, _exceptionMessage);
32512545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    }
3252560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
3253560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
3254560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glGetProgramiv ( GLuint program, GLenum pname, GLint *params ) */
3255560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
3256560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glGetProgramiv__IILjava_nio_IntBuffer_2
3257560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint program, jint pname, jobject params_buf) {
3258560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jarray _array = (jarray) 0;
325917045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    jint _bufferOffset = (jint) 0;
3260560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _remaining;
3261560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLint *params = (GLint *) 0;
3262560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
326317045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    params = (GLint *)getPointer(_env, params_buf, &_array, &_remaining, &_bufferOffset);
326417045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    if (params == NULL) {
326517045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        char * _paramsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
326617045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        params = (GLint *) (_paramsBase + _bufferOffset);
326717045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    }
3268560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glGetProgramiv(
3269560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLuint)program,
3270560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLenum)pname,
3271560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLint *)params
3272560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
3273560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (_array) {
32742545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        releasePointer(_env, _array, params, JNI_TRUE);
3275560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
3276560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
3277560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
327824ce5fb2cc09d0a14406e7b935f8648c5720d27eElliott Hughes#include <stdlib.h>
3279560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
3280560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glGetProgramInfoLog ( GLuint shader, GLsizei maxLength, GLsizei* length, GLchar* infoLog ) */
328124ce5fb2cc09d0a14406e7b935f8648c5720d27eElliott Hughesstatic jstring android_glGetProgramInfoLog(JNIEnv *_env, jobject, jint shader) {
3282560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLint infoLen = 0;
3283560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glGetProgramiv(shader, GL_INFO_LOG_LENGTH, &infoLen);
328424ce5fb2cc09d0a14406e7b935f8648c5720d27eElliott Hughes    if (!infoLen) {
328524ce5fb2cc09d0a14406e7b935f8648c5720d27eElliott Hughes        return _env->NewStringUTF("");
3286560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
328724ce5fb2cc09d0a14406e7b935f8648c5720d27eElliott Hughes    char* buf = (char*) malloc(infoLen);
328824ce5fb2cc09d0a14406e7b935f8648c5720d27eElliott Hughes    if (buf == NULL) {
328924ce5fb2cc09d0a14406e7b935f8648c5720d27eElliott Hughes        jniThrowException(_env, "java/lang/IllegalArgumentException", "out of memory");
329024ce5fb2cc09d0a14406e7b935f8648c5720d27eElliott Hughes        return NULL;
3291560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
329224ce5fb2cc09d0a14406e7b935f8648c5720d27eElliott Hughes    glGetProgramInfoLog(shader, infoLen, NULL, buf);
329324ce5fb2cc09d0a14406e7b935f8648c5720d27eElliott Hughes    jstring result = _env->NewStringUTF(buf);
329424ce5fb2cc09d0a14406e7b935f8648c5720d27eElliott Hughes    free(buf);
329524ce5fb2cc09d0a14406e7b935f8648c5720d27eElliott Hughes    return result;
3296560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
3297560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glGetRenderbufferParameteriv ( GLenum target, GLenum pname, GLint *params ) */
3298560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
3299560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glGetRenderbufferParameteriv__II_3II
3300560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint target, jint pname, jintArray params_ref, jint offset) {
3301560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _exception = 0;
33022545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    const char * _exceptionType;
33032545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    const char * _exceptionMessage;
3304560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLint *params_base = (GLint *) 0;
3305560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _remaining;
3306560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLint *params = (GLint *) 0;
3307560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
3308560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (!params_ref) {
3309560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _exception = 1;
33102545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
33112545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "params == null";
3312560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
3313560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
3314560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (offset < 0) {
3315560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _exception = 1;
33162545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
33172545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "offset < 0";
3318560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
3319560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
3320560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    _remaining = _env->GetArrayLength(params_ref) - offset;
3321560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    params_base = (GLint *)
3322560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _env->GetPrimitiveArrayCritical(params_ref, (jboolean *)0);
3323560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    params = params_base + offset;
3324560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
3325560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glGetRenderbufferParameteriv(
3326560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLenum)target,
3327560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLenum)pname,
3328560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLint *)params
3329560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
3330560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
3331560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichexit:
3332560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (params_base) {
3333560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _env->ReleasePrimitiveArrayCritical(params_ref, params_base,
3334560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich            _exception ? JNI_ABORT: 0);
3335560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
33362545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    if (_exception) {
33372545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        jniThrowException(_env, _exceptionType, _exceptionMessage);
33382545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    }
3339560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
3340560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
3341560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glGetRenderbufferParameteriv ( GLenum target, GLenum pname, GLint *params ) */
3342560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
3343560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glGetRenderbufferParameteriv__IILjava_nio_IntBuffer_2
3344560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint target, jint pname, jobject params_buf) {
3345560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jarray _array = (jarray) 0;
334617045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    jint _bufferOffset = (jint) 0;
3347560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _remaining;
3348560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLint *params = (GLint *) 0;
3349560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
335017045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    params = (GLint *)getPointer(_env, params_buf, &_array, &_remaining, &_bufferOffset);
335117045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    if (params == NULL) {
335217045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        char * _paramsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
335317045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        params = (GLint *) (_paramsBase + _bufferOffset);
335417045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    }
3355560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glGetRenderbufferParameteriv(
3356560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLenum)target,
3357560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLenum)pname,
3358560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLint *)params
3359560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
3360560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (_array) {
33612545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        releasePointer(_env, _array, params, JNI_TRUE);
3362560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
3363560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
3364560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
3365560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glGetShaderiv ( GLuint shader, GLenum pname, GLint *params ) */
3366560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
3367560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glGetShaderiv__II_3II
3368560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint shader, jint pname, jintArray params_ref, jint offset) {
3369560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _exception = 0;
33702545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    const char * _exceptionType;
33712545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    const char * _exceptionMessage;
3372560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLint *params_base = (GLint *) 0;
3373560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _remaining;
3374560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLint *params = (GLint *) 0;
3375560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
3376560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (!params_ref) {
3377560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _exception = 1;
33782545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
33792545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "params == null";
3380560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
3381560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
3382560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (offset < 0) {
3383560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _exception = 1;
33842545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
33852545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "offset < 0";
3386560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
3387560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
3388560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    _remaining = _env->GetArrayLength(params_ref) - offset;
3389560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    params_base = (GLint *)
3390560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _env->GetPrimitiveArrayCritical(params_ref, (jboolean *)0);
3391560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    params = params_base + offset;
3392560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
3393560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glGetShaderiv(
3394560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLuint)shader,
3395560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLenum)pname,
3396560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLint *)params
3397560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
3398560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
3399560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichexit:
3400560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (params_base) {
3401560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _env->ReleasePrimitiveArrayCritical(params_ref, params_base,
3402560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich            _exception ? JNI_ABORT: 0);
3403560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
34042545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    if (_exception) {
34052545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        jniThrowException(_env, _exceptionType, _exceptionMessage);
34062545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    }
3407560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
3408560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
3409560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glGetShaderiv ( GLuint shader, GLenum pname, GLint *params ) */
3410560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
3411560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glGetShaderiv__IILjava_nio_IntBuffer_2
3412560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint shader, jint pname, jobject params_buf) {
3413560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jarray _array = (jarray) 0;
341417045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    jint _bufferOffset = (jint) 0;
3415560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _remaining;
3416560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLint *params = (GLint *) 0;
3417560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
341817045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    params = (GLint *)getPointer(_env, params_buf, &_array, &_remaining, &_bufferOffset);
341917045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    if (params == NULL) {
342017045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        char * _paramsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
342117045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        params = (GLint *) (_paramsBase + _bufferOffset);
342217045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    }
3423560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glGetShaderiv(
3424560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLuint)shader,
3425560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLenum)pname,
3426560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLint *)params
3427560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
3428560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (_array) {
34292545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        releasePointer(_env, _array, params, JNI_TRUE);
3430560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
3431560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
3432560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
343324ce5fb2cc09d0a14406e7b935f8648c5720d27eElliott Hughes#include <stdlib.h>
3434560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
3435560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glGetShaderInfoLog ( GLuint shader, GLsizei maxLength, GLsizei* length, GLchar* infoLog ) */
343624ce5fb2cc09d0a14406e7b935f8648c5720d27eElliott Hughesstatic jstring android_glGetShaderInfoLog(JNIEnv *_env, jobject, jint shader) {
3437560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLint infoLen = 0;
3438560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glGetShaderiv(shader, GL_INFO_LOG_LENGTH, &infoLen);
343924ce5fb2cc09d0a14406e7b935f8648c5720d27eElliott Hughes    if (!infoLen) {
344024ce5fb2cc09d0a14406e7b935f8648c5720d27eElliott Hughes        return _env->NewStringUTF("");
3441560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
344224ce5fb2cc09d0a14406e7b935f8648c5720d27eElliott Hughes    char* buf = (char*) malloc(infoLen);
344324ce5fb2cc09d0a14406e7b935f8648c5720d27eElliott Hughes    if (buf == NULL) {
344424ce5fb2cc09d0a14406e7b935f8648c5720d27eElliott Hughes        jniThrowException(_env, "java/lang/IllegalArgumentException", "out of memory");
344524ce5fb2cc09d0a14406e7b935f8648c5720d27eElliott Hughes        return NULL;
3446560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
344724ce5fb2cc09d0a14406e7b935f8648c5720d27eElliott Hughes    glGetShaderInfoLog(shader, infoLen, NULL, buf);
344824ce5fb2cc09d0a14406e7b935f8648c5720d27eElliott Hughes    jstring result = _env->NewStringUTF(buf);
344924ce5fb2cc09d0a14406e7b935f8648c5720d27eElliott Hughes    free(buf);
345024ce5fb2cc09d0a14406e7b935f8648c5720d27eElliott Hughes    return result;
3451560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
3452560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glGetShaderPrecisionFormat ( GLenum shadertype, GLenum precisiontype, GLint *range, GLint *precision ) */
3453560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
3454560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glGetShaderPrecisionFormat__II_3II_3II
3455560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint shadertype, jint precisiontype, jintArray range_ref, jint rangeOffset, jintArray precision_ref, jint precisionOffset) {
3456560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _exception = 0;
34572545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    const char * _exceptionType;
34582545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    const char * _exceptionMessage;
3459560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLint *range_base = (GLint *) 0;
3460560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _rangeRemaining;
3461560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLint *range = (GLint *) 0;
3462560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLint *precision_base = (GLint *) 0;
3463560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _precisionRemaining;
3464560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLint *precision = (GLint *) 0;
3465560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
3466560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (!range_ref) {
3467560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _exception = 1;
34682545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
34692545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "range == null";
3470560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
3471560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
3472560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (rangeOffset < 0) {
3473560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _exception = 1;
34742545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
34752545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "rangeOffset < 0";
3476560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
3477560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
3478560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    _rangeRemaining = _env->GetArrayLength(range_ref) - rangeOffset;
3479560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    range_base = (GLint *)
3480560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _env->GetPrimitiveArrayCritical(range_ref, (jboolean *)0);
3481560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    range = range_base + rangeOffset;
3482560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
3483560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (!precision_ref) {
3484560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _exception = 1;
34852545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
34862545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "precision == null";
3487560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
3488560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
3489560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (precisionOffset < 0) {
3490560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _exception = 1;
34912545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
34922545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "precisionOffset < 0";
3493560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
3494560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
3495560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    _precisionRemaining = _env->GetArrayLength(precision_ref) - precisionOffset;
3496560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    precision_base = (GLint *)
3497560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _env->GetPrimitiveArrayCritical(precision_ref, (jboolean *)0);
3498560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    precision = precision_base + precisionOffset;
3499560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
3500560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glGetShaderPrecisionFormat(
3501560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLenum)shadertype,
3502560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLenum)precisiontype,
3503560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLint *)range,
3504560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLint *)precision
3505560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
3506560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
3507560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichexit:
3508560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (precision_base) {
3509560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _env->ReleasePrimitiveArrayCritical(precision_ref, precision_base,
3510560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich            _exception ? JNI_ABORT: 0);
3511560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
3512560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (range_base) {
3513560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _env->ReleasePrimitiveArrayCritical(range_ref, range_base,
3514560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich            _exception ? JNI_ABORT: 0);
3515560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
35162545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    if (_exception) {
35172545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        jniThrowException(_env, _exceptionType, _exceptionMessage);
35182545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    }
3519560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
3520560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
3521560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glGetShaderPrecisionFormat ( GLenum shadertype, GLenum precisiontype, GLint *range, GLint *precision ) */
3522560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
3523560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glGetShaderPrecisionFormat__IILjava_nio_IntBuffer_2Ljava_nio_IntBuffer_2
3524560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint shadertype, jint precisiontype, jobject range_buf, jobject precision_buf) {
3525560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jarray _rangeArray = (jarray) 0;
352617045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    jint _rangeBufferOffset = (jint) 0;
3527560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jarray _precisionArray = (jarray) 0;
352817045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    jint _precisionBufferOffset = (jint) 0;
3529560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _rangeRemaining;
3530560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLint *range = (GLint *) 0;
3531560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _precisionRemaining;
3532560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLint *precision = (GLint *) 0;
3533560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
353417045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    range = (GLint *)getPointer(_env, range_buf, &_rangeArray, &_rangeRemaining, &_rangeBufferOffset);
353517045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    precision = (GLint *)getPointer(_env, precision_buf, &_precisionArray, &_precisionRemaining, &_precisionBufferOffset);
353617045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    if (range == NULL) {
353717045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        char * _rangeBase = (char *)_env->GetPrimitiveArrayCritical(_rangeArray, (jboolean *) 0);
353817045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        range = (GLint *) (_rangeBase + _rangeBufferOffset);
353917045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    }
354017045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    if (precision == NULL) {
354117045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        char * _precisionBase = (char *)_env->GetPrimitiveArrayCritical(_precisionArray, (jboolean *) 0);
354217045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        precision = (GLint *) (_precisionBase + _precisionBufferOffset);
354317045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    }
3544560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glGetShaderPrecisionFormat(
3545560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLenum)shadertype,
3546560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLenum)precisiontype,
3547560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLint *)range,
3548560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLint *)precision
3549560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
3550560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (_precisionArray) {
355117045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        releasePointer(_env, _precisionArray, precision, JNI_TRUE);
355217045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    }
355317045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    if (_rangeArray) {
355417045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        releasePointer(_env, _rangeArray, range, JNI_TRUE);
3555560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
3556560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
3557560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
3558560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glGetShaderSource ( GLuint shader, GLsizei bufsize, GLsizei *length, char *source ) */
3559560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
3560560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glGetShaderSource__II_3II_3BI
3561560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint shader, jint bufsize, jintArray length_ref, jint lengthOffset, jbyteArray source_ref, jint sourceOffset) {
3562560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _exception = 0;
35632545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    const char * _exceptionType;
35642545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    const char * _exceptionMessage;
3565560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLsizei *length_base = (GLsizei *) 0;
3566560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _lengthRemaining;
3567560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLsizei *length = (GLsizei *) 0;
3568560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    char *source_base = (char *) 0;
3569560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _sourceRemaining;
3570560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    char *source = (char *) 0;
3571560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
3572560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (!length_ref) {
3573560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _exception = 1;
35742545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
35752545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "length == null";
3576560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
3577560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
3578560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (lengthOffset < 0) {
3579560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _exception = 1;
35802545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
35812545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "lengthOffset < 0";
3582560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
3583560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
3584560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    _lengthRemaining = _env->GetArrayLength(length_ref) - lengthOffset;
3585560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    length_base = (GLsizei *)
3586560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _env->GetPrimitiveArrayCritical(length_ref, (jboolean *)0);
3587560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    length = length_base + lengthOffset;
3588560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
3589560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (!source_ref) {
3590560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _exception = 1;
35912545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
35922545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "source == null";
3593560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
3594560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
3595560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (sourceOffset < 0) {
3596560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _exception = 1;
35972545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
35982545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "sourceOffset < 0";
3599560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
3600560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
3601560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    _sourceRemaining = _env->GetArrayLength(source_ref) - sourceOffset;
3602560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    source_base = (char *)
3603560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _env->GetPrimitiveArrayCritical(source_ref, (jboolean *)0);
3604560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    source = source_base + sourceOffset;
3605560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
3606560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glGetShaderSource(
3607560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLuint)shader,
3608560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLsizei)bufsize,
3609560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLsizei *)length,
3610560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (char *)source
3611560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
3612560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
3613560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichexit:
3614560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (source_base) {
3615560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _env->ReleasePrimitiveArrayCritical(source_ref, source_base,
3616560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich            _exception ? JNI_ABORT: 0);
3617560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
3618560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (length_base) {
3619560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _env->ReleasePrimitiveArrayCritical(length_ref, length_base,
3620560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich            _exception ? JNI_ABORT: 0);
3621560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
36222545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    if (_exception) {
36232545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        jniThrowException(_env, _exceptionType, _exceptionMessage);
36242545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    }
3625560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
3626560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
3627560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glGetShaderSource ( GLuint shader, GLsizei bufsize, GLsizei *length, char *source ) */
3628560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
3629560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glGetShaderSource__IILjava_nio_IntBuffer_2B
3630560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint shader, jint bufsize, jobject length_buf, jbyte source) {
3631560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jarray _array = (jarray) 0;
363217045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    jint _bufferOffset = (jint) 0;
3633560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _remaining;
3634560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLsizei *length = (GLsizei *) 0;
3635560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
363617045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    length = (GLsizei *)getPointer(_env, length_buf, &_array, &_remaining, &_bufferOffset);
363717045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    if (length == NULL) {
363817045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        char * _lengthBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
363917045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        length = (GLsizei *) (_lengthBase + _bufferOffset);
364017045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    }
3641560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glGetShaderSource(
3642560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLuint)shader,
3643560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLsizei)bufsize,
3644560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLsizei *)length,
3645560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (char *)source
3646560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
3647560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (_array) {
36482545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        releasePointer(_env, _array, length, JNI_TRUE);
3649560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
3650560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
3651560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
3652dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer/* void glGetShaderSource ( GLuint shader, GLsizei bufsize, GLsizei *length, char *source ) */
3653dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshoferstatic jstring android_glGetShaderSource(JNIEnv *_env, jobject, jint shader) {
3654dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    GLint shaderLen = 0;
3655dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    glGetShaderiv((GLuint)shader, GL_SHADER_SOURCE_LENGTH, &shaderLen);
3656dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    if (!shaderLen) {
3657dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer        return _env->NewStringUTF("");
3658dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    }
3659dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    char* buf = (char*) malloc(shaderLen);
3660dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    if (buf == NULL) {
3661dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer        jniThrowException(_env, "java/lang/IllegalArgumentException", "out of memory");
3662dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer        return NULL;
3663dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    }
3664dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    glGetShaderSource(shader, shaderLen, NULL, buf);
3665dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    jstring result = _env->NewStringUTF(buf);
3666dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    free(buf);
3667dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer    return result;
3668dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer}
3669560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* const GLubyte * glGetString ( GLenum name ) */
367024ce5fb2cc09d0a14406e7b935f8648c5720d27eElliott Hughesstatic jstring android_glGetString(JNIEnv* _env, jobject, jint name) {
367124ce5fb2cc09d0a14406e7b935f8648c5720d27eElliott Hughes    const char* chars = (const char*) glGetString((GLenum) name);
367224ce5fb2cc09d0a14406e7b935f8648c5720d27eElliott Hughes    return _env->NewStringUTF(chars);
3673560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
3674560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glGetTexParameterfv ( GLenum target, GLenum pname, GLfloat *params ) */
3675560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
3676560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glGetTexParameterfv__II_3FI
3677560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint target, jint pname, jfloatArray params_ref, jint offset) {
3678560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _exception = 0;
36792545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    const char * _exceptionType;
36802545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    const char * _exceptionMessage;
3681560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLfloat *params_base = (GLfloat *) 0;
3682560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _remaining;
3683560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLfloat *params = (GLfloat *) 0;
3684560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
3685560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (!params_ref) {
3686560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _exception = 1;
36872545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
36882545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "params == null";
3689560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
3690560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
3691560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (offset < 0) {
3692560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _exception = 1;
36932545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
36942545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "offset < 0";
3695560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
3696560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
3697560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    _remaining = _env->GetArrayLength(params_ref) - offset;
3698560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (_remaining < 1) {
3699560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _exception = 1;
37002545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
37012545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "length - offset < 1 < needed";
3702560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
3703560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
3704560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    params_base = (GLfloat *)
3705560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _env->GetPrimitiveArrayCritical(params_ref, (jboolean *)0);
3706560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    params = params_base + offset;
3707560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
3708560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glGetTexParameterfv(
3709560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLenum)target,
3710560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLenum)pname,
3711560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLfloat *)params
3712560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
3713560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
3714560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichexit:
3715560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (params_base) {
3716560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _env->ReleasePrimitiveArrayCritical(params_ref, params_base,
3717560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich            _exception ? JNI_ABORT: 0);
3718560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
37192545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    if (_exception) {
37202545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        jniThrowException(_env, _exceptionType, _exceptionMessage);
37212545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    }
3722560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
3723560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
3724560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glGetTexParameterfv ( GLenum target, GLenum pname, GLfloat *params ) */
3725560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
3726560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glGetTexParameterfv__IILjava_nio_FloatBuffer_2
3727560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint target, jint pname, jobject params_buf) {
3728560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _exception = 0;
37292545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    const char * _exceptionType;
37302545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    const char * _exceptionMessage;
3731560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jarray _array = (jarray) 0;
373217045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    jint _bufferOffset = (jint) 0;
3733560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _remaining;
3734560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLfloat *params = (GLfloat *) 0;
3735560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
373617045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    params = (GLfloat *)getPointer(_env, params_buf, &_array, &_remaining, &_bufferOffset);
3737560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (_remaining < 1) {
3738560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _exception = 1;
37392545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
37402545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "remaining() < 1 < needed";
3741560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
3742560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
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    glGetTexParameterfv(
3748560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLenum)target,
3749560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLenum)pname,
3750560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLfloat *)params
3751560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
3752560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
3753560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichexit:
3754560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (_array) {
3755560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        releasePointer(_env, _array, params, _exception ? JNI_FALSE : JNI_TRUE);
3756560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
37572545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    if (_exception) {
37582545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        jniThrowException(_env, _exceptionType, _exceptionMessage);
37592545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    }
3760560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
3761560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
3762560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glGetTexParameteriv ( GLenum target, GLenum pname, GLint *params ) */
3763560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
3764560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glGetTexParameteriv__II_3II
3765560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint target, jint pname, jintArray params_ref, jint offset) {
3766560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _exception = 0;
37672545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    const char * _exceptionType;
37682545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    const char * _exceptionMessage;
3769560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLint *params_base = (GLint *) 0;
3770560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _remaining;
3771560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLint *params = (GLint *) 0;
3772560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
3773560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (!params_ref) {
3774560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _exception = 1;
37752545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
37762545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "params == null";
3777560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
3778560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
3779560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (offset < 0) {
3780560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _exception = 1;
37812545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
37822545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "offset < 0";
3783560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
3784560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
3785560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    _remaining = _env->GetArrayLength(params_ref) - offset;
3786560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (_remaining < 1) {
3787560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _exception = 1;
37882545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
37892545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "length - offset < 1 < needed";
3790560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
3791560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
3792560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    params_base = (GLint *)
3793560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _env->GetPrimitiveArrayCritical(params_ref, (jboolean *)0);
3794560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    params = params_base + offset;
3795560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
3796560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glGetTexParameteriv(
3797560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLenum)target,
3798560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLenum)pname,
3799560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLint *)params
3800560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
3801560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
3802560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichexit:
3803560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (params_base) {
3804560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _env->ReleasePrimitiveArrayCritical(params_ref, params_base,
3805560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich            _exception ? JNI_ABORT: 0);
3806560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
38072545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    if (_exception) {
38082545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        jniThrowException(_env, _exceptionType, _exceptionMessage);
38092545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    }
3810560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
3811560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
3812560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glGetTexParameteriv ( GLenum target, GLenum pname, GLint *params ) */
3813560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
3814560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glGetTexParameteriv__IILjava_nio_IntBuffer_2
3815560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint target, jint pname, jobject params_buf) {
3816560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _exception = 0;
38172545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    const char * _exceptionType;
38182545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    const char * _exceptionMessage;
3819560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jarray _array = (jarray) 0;
382017045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    jint _bufferOffset = (jint) 0;
3821560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _remaining;
3822560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLint *params = (GLint *) 0;
3823560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
382417045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    params = (GLint *)getPointer(_env, params_buf, &_array, &_remaining, &_bufferOffset);
3825560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (_remaining < 1) {
3826560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _exception = 1;
38272545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
38282545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "remaining() < 1 < needed";
3829560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
3830560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
383117045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    if (params == NULL) {
383217045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        char * _paramsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
383317045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        params = (GLint *) (_paramsBase + _bufferOffset);
383417045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    }
3835560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glGetTexParameteriv(
3836560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLenum)target,
3837560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLenum)pname,
3838560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLint *)params
3839560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
3840560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
3841560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichexit:
3842560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (_array) {
3843560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        releasePointer(_env, _array, params, _exception ? JNI_FALSE : JNI_TRUE);
3844560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
38452545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    if (_exception) {
38462545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        jniThrowException(_env, _exceptionType, _exceptionMessage);
38472545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    }
3848560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
3849560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
3850560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glGetUniformfv ( GLuint program, GLint location, GLfloat *params ) */
3851560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
3852560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glGetUniformfv__II_3FI
3853560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint program, jint location, jfloatArray params_ref, jint offset) {
3854560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _exception = 0;
38552545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    const char * _exceptionType;
38562545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    const char * _exceptionMessage;
3857560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLfloat *params_base = (GLfloat *) 0;
3858560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _remaining;
3859560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLfloat *params = (GLfloat *) 0;
3860560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
3861560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (!params_ref) {
3862560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _exception = 1;
38632545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
38642545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "params == null";
3865560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
3866560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
3867560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (offset < 0) {
3868560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _exception = 1;
38692545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
38702545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "offset < 0";
3871560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
3872560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
3873560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    _remaining = _env->GetArrayLength(params_ref) - offset;
3874560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    params_base = (GLfloat *)
3875560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _env->GetPrimitiveArrayCritical(params_ref, (jboolean *)0);
3876560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    params = params_base + offset;
3877560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
3878560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glGetUniformfv(
3879560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLuint)program,
3880560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLint)location,
3881560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLfloat *)params
3882560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
3883560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
3884560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichexit:
3885560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (params_base) {
3886560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _env->ReleasePrimitiveArrayCritical(params_ref, params_base,
3887560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich            _exception ? JNI_ABORT: 0);
3888560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
38892545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    if (_exception) {
38902545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        jniThrowException(_env, _exceptionType, _exceptionMessage);
38912545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    }
3892560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
3893560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
3894560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glGetUniformfv ( GLuint program, GLint location, GLfloat *params ) */
3895560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
3896560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glGetUniformfv__IILjava_nio_FloatBuffer_2
3897560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint program, jint location, jobject params_buf) {
3898560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jarray _array = (jarray) 0;
389917045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    jint _bufferOffset = (jint) 0;
3900560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _remaining;
3901560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLfloat *params = (GLfloat *) 0;
3902560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
390317045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    params = (GLfloat *)getPointer(_env, params_buf, &_array, &_remaining, &_bufferOffset);
390417045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    if (params == NULL) {
390517045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        char * _paramsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
390617045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        params = (GLfloat *) (_paramsBase + _bufferOffset);
390717045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    }
3908560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glGetUniformfv(
3909560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLuint)program,
3910560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLint)location,
3911560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLfloat *)params
3912560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
3913560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (_array) {
39142545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        releasePointer(_env, _array, params, JNI_TRUE);
3915560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
3916560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
3917560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
3918560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glGetUniformiv ( GLuint program, GLint location, GLint *params ) */
3919560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
3920560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glGetUniformiv__II_3II
3921560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint program, jint location, jintArray params_ref, jint offset) {
3922560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _exception = 0;
39232545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    const char * _exceptionType;
39242545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    const char * _exceptionMessage;
3925560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLint *params_base = (GLint *) 0;
3926560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _remaining;
3927560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLint *params = (GLint *) 0;
3928560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
3929560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (!params_ref) {
3930560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _exception = 1;
39312545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
39322545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "params == null";
3933560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
3934560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
3935560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (offset < 0) {
3936560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _exception = 1;
39372545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
39382545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "offset < 0";
3939560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
3940560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
3941560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    _remaining = _env->GetArrayLength(params_ref) - offset;
3942560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    params_base = (GLint *)
3943560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _env->GetPrimitiveArrayCritical(params_ref, (jboolean *)0);
3944560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    params = params_base + offset;
3945560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
3946560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glGetUniformiv(
3947560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLuint)program,
3948560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLint)location,
3949560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLint *)params
3950560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
3951560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
3952560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichexit:
3953560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (params_base) {
3954560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _env->ReleasePrimitiveArrayCritical(params_ref, params_base,
3955560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich            _exception ? JNI_ABORT: 0);
3956560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
39572545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    if (_exception) {
39582545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        jniThrowException(_env, _exceptionType, _exceptionMessage);
39592545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    }
3960560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
3961560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
3962560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glGetUniformiv ( GLuint program, GLint location, GLint *params ) */
3963560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
3964560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glGetUniformiv__IILjava_nio_IntBuffer_2
3965560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint program, jint location, jobject params_buf) {
3966560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jarray _array = (jarray) 0;
396717045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    jint _bufferOffset = (jint) 0;
3968560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _remaining;
3969560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLint *params = (GLint *) 0;
3970560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
397117045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    params = (GLint *)getPointer(_env, params_buf, &_array, &_remaining, &_bufferOffset);
397217045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    if (params == NULL) {
397317045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        char * _paramsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
397417045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        params = (GLint *) (_paramsBase + _bufferOffset);
397517045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    }
3976560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glGetUniformiv(
3977560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLuint)program,
3978560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLint)location,
3979560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLint *)params
3980560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
3981560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (_array) {
39822545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        releasePointer(_env, _array, params, JNI_TRUE);
3983560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
3984560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
3985560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
3986560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* int glGetUniformLocation ( GLuint program, const char *name ) */
3987560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic jint
3988560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glGetUniformLocation__ILjava_lang_String_2
3989560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint program, jstring name) {
39902545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    jint _exception = 0;
39912545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    const char * _exceptionType;
39922545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    const char * _exceptionMessage;
3993560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    int _returnValue = 0;
3994560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    const char* _nativename = 0;
3995560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
3996560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (!name) {
39972545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
39982545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "name == null";
3999560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
4000560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
4001560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    _nativename = _env->GetStringUTFChars(name, 0);
4002560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
4003560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    _returnValue = glGetUniformLocation(
4004560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLuint)program,
4005560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (char *)_nativename
4006560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
4007560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
4008560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichexit:
4009560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (_nativename) {
4010560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _env->ReleaseStringUTFChars(name, _nativename);
4011560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
4012560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
40132545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    if (_exception) {
40142545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        jniThrowException(_env, _exceptionType, _exceptionMessage);
40152545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    }
4016560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    return _returnValue;
4017560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
4018560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
4019560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glGetVertexAttribfv ( GLuint index, GLenum pname, GLfloat *params ) */
4020560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
4021560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glGetVertexAttribfv__II_3FI
4022560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint index, jint pname, jfloatArray params_ref, jint offset) {
4023560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _exception = 0;
40242545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    const char * _exceptionType;
40252545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    const char * _exceptionMessage;
4026560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLfloat *params_base = (GLfloat *) 0;
4027560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _remaining;
4028560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLfloat *params = (GLfloat *) 0;
4029560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
4030560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (!params_ref) {
4031560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _exception = 1;
40322545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
40332545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "params == null";
4034560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
4035560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
4036560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (offset < 0) {
4037560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _exception = 1;
40382545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
40392545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "offset < 0";
4040560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
4041560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
4042560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    _remaining = _env->GetArrayLength(params_ref) - offset;
4043560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    params_base = (GLfloat *)
4044560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _env->GetPrimitiveArrayCritical(params_ref, (jboolean *)0);
4045560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    params = params_base + offset;
4046560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
4047560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glGetVertexAttribfv(
4048560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLuint)index,
4049560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLenum)pname,
4050560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLfloat *)params
4051560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
4052560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
4053560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichexit:
4054560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (params_base) {
4055560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _env->ReleasePrimitiveArrayCritical(params_ref, params_base,
4056560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich            _exception ? JNI_ABORT: 0);
4057560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
40582545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    if (_exception) {
40592545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        jniThrowException(_env, _exceptionType, _exceptionMessage);
40602545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    }
4061560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
4062560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
4063560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glGetVertexAttribfv ( GLuint index, GLenum pname, GLfloat *params ) */
4064560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
4065560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glGetVertexAttribfv__IILjava_nio_FloatBuffer_2
4066560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint index, jint pname, jobject params_buf) {
4067560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jarray _array = (jarray) 0;
406817045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    jint _bufferOffset = (jint) 0;
4069560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _remaining;
4070560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLfloat *params = (GLfloat *) 0;
4071560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
407217045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    params = (GLfloat *)getPointer(_env, params_buf, &_array, &_remaining, &_bufferOffset);
407317045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    if (params == NULL) {
407417045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        char * _paramsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
407517045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        params = (GLfloat *) (_paramsBase + _bufferOffset);
407617045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    }
4077560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glGetVertexAttribfv(
4078560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLuint)index,
4079560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLenum)pname,
4080560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLfloat *)params
4081560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
4082560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (_array) {
40832545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        releasePointer(_env, _array, params, JNI_TRUE);
4084560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
4085560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
4086560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
4087560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glGetVertexAttribiv ( GLuint index, GLenum pname, GLint *params ) */
4088560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
4089560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glGetVertexAttribiv__II_3II
4090560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint index, jint pname, jintArray params_ref, jint offset) {
4091560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _exception = 0;
40922545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    const char * _exceptionType;
40932545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    const char * _exceptionMessage;
4094560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLint *params_base = (GLint *) 0;
4095560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _remaining;
4096560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLint *params = (GLint *) 0;
4097560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
4098560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (!params_ref) {
4099560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _exception = 1;
41002545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
41012545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "params == null";
4102560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
4103560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
4104560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (offset < 0) {
4105560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _exception = 1;
41062545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
41072545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "offset < 0";
4108560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
4109560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
4110560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    _remaining = _env->GetArrayLength(params_ref) - offset;
4111560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    params_base = (GLint *)
4112560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _env->GetPrimitiveArrayCritical(params_ref, (jboolean *)0);
4113560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    params = params_base + offset;
4114560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
4115560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glGetVertexAttribiv(
4116560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLuint)index,
4117560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLenum)pname,
4118560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLint *)params
4119560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
4120560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
4121560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichexit:
4122560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (params_base) {
4123560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _env->ReleasePrimitiveArrayCritical(params_ref, params_base,
4124560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich            _exception ? JNI_ABORT: 0);
4125560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
41262545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    if (_exception) {
41272545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        jniThrowException(_env, _exceptionType, _exceptionMessage);
41282545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    }
4129560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
4130560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
4131560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glGetVertexAttribiv ( GLuint index, GLenum pname, GLint *params ) */
4132560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
4133560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glGetVertexAttribiv__IILjava_nio_IntBuffer_2
4134560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint index, jint pname, jobject params_buf) {
4135560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jarray _array = (jarray) 0;
413617045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    jint _bufferOffset = (jint) 0;
4137560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _remaining;
4138560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLint *params = (GLint *) 0;
4139560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
414017045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    params = (GLint *)getPointer(_env, params_buf, &_array, &_remaining, &_bufferOffset);
414117045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    if (params == NULL) {
414217045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        char * _paramsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
414317045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        params = (GLint *) (_paramsBase + _bufferOffset);
414417045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    }
4145560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glGetVertexAttribiv(
4146560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLuint)index,
4147560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLenum)pname,
4148560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLint *)params
4149560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
4150560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (_array) {
41512545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        releasePointer(_env, _array, params, JNI_TRUE);
4152560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
4153560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
4154560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
4155560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glHint ( GLenum target, GLenum mode ) */
4156560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
4157560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glHint__II
4158560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint target, jint mode) {
4159560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glHint(
4160560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLenum)target,
4161560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLenum)mode
4162560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
4163560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
4164560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
4165560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* GLboolean glIsBuffer ( GLuint buffer ) */
4166560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic jboolean
4167560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glIsBuffer__I
4168560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint buffer) {
4169560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLboolean _returnValue;
4170560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    _returnValue = glIsBuffer(
4171560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLuint)buffer
4172560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
4173560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    return _returnValue;
4174560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
4175560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
4176560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* GLboolean glIsEnabled ( GLenum cap ) */
4177560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic jboolean
4178560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glIsEnabled__I
4179560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint cap) {
4180560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLboolean _returnValue;
4181560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    _returnValue = glIsEnabled(
4182560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLenum)cap
4183560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
4184560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    return _returnValue;
4185560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
4186560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
4187560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* GLboolean glIsFramebuffer ( GLuint framebuffer ) */
4188560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic jboolean
4189560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glIsFramebuffer__I
4190560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint framebuffer) {
4191560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLboolean _returnValue;
4192560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    _returnValue = glIsFramebuffer(
4193560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLuint)framebuffer
4194560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
4195560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    return _returnValue;
4196560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
4197560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
4198560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* GLboolean glIsProgram ( GLuint program ) */
4199560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic jboolean
4200560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glIsProgram__I
4201560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint program) {
4202560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLboolean _returnValue;
4203560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    _returnValue = glIsProgram(
4204560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLuint)program
4205560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
4206560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    return _returnValue;
4207560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
4208560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
4209560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* GLboolean glIsRenderbuffer ( GLuint renderbuffer ) */
4210560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic jboolean
4211560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glIsRenderbuffer__I
4212560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint renderbuffer) {
4213560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLboolean _returnValue;
4214560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    _returnValue = glIsRenderbuffer(
4215560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLuint)renderbuffer
4216560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
4217560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    return _returnValue;
4218560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
4219560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
4220560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* GLboolean glIsShader ( GLuint shader ) */
4221560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic jboolean
4222560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glIsShader__I
4223560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint shader) {
4224560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLboolean _returnValue;
4225560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    _returnValue = glIsShader(
4226560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLuint)shader
4227560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
4228560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    return _returnValue;
4229560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
4230560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
4231560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* GLboolean glIsTexture ( GLuint texture ) */
4232560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic jboolean
4233560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glIsTexture__I
4234560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint texture) {
4235560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLboolean _returnValue;
4236560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    _returnValue = glIsTexture(
4237560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLuint)texture
4238560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
4239560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    return _returnValue;
4240560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
4241560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
4242560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glLineWidth ( GLfloat width ) */
4243560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
4244560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glLineWidth__F
4245560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jfloat width) {
4246560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glLineWidth(
4247560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLfloat)width
4248560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
4249560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
4250560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
4251560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glLinkProgram ( GLuint program ) */
4252560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
4253560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glLinkProgram__I
4254560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint program) {
4255560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glLinkProgram(
4256560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLuint)program
4257560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
4258560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
4259560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
4260560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glPixelStorei ( GLenum pname, GLint param ) */
4261560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
4262560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glPixelStorei__II
4263560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint pname, jint param) {
4264560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glPixelStorei(
4265560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLenum)pname,
4266560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLint)param
4267560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
4268560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
4269560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
4270560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glPolygonOffset ( GLfloat factor, GLfloat units ) */
4271560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
4272560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glPolygonOffset__FF
4273560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jfloat factor, jfloat units) {
4274560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glPolygonOffset(
4275560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLfloat)factor,
4276560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLfloat)units
4277560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
4278560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
4279560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
4280560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glReadPixels ( GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLvoid *pixels ) */
4281560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
4282560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glReadPixels__IIIIIILjava_nio_Buffer_2
4283560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint x, jint y, jint width, jint height, jint format, jint type, jobject pixels_buf) {
4284560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jarray _array = (jarray) 0;
428517045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    jint _bufferOffset = (jint) 0;
4286560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _remaining;
4287560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLvoid *pixels = (GLvoid *) 0;
4288560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
428917045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    pixels = (GLvoid *)getPointer(_env, pixels_buf, &_array, &_remaining, &_bufferOffset);
429017045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    if (pixels == NULL) {
429117045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        char * _pixelsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
429217045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        pixels = (GLvoid *) (_pixelsBase + _bufferOffset);
429317045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    }
4294560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glReadPixels(
4295560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLint)x,
4296560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLint)y,
4297560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLsizei)width,
4298560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLsizei)height,
4299560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLenum)format,
4300560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLenum)type,
4301560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLvoid *)pixels
4302560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
4303560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (_array) {
43042545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        releasePointer(_env, _array, pixels, JNI_TRUE);
4305560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
4306560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
4307560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
4308560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glReleaseShaderCompiler ( void ) */
4309560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
4310560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glReleaseShaderCompiler__
4311560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this) {
4312560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glReleaseShaderCompiler();
4313560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
4314560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
4315560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glRenderbufferStorage ( GLenum target, GLenum internalformat, GLsizei width, GLsizei height ) */
4316560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
4317560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glRenderbufferStorage__IIII
4318560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint target, jint internalformat, jint width, jint height) {
4319560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glRenderbufferStorage(
4320560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLenum)target,
4321560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLenum)internalformat,
4322560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLsizei)width,
4323560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLsizei)height
4324560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
4325560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
4326560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
4327560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glSampleCoverage ( GLclampf value, GLboolean invert ) */
4328560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
4329560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glSampleCoverage__FZ
4330560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jfloat value, jboolean invert) {
4331560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glSampleCoverage(
4332560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLclampf)value,
4333560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLboolean)invert
4334560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
4335560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
4336560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
4337560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glScissor ( GLint x, GLint y, GLsizei width, GLsizei height ) */
4338560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
4339560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glScissor__IIII
4340560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint x, jint y, jint width, jint height) {
4341560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glScissor(
4342560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLint)x,
4343560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLint)y,
4344560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLsizei)width,
4345560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLsizei)height
4346560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
4347560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
4348560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
4349560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glShaderBinary ( GLsizei n, const GLuint *shaders, GLenum binaryformat, const GLvoid *binary, GLsizei length ) */
4350560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
4351560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glShaderBinary__I_3IIILjava_nio_Buffer_2I
4352560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint n, jintArray shaders_ref, jint offset, jint binaryformat, jobject binary_buf, jint length) {
43532545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    jint _exception = 0;
43542545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    const char * _exceptionType;
43552545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    const char * _exceptionMessage;
4356560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jarray _array = (jarray) 0;
435717045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    jint _bufferOffset = (jint) 0;
4358560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLuint *shaders_base = (GLuint *) 0;
4359560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _shadersRemaining;
4360560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLuint *shaders = (GLuint *) 0;
4361560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _binaryRemaining;
4362560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLvoid *binary = (GLvoid *) 0;
4363560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
4364560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (!shaders_ref) {
43652545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exception = 1;
43662545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
43672545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "shaders == null";
4368560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
4369560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
4370560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (offset < 0) {
43712545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exception = 1;
43722545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
43732545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "offset < 0";
4374560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
4375560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
4376560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    _shadersRemaining = _env->GetArrayLength(shaders_ref) - offset;
4377560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    shaders_base = (GLuint *)
4378560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _env->GetPrimitiveArrayCritical(shaders_ref, (jboolean *)0);
4379560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    shaders = shaders_base + offset;
4380560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
438117045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    binary = (GLvoid *)getPointer(_env, binary_buf, &_array, &_binaryRemaining, &_bufferOffset);
438217045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    if (binary == NULL) {
438317045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        char * _binaryBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
438417045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        binary = (GLvoid *) (_binaryBase + _bufferOffset);
438517045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    }
4386560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glShaderBinary(
4387560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLsizei)n,
4388560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLuint *)shaders,
4389560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLenum)binaryformat,
4390560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLvoid *)binary,
4391560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLsizei)length
4392560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
4393560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
4394560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichexit:
4395560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (_array) {
4396560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        releasePointer(_env, _array, binary, JNI_FALSE);
4397560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
4398560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (shaders_base) {
4399560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _env->ReleasePrimitiveArrayCritical(shaders_ref, shaders_base,
4400560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich            JNI_ABORT);
4401560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
44022545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    if (_exception) {
44032545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        jniThrowException(_env, _exceptionType, _exceptionMessage);
44042545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    }
4405560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
4406560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
4407560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glShaderBinary ( GLsizei n, const GLuint *shaders, GLenum binaryformat, const GLvoid *binary, GLsizei length ) */
4408560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
4409560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glShaderBinary__ILjava_nio_IntBuffer_2ILjava_nio_Buffer_2I
4410560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint n, jobject shaders_buf, jint binaryformat, jobject binary_buf, jint length) {
4411560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jarray _shadersArray = (jarray) 0;
441217045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    jint _shadersBufferOffset = (jint) 0;
4413560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jarray _binaryArray = (jarray) 0;
441417045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    jint _binaryBufferOffset = (jint) 0;
4415560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _shadersRemaining;
4416560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLuint *shaders = (GLuint *) 0;
4417560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _binaryRemaining;
4418560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLvoid *binary = (GLvoid *) 0;
4419560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
442017045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    shaders = (GLuint *)getPointer(_env, shaders_buf, &_shadersArray, &_shadersRemaining, &_shadersBufferOffset);
442117045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    binary = (GLvoid *)getPointer(_env, binary_buf, &_binaryArray, &_binaryRemaining, &_binaryBufferOffset);
442217045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    if (shaders == NULL) {
442317045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        char * _shadersBase = (char *)_env->GetPrimitiveArrayCritical(_shadersArray, (jboolean *) 0);
442417045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        shaders = (GLuint *) (_shadersBase + _shadersBufferOffset);
442517045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    }
442617045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    if (binary == NULL) {
442717045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        char * _binaryBase = (char *)_env->GetPrimitiveArrayCritical(_binaryArray, (jboolean *) 0);
442817045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        binary = (GLvoid *) (_binaryBase + _binaryBufferOffset);
442917045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    }
4430560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glShaderBinary(
4431560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLsizei)n,
4432560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLuint *)shaders,
4433560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLenum)binaryformat,
4434560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLvoid *)binary,
4435560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLsizei)length
4436560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
4437560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (_binaryArray) {
443817045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        releasePointer(_env, _binaryArray, binary, JNI_FALSE);
443917045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    }
444017045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    if (_shadersArray) {
444117045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        releasePointer(_env, _shadersArray, shaders, JNI_FALSE);
4442560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
4443560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
4444560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
4445560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
4446560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glShaderSource ( GLuint shader, GLsizei count, const GLchar ** string, const GLint * length ) */
4447560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic
4448560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichvoid
4449560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glShaderSource
4450560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    (JNIEnv *_env, jobject _this, jint shader, jstring string) {
4451560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
4452560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (!string) {
445324ce5fb2cc09d0a14406e7b935f8648c5720d27eElliott Hughes        jniThrowException(_env, "java/lang/IllegalArgumentException", "string == null");
4454560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        return;
4455560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
4456560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
4457560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    const char* nativeString = _env->GetStringUTFChars(string, 0);
4458560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    const char* strings[] = {nativeString};
4459560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glShaderSource(shader, 1, strings, 0);
4460560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    _env->ReleaseStringUTFChars(string, nativeString);
4461560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
4462560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glStencilFunc ( GLenum func, GLint ref, GLuint mask ) */
4463560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
4464560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glStencilFunc__III
4465560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint func, jint ref, jint mask) {
4466560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glStencilFunc(
4467560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLenum)func,
4468560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLint)ref,
4469560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLuint)mask
4470560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
4471560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
4472560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
4473560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glStencilFuncSeparate ( GLenum face, GLenum func, GLint ref, GLuint mask ) */
4474560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
4475560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glStencilFuncSeparate__IIII
4476560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint face, jint func, jint ref, jint mask) {
4477560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glStencilFuncSeparate(
4478560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLenum)face,
4479560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLenum)func,
4480560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLint)ref,
4481560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLuint)mask
4482560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
4483560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
4484560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
4485560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glStencilMask ( GLuint mask ) */
4486560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
4487560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glStencilMask__I
4488560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint mask) {
4489560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glStencilMask(
4490560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLuint)mask
4491560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
4492560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
4493560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
4494560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glStencilMaskSeparate ( GLenum face, GLuint mask ) */
4495560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
4496560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glStencilMaskSeparate__II
4497560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint face, jint mask) {
4498560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glStencilMaskSeparate(
4499560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLenum)face,
4500560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLuint)mask
4501560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
4502560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
4503560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
4504560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glStencilOp ( GLenum fail, GLenum zfail, GLenum zpass ) */
4505560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
4506560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glStencilOp__III
4507560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint fail, jint zfail, jint zpass) {
4508560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glStencilOp(
4509560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLenum)fail,
4510560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLenum)zfail,
4511560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLenum)zpass
4512560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
4513560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
4514560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
4515560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glStencilOpSeparate ( GLenum face, GLenum fail, GLenum zfail, GLenum zpass ) */
4516560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
4517560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glStencilOpSeparate__IIII
4518560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint face, jint fail, jint zfail, jint zpass) {
4519560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glStencilOpSeparate(
4520560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLenum)face,
4521560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLenum)fail,
4522560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLenum)zfail,
4523560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLenum)zpass
4524560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
4525560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
4526560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
4527560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glTexImage2D ( GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const GLvoid *pixels ) */
4528560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
4529560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glTexImage2D__IIIIIIIILjava_nio_Buffer_2
4530560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint target, jint level, jint internalformat, jint width, jint height, jint border, jint format, jint type, jobject pixels_buf) {
4531560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jarray _array = (jarray) 0;
453217045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    jint _bufferOffset = (jint) 0;
4533560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _remaining;
4534560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLvoid *pixels = (GLvoid *) 0;
4535560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
4536560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (pixels_buf) {
453717045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        pixels = (GLvoid *)getPointer(_env, pixels_buf, &_array, &_remaining, &_bufferOffset);
453817045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    }
453917045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    if (pixels == NULL) {
454017045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        char * _pixelsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
454117045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        pixels = (GLvoid *) (_pixelsBase + _bufferOffset);
4542560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
4543560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glTexImage2D(
4544560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLenum)target,
4545560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLint)level,
4546560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLint)internalformat,
4547560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLsizei)width,
4548560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLsizei)height,
4549560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLint)border,
4550560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLenum)format,
4551560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLenum)type,
4552560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLvoid *)pixels
4553560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
4554560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (_array) {
4555560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        releasePointer(_env, _array, pixels, JNI_FALSE);
4556560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
4557560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
4558560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
4559560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glTexParameterf ( GLenum target, GLenum pname, GLfloat param ) */
4560560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
4561560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glTexParameterf__IIF
4562560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint target, jint pname, jfloat param) {
4563560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glTexParameterf(
4564560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLenum)target,
4565560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLenum)pname,
4566560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLfloat)param
4567560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
4568560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
4569560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
4570560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glTexParameterfv ( GLenum target, GLenum pname, const GLfloat *params ) */
4571560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
4572560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glTexParameterfv__II_3FI
4573560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint target, jint pname, jfloatArray params_ref, jint offset) {
45742545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    jint _exception = 0;
45752545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    const char * _exceptionType;
45762545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    const char * _exceptionMessage;
4577560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLfloat *params_base = (GLfloat *) 0;
4578560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _remaining;
4579560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLfloat *params = (GLfloat *) 0;
4580560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
4581560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (!params_ref) {
45822545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exception = 1;
45832545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
45842545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "params == null";
4585560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
4586560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
4587560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (offset < 0) {
45882545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exception = 1;
45892545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
45902545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "offset < 0";
4591560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
4592560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
4593560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    _remaining = _env->GetArrayLength(params_ref) - offset;
4594560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (_remaining < 1) {
45952545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exception = 1;
45962545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
45972545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "length - offset < 1 < needed";
4598560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
4599560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
4600560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    params_base = (GLfloat *)
4601560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _env->GetPrimitiveArrayCritical(params_ref, (jboolean *)0);
4602560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    params = params_base + offset;
4603560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
4604560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glTexParameterfv(
4605560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLenum)target,
4606560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLenum)pname,
4607560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLfloat *)params
4608560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
4609560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
4610560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichexit:
4611560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (params_base) {
4612560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _env->ReleasePrimitiveArrayCritical(params_ref, params_base,
4613560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich            JNI_ABORT);
4614560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
46152545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    if (_exception) {
46162545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        jniThrowException(_env, _exceptionType, _exceptionMessage);
46172545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    }
4618560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
4619560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
4620560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glTexParameterfv ( GLenum target, GLenum pname, const GLfloat *params ) */
4621560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
4622560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glTexParameterfv__IILjava_nio_FloatBuffer_2
4623560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint target, jint pname, jobject params_buf) {
46242545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    jint _exception = 0;
46252545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    const char * _exceptionType;
46262545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    const char * _exceptionMessage;
4627560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jarray _array = (jarray) 0;
462817045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    jint _bufferOffset = (jint) 0;
4629560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _remaining;
4630560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLfloat *params = (GLfloat *) 0;
4631560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
463217045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    params = (GLfloat *)getPointer(_env, params_buf, &_array, &_remaining, &_bufferOffset);
4633560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (_remaining < 1) {
46342545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exception = 1;
46352545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
46362545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "remaining() < 1 < needed";
4637560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
4638560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
463917045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    if (params == NULL) {
464017045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        char * _paramsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
464117045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        params = (GLfloat *) (_paramsBase + _bufferOffset);
464217045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    }
4643560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glTexParameterfv(
4644560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLenum)target,
4645560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLenum)pname,
4646560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLfloat *)params
4647560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
4648560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
4649560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichexit:
4650560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (_array) {
4651560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        releasePointer(_env, _array, params, JNI_FALSE);
4652560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
46532545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    if (_exception) {
46542545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        jniThrowException(_env, _exceptionType, _exceptionMessage);
46552545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    }
4656560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
4657560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
4658560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glTexParameteri ( GLenum target, GLenum pname, GLint param ) */
4659560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
4660560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glTexParameteri__III
4661560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint target, jint pname, jint param) {
4662560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glTexParameteri(
4663560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLenum)target,
4664560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLenum)pname,
4665560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLint)param
4666560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
4667560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
4668560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
4669560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glTexParameteriv ( GLenum target, GLenum pname, const GLint *params ) */
4670560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
4671560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glTexParameteriv__II_3II
4672560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint target, jint pname, jintArray params_ref, jint offset) {
46732545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    jint _exception = 0;
46742545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    const char * _exceptionType;
46752545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    const char * _exceptionMessage;
4676560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLint *params_base = (GLint *) 0;
4677560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _remaining;
4678560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLint *params = (GLint *) 0;
4679560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
4680560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (!params_ref) {
46812545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exception = 1;
46822545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
46832545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "params == null";
4684560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
4685560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
4686560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (offset < 0) {
46872545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exception = 1;
46882545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
46892545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "offset < 0";
4690560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
4691560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
4692560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    _remaining = _env->GetArrayLength(params_ref) - offset;
4693560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (_remaining < 1) {
46942545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exception = 1;
46952545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
46962545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "length - offset < 1 < needed";
4697560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
4698560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
4699560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    params_base = (GLint *)
4700560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _env->GetPrimitiveArrayCritical(params_ref, (jboolean *)0);
4701560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    params = params_base + offset;
4702560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
4703560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glTexParameteriv(
4704560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLenum)target,
4705560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLenum)pname,
4706560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLint *)params
4707560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
4708560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
4709560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichexit:
4710560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (params_base) {
4711560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _env->ReleasePrimitiveArrayCritical(params_ref, params_base,
4712560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich            JNI_ABORT);
4713560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
47142545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    if (_exception) {
47152545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        jniThrowException(_env, _exceptionType, _exceptionMessage);
47162545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    }
4717560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
4718560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
4719560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glTexParameteriv ( GLenum target, GLenum pname, const GLint *params ) */
4720560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
4721560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glTexParameteriv__IILjava_nio_IntBuffer_2
4722560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint target, jint pname, jobject params_buf) {
47232545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    jint _exception = 0;
47242545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    const char * _exceptionType;
47252545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    const char * _exceptionMessage;
4726560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jarray _array = (jarray) 0;
472717045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    jint _bufferOffset = (jint) 0;
4728560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _remaining;
4729560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLint *params = (GLint *) 0;
4730560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
473117045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    params = (GLint *)getPointer(_env, params_buf, &_array, &_remaining, &_bufferOffset);
4732560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (_remaining < 1) {
47332545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exception = 1;
47342545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
47352545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "remaining() < 1 < needed";
4736560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
4737560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
473817045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    if (params == NULL) {
473917045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        char * _paramsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
474017045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        params = (GLint *) (_paramsBase + _bufferOffset);
474117045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    }
4742560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glTexParameteriv(
4743560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLenum)target,
4744560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLenum)pname,
4745560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLint *)params
4746560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
4747560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
4748560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichexit:
4749560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (_array) {
4750560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        releasePointer(_env, _array, params, JNI_FALSE);
4751560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
47522545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    if (_exception) {
47532545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        jniThrowException(_env, _exceptionType, _exceptionMessage);
47542545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    }
4755560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
4756560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
4757560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glTexSubImage2D ( GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels ) */
4758560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
4759560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glTexSubImage2D__IIIIIIIILjava_nio_Buffer_2
4760560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint target, jint level, jint xoffset, jint yoffset, jint width, jint height, jint format, jint type, jobject pixels_buf) {
4761560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jarray _array = (jarray) 0;
476217045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    jint _bufferOffset = (jint) 0;
4763560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _remaining;
4764560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLvoid *pixels = (GLvoid *) 0;
4765560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
4766560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (pixels_buf) {
476717045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        pixels = (GLvoid *)getPointer(_env, pixels_buf, &_array, &_remaining, &_bufferOffset);
476817045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    }
476917045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    if (pixels == NULL) {
477017045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        char * _pixelsBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
477117045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        pixels = (GLvoid *) (_pixelsBase + _bufferOffset);
4772560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
4773560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glTexSubImage2D(
4774560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLenum)target,
4775560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLint)level,
4776560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLint)xoffset,
4777560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLint)yoffset,
4778560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLsizei)width,
4779560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLsizei)height,
4780560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLenum)format,
4781560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLenum)type,
4782560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLvoid *)pixels
4783560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
4784560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (_array) {
4785560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        releasePointer(_env, _array, pixels, JNI_FALSE);
4786560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
4787560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
4788560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
4789560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glUniform1f ( GLint location, GLfloat x ) */
4790560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
4791560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glUniform1f__IF
4792560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint location, jfloat x) {
4793560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glUniform1f(
4794560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLint)location,
4795560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLfloat)x
4796560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
4797560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
4798560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
4799560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glUniform1fv ( GLint location, GLsizei count, const GLfloat *v ) */
4800560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
4801560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glUniform1fv__II_3FI
4802560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint location, jint count, jfloatArray v_ref, jint offset) {
48032545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    jint _exception = 0;
48042545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    const char * _exceptionType;
48052545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    const char * _exceptionMessage;
4806560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLfloat *v_base = (GLfloat *) 0;
4807560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _remaining;
4808560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLfloat *v = (GLfloat *) 0;
4809560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
4810560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (!v_ref) {
48112545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exception = 1;
48122545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
48132545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "v == null";
4814560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
4815560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
4816560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (offset < 0) {
48172545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exception = 1;
48182545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
48192545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "offset < 0";
4820560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
4821560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
4822560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    _remaining = _env->GetArrayLength(v_ref) - offset;
4823560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    v_base = (GLfloat *)
4824560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _env->GetPrimitiveArrayCritical(v_ref, (jboolean *)0);
4825560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    v = v_base + offset;
4826560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
4827560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glUniform1fv(
4828560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLint)location,
4829560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLsizei)count,
4830560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLfloat *)v
4831560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
4832560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
4833560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichexit:
4834560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (v_base) {
4835560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _env->ReleasePrimitiveArrayCritical(v_ref, v_base,
4836560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich            JNI_ABORT);
4837560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
48382545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    if (_exception) {
48392545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        jniThrowException(_env, _exceptionType, _exceptionMessage);
48402545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    }
4841560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
4842560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
4843560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glUniform1fv ( GLint location, GLsizei count, const GLfloat *v ) */
4844560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
4845560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glUniform1fv__IILjava_nio_FloatBuffer_2
4846560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint location, jint count, jobject v_buf) {
4847560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jarray _array = (jarray) 0;
484817045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    jint _bufferOffset = (jint) 0;
4849560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _remaining;
4850560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLfloat *v = (GLfloat *) 0;
4851560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
485217045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    v = (GLfloat *)getPointer(_env, v_buf, &_array, &_remaining, &_bufferOffset);
485317045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    if (v == NULL) {
485417045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        char * _vBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
485517045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        v = (GLfloat *) (_vBase + _bufferOffset);
485617045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    }
4857560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glUniform1fv(
4858560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLint)location,
4859560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLsizei)count,
4860560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLfloat *)v
4861560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
4862560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (_array) {
4863560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        releasePointer(_env, _array, v, JNI_FALSE);
4864560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
4865560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
4866560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
4867560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glUniform1i ( GLint location, GLint x ) */
4868560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
4869560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glUniform1i__II
4870560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint location, jint x) {
4871560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glUniform1i(
4872560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLint)location,
4873560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLint)x
4874560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
4875560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
4876560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
4877560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glUniform1iv ( GLint location, GLsizei count, const GLint *v ) */
4878560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
4879560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glUniform1iv__II_3II
4880560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint location, jint count, jintArray v_ref, jint offset) {
48812545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    jint _exception = 0;
48822545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    const char * _exceptionType;
48832545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    const char * _exceptionMessage;
4884560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLint *v_base = (GLint *) 0;
4885560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _remaining;
4886560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLint *v = (GLint *) 0;
4887560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
4888560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (!v_ref) {
48892545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exception = 1;
48902545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
48912545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "v == null";
4892560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
4893560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
4894560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (offset < 0) {
48952545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exception = 1;
48962545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
48972545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "offset < 0";
4898560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
4899560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
4900560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    _remaining = _env->GetArrayLength(v_ref) - offset;
4901560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    v_base = (GLint *)
4902560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _env->GetPrimitiveArrayCritical(v_ref, (jboolean *)0);
4903560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    v = v_base + offset;
4904560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
4905560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glUniform1iv(
4906560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLint)location,
4907560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLsizei)count,
4908560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLint *)v
4909560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
4910560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
4911560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichexit:
4912560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (v_base) {
4913560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _env->ReleasePrimitiveArrayCritical(v_ref, v_base,
4914560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich            JNI_ABORT);
4915560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
49162545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    if (_exception) {
49172545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        jniThrowException(_env, _exceptionType, _exceptionMessage);
49182545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    }
4919560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
4920560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
4921560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glUniform1iv ( GLint location, GLsizei count, const GLint *v ) */
4922560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
4923560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glUniform1iv__IILjava_nio_IntBuffer_2
4924560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint location, jint count, jobject v_buf) {
4925560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jarray _array = (jarray) 0;
492617045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    jint _bufferOffset = (jint) 0;
4927560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _remaining;
4928560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLint *v = (GLint *) 0;
4929560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
493017045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    v = (GLint *)getPointer(_env, v_buf, &_array, &_remaining, &_bufferOffset);
493117045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    if (v == NULL) {
493217045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        char * _vBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
493317045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        v = (GLint *) (_vBase + _bufferOffset);
493417045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    }
4935560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glUniform1iv(
4936560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLint)location,
4937560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLsizei)count,
4938560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLint *)v
4939560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
4940560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (_array) {
4941560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        releasePointer(_env, _array, v, JNI_FALSE);
4942560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
4943560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
4944560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
4945560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glUniform2f ( GLint location, GLfloat x, GLfloat y ) */
4946560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
4947560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glUniform2f__IFF
4948560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint location, jfloat x, jfloat y) {
4949560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glUniform2f(
4950560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLint)location,
4951560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLfloat)x,
4952560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLfloat)y
4953560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
4954560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
4955560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
4956560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glUniform2fv ( GLint location, GLsizei count, const GLfloat *v ) */
4957560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
4958560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glUniform2fv__II_3FI
4959560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint location, jint count, jfloatArray v_ref, jint offset) {
49602545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    jint _exception = 0;
49612545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    const char * _exceptionType;
49622545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    const char * _exceptionMessage;
4963560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLfloat *v_base = (GLfloat *) 0;
4964560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _remaining;
4965560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLfloat *v = (GLfloat *) 0;
4966560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
4967560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (!v_ref) {
49682545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exception = 1;
49692545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
49702545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "v == null";
4971560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
4972560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
4973560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (offset < 0) {
49742545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exception = 1;
49752545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
49762545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "offset < 0";
4977560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
4978560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
4979560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    _remaining = _env->GetArrayLength(v_ref) - offset;
4980560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    v_base = (GLfloat *)
4981560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _env->GetPrimitiveArrayCritical(v_ref, (jboolean *)0);
4982560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    v = v_base + offset;
4983560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
4984560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glUniform2fv(
4985560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLint)location,
4986560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLsizei)count,
4987560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLfloat *)v
4988560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
4989560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
4990560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichexit:
4991560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (v_base) {
4992560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _env->ReleasePrimitiveArrayCritical(v_ref, v_base,
4993560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich            JNI_ABORT);
4994560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
49952545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    if (_exception) {
49962545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        jniThrowException(_env, _exceptionType, _exceptionMessage);
49972545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    }
4998560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
4999560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
5000560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glUniform2fv ( GLint location, GLsizei count, const GLfloat *v ) */
5001560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
5002560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glUniform2fv__IILjava_nio_FloatBuffer_2
5003560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint location, jint count, jobject v_buf) {
5004560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jarray _array = (jarray) 0;
500517045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    jint _bufferOffset = (jint) 0;
5006560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _remaining;
5007560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLfloat *v = (GLfloat *) 0;
5008560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
500917045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    v = (GLfloat *)getPointer(_env, v_buf, &_array, &_remaining, &_bufferOffset);
501017045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    if (v == NULL) {
501117045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        char * _vBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
501217045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        v = (GLfloat *) (_vBase + _bufferOffset);
501317045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    }
5014560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glUniform2fv(
5015560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLint)location,
5016560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLsizei)count,
5017560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLfloat *)v
5018560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
5019560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (_array) {
5020560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        releasePointer(_env, _array, v, JNI_FALSE);
5021560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
5022560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
5023560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
5024560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glUniform2i ( GLint location, GLint x, GLint y ) */
5025560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
5026560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glUniform2i__III
5027560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint location, jint x, jint y) {
5028560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glUniform2i(
5029560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLint)location,
5030560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLint)x,
5031560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLint)y
5032560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
5033560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
5034560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
5035560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glUniform2iv ( GLint location, GLsizei count, const GLint *v ) */
5036560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
5037560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glUniform2iv__II_3II
5038560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint location, jint count, jintArray v_ref, jint offset) {
50392545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    jint _exception = 0;
50402545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    const char * _exceptionType;
50412545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    const char * _exceptionMessage;
5042560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLint *v_base = (GLint *) 0;
5043560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _remaining;
5044560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLint *v = (GLint *) 0;
5045560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
5046560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (!v_ref) {
50472545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exception = 1;
50482545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
50492545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "v == null";
5050560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
5051560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
5052560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (offset < 0) {
50532545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exception = 1;
50542545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
50552545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "offset < 0";
5056560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
5057560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
5058560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    _remaining = _env->GetArrayLength(v_ref) - offset;
5059560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    v_base = (GLint *)
5060560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _env->GetPrimitiveArrayCritical(v_ref, (jboolean *)0);
5061560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    v = v_base + offset;
5062560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
5063560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glUniform2iv(
5064560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLint)location,
5065560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLsizei)count,
5066560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLint *)v
5067560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
5068560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
5069560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichexit:
5070560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (v_base) {
5071560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _env->ReleasePrimitiveArrayCritical(v_ref, v_base,
5072560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich            JNI_ABORT);
5073560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
50742545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    if (_exception) {
50752545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        jniThrowException(_env, _exceptionType, _exceptionMessage);
50762545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    }
5077560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
5078560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
5079560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glUniform2iv ( GLint location, GLsizei count, const GLint *v ) */
5080560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
5081560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glUniform2iv__IILjava_nio_IntBuffer_2
5082560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint location, jint count, jobject v_buf) {
5083560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jarray _array = (jarray) 0;
508417045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    jint _bufferOffset = (jint) 0;
5085560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _remaining;
5086560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLint *v = (GLint *) 0;
5087560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
508817045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    v = (GLint *)getPointer(_env, v_buf, &_array, &_remaining, &_bufferOffset);
508917045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    if (v == NULL) {
509017045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        char * _vBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
509117045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        v = (GLint *) (_vBase + _bufferOffset);
509217045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    }
5093560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glUniform2iv(
5094560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLint)location,
5095560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLsizei)count,
5096560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLint *)v
5097560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
5098560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (_array) {
5099560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        releasePointer(_env, _array, v, JNI_FALSE);
5100560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
5101560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
5102560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
5103560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glUniform3f ( GLint location, GLfloat x, GLfloat y, GLfloat z ) */
5104560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
5105560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glUniform3f__IFFF
5106560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint location, jfloat x, jfloat y, jfloat z) {
5107560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glUniform3f(
5108560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLint)location,
5109560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLfloat)x,
5110560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLfloat)y,
5111560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLfloat)z
5112560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
5113560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
5114560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
5115560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glUniform3fv ( GLint location, GLsizei count, const GLfloat *v ) */
5116560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
5117560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glUniform3fv__II_3FI
5118560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint location, jint count, jfloatArray v_ref, jint offset) {
51192545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    jint _exception = 0;
51202545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    const char * _exceptionType;
51212545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    const char * _exceptionMessage;
5122560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLfloat *v_base = (GLfloat *) 0;
5123560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _remaining;
5124560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLfloat *v = (GLfloat *) 0;
5125560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
5126560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (!v_ref) {
51272545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exception = 1;
51282545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
51292545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "v == null";
5130560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
5131560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
5132560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (offset < 0) {
51332545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exception = 1;
51342545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
51352545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "offset < 0";
5136560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
5137560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
5138560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    _remaining = _env->GetArrayLength(v_ref) - offset;
5139560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    v_base = (GLfloat *)
5140560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _env->GetPrimitiveArrayCritical(v_ref, (jboolean *)0);
5141560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    v = v_base + offset;
5142560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
5143560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glUniform3fv(
5144560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLint)location,
5145560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLsizei)count,
5146560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLfloat *)v
5147560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
5148560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
5149560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichexit:
5150560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (v_base) {
5151560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _env->ReleasePrimitiveArrayCritical(v_ref, v_base,
5152560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich            JNI_ABORT);
5153560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
51542545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    if (_exception) {
51552545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        jniThrowException(_env, _exceptionType, _exceptionMessage);
51562545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    }
5157560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
5158560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
5159560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glUniform3fv ( GLint location, GLsizei count, const GLfloat *v ) */
5160560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
5161560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glUniform3fv__IILjava_nio_FloatBuffer_2
5162560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint location, jint count, jobject v_buf) {
5163560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jarray _array = (jarray) 0;
516417045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    jint _bufferOffset = (jint) 0;
5165560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _remaining;
5166560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLfloat *v = (GLfloat *) 0;
5167560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
516817045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    v = (GLfloat *)getPointer(_env, v_buf, &_array, &_remaining, &_bufferOffset);
516917045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    if (v == NULL) {
517017045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        char * _vBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
517117045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        v = (GLfloat *) (_vBase + _bufferOffset);
517217045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    }
5173560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glUniform3fv(
5174560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLint)location,
5175560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLsizei)count,
5176560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLfloat *)v
5177560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
5178560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (_array) {
5179560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        releasePointer(_env, _array, v, JNI_FALSE);
5180560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
5181560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
5182560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
5183560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glUniform3i ( GLint location, GLint x, GLint y, GLint z ) */
5184560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
5185560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glUniform3i__IIII
5186560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint location, jint x, jint y, jint z) {
5187560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glUniform3i(
5188560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLint)location,
5189560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLint)x,
5190560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLint)y,
5191560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLint)z
5192560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
5193560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
5194560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
5195560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glUniform3iv ( GLint location, GLsizei count, const GLint *v ) */
5196560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
5197560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glUniform3iv__II_3II
5198560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint location, jint count, jintArray v_ref, jint offset) {
51992545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    jint _exception = 0;
52002545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    const char * _exceptionType;
52012545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    const char * _exceptionMessage;
5202560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLint *v_base = (GLint *) 0;
5203560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _remaining;
5204560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLint *v = (GLint *) 0;
5205560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
5206560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (!v_ref) {
52072545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exception = 1;
52082545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
52092545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "v == null";
5210560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
5211560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
5212560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (offset < 0) {
52132545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exception = 1;
52142545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
52152545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "offset < 0";
5216560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
5217560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
5218560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    _remaining = _env->GetArrayLength(v_ref) - offset;
5219560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    v_base = (GLint *)
5220560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _env->GetPrimitiveArrayCritical(v_ref, (jboolean *)0);
5221560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    v = v_base + offset;
5222560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
5223560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glUniform3iv(
5224560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLint)location,
5225560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLsizei)count,
5226560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLint *)v
5227560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
5228560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
5229560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichexit:
5230560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (v_base) {
5231560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _env->ReleasePrimitiveArrayCritical(v_ref, v_base,
5232560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich            JNI_ABORT);
5233560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
52342545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    if (_exception) {
52352545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        jniThrowException(_env, _exceptionType, _exceptionMessage);
52362545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    }
5237560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
5238560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
5239560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glUniform3iv ( GLint location, GLsizei count, const GLint *v ) */
5240560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
5241560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glUniform3iv__IILjava_nio_IntBuffer_2
5242560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint location, jint count, jobject v_buf) {
5243560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jarray _array = (jarray) 0;
524417045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    jint _bufferOffset = (jint) 0;
5245560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _remaining;
5246560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLint *v = (GLint *) 0;
5247560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
524817045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    v = (GLint *)getPointer(_env, v_buf, &_array, &_remaining, &_bufferOffset);
524917045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    if (v == NULL) {
525017045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        char * _vBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
525117045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        v = (GLint *) (_vBase + _bufferOffset);
525217045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    }
5253560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glUniform3iv(
5254560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLint)location,
5255560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLsizei)count,
5256560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLint *)v
5257560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
5258560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (_array) {
5259560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        releasePointer(_env, _array, v, JNI_FALSE);
5260560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
5261560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
5262560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
5263560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glUniform4f ( GLint location, GLfloat x, GLfloat y, GLfloat z, GLfloat w ) */
5264560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
5265560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glUniform4f__IFFFF
5266560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint location, jfloat x, jfloat y, jfloat z, jfloat w) {
5267560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glUniform4f(
5268560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLint)location,
5269560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLfloat)x,
5270560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLfloat)y,
5271560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLfloat)z,
5272560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLfloat)w
5273560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
5274560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
5275560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
5276560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glUniform4fv ( GLint location, GLsizei count, const GLfloat *v ) */
5277560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
5278560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glUniform4fv__II_3FI
5279560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint location, jint count, jfloatArray v_ref, jint offset) {
52802545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    jint _exception = 0;
52812545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    const char * _exceptionType;
52822545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    const char * _exceptionMessage;
5283560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLfloat *v_base = (GLfloat *) 0;
5284560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _remaining;
5285560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLfloat *v = (GLfloat *) 0;
5286560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
5287560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (!v_ref) {
52882545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exception = 1;
52892545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
52902545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "v == null";
5291560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
5292560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
5293560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (offset < 0) {
52942545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exception = 1;
52952545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
52962545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "offset < 0";
5297560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
5298560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
5299560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    _remaining = _env->GetArrayLength(v_ref) - offset;
5300560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    v_base = (GLfloat *)
5301560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _env->GetPrimitiveArrayCritical(v_ref, (jboolean *)0);
5302560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    v = v_base + offset;
5303560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
5304560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glUniform4fv(
5305560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLint)location,
5306560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLsizei)count,
5307560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLfloat *)v
5308560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
5309560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
5310560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichexit:
5311560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (v_base) {
5312560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _env->ReleasePrimitiveArrayCritical(v_ref, v_base,
5313560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich            JNI_ABORT);
5314560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
53152545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    if (_exception) {
53162545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        jniThrowException(_env, _exceptionType, _exceptionMessage);
53172545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    }
5318560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
5319560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
5320560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glUniform4fv ( GLint location, GLsizei count, const GLfloat *v ) */
5321560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
5322560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glUniform4fv__IILjava_nio_FloatBuffer_2
5323560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint location, jint count, jobject v_buf) {
5324560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jarray _array = (jarray) 0;
532517045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    jint _bufferOffset = (jint) 0;
5326560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _remaining;
5327560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLfloat *v = (GLfloat *) 0;
5328560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
532917045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    v = (GLfloat *)getPointer(_env, v_buf, &_array, &_remaining, &_bufferOffset);
533017045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    if (v == NULL) {
533117045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        char * _vBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
533217045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        v = (GLfloat *) (_vBase + _bufferOffset);
533317045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    }
5334560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glUniform4fv(
5335560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLint)location,
5336560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLsizei)count,
5337560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLfloat *)v
5338560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
5339560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (_array) {
5340560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        releasePointer(_env, _array, v, JNI_FALSE);
5341560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
5342560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
5343560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
5344560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glUniform4i ( GLint location, GLint x, GLint y, GLint z, GLint w ) */
5345560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
5346560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glUniform4i__IIIII
5347560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint location, jint x, jint y, jint z, jint w) {
5348560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glUniform4i(
5349560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLint)location,
5350560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLint)x,
5351560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLint)y,
5352560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLint)z,
5353560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLint)w
5354560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
5355560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
5356560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
5357560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glUniform4iv ( GLint location, GLsizei count, const GLint *v ) */
5358560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
5359560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glUniform4iv__II_3II
5360560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint location, jint count, jintArray v_ref, jint offset) {
53612545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    jint _exception = 0;
53622545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    const char * _exceptionType;
53632545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    const char * _exceptionMessage;
5364560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLint *v_base = (GLint *) 0;
5365560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _remaining;
5366560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLint *v = (GLint *) 0;
5367560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
5368560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (!v_ref) {
53692545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exception = 1;
53702545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
53712545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "v == null";
5372560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
5373560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
5374560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (offset < 0) {
53752545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exception = 1;
53762545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
53772545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "offset < 0";
5378560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
5379560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
5380560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    _remaining = _env->GetArrayLength(v_ref) - offset;
5381560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    v_base = (GLint *)
5382560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _env->GetPrimitiveArrayCritical(v_ref, (jboolean *)0);
5383560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    v = v_base + offset;
5384560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
5385560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glUniform4iv(
5386560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLint)location,
5387560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLsizei)count,
5388560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLint *)v
5389560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
5390560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
5391560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichexit:
5392560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (v_base) {
5393560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _env->ReleasePrimitiveArrayCritical(v_ref, v_base,
5394560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich            JNI_ABORT);
5395560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
53962545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    if (_exception) {
53972545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        jniThrowException(_env, _exceptionType, _exceptionMessage);
53982545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    }
5399560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
5400560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
5401560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glUniform4iv ( GLint location, GLsizei count, const GLint *v ) */
5402560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
5403560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glUniform4iv__IILjava_nio_IntBuffer_2
5404560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint location, jint count, jobject v_buf) {
5405560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jarray _array = (jarray) 0;
540617045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    jint _bufferOffset = (jint) 0;
5407560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _remaining;
5408560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLint *v = (GLint *) 0;
5409560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
541017045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    v = (GLint *)getPointer(_env, v_buf, &_array, &_remaining, &_bufferOffset);
541117045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    if (v == NULL) {
541217045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        char * _vBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
541317045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        v = (GLint *) (_vBase + _bufferOffset);
541417045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    }
5415560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glUniform4iv(
5416560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLint)location,
5417560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLsizei)count,
5418560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLint *)v
5419560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
5420560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (_array) {
5421560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        releasePointer(_env, _array, v, JNI_FALSE);
5422560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
5423560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
5424560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
5425560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glUniformMatrix2fv ( GLint location, GLsizei count, GLboolean transpose, const GLfloat *value ) */
5426560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
5427560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glUniformMatrix2fv__IIZ_3FI
5428560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint location, jint count, jboolean transpose, jfloatArray value_ref, jint offset) {
54292545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    jint _exception = 0;
54302545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    const char * _exceptionType;
54312545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    const char * _exceptionMessage;
5432560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLfloat *value_base = (GLfloat *) 0;
5433560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _remaining;
5434560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLfloat *value = (GLfloat *) 0;
5435560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
5436560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (!value_ref) {
54372545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exception = 1;
54382545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
54392545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "value == null";
5440560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
5441560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
5442560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (offset < 0) {
54432545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exception = 1;
54442545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
54452545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "offset < 0";
5446560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
5447560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
5448560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    _remaining = _env->GetArrayLength(value_ref) - offset;
5449560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    value_base = (GLfloat *)
5450560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _env->GetPrimitiveArrayCritical(value_ref, (jboolean *)0);
5451560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    value = value_base + offset;
5452560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
5453560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glUniformMatrix2fv(
5454560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLint)location,
5455560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLsizei)count,
5456560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLboolean)transpose,
5457560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLfloat *)value
5458560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
5459560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
5460560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichexit:
5461560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (value_base) {
5462560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _env->ReleasePrimitiveArrayCritical(value_ref, value_base,
5463560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich            JNI_ABORT);
5464560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
54652545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    if (_exception) {
54662545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        jniThrowException(_env, _exceptionType, _exceptionMessage);
54672545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    }
5468560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
5469560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
5470560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glUniformMatrix2fv ( GLint location, GLsizei count, GLboolean transpose, const GLfloat *value ) */
5471560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
5472560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glUniformMatrix2fv__IIZLjava_nio_FloatBuffer_2
5473560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint location, jint count, jboolean transpose, jobject value_buf) {
5474560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jarray _array = (jarray) 0;
547517045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    jint _bufferOffset = (jint) 0;
5476560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _remaining;
5477560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLfloat *value = (GLfloat *) 0;
5478560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
547917045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    value = (GLfloat *)getPointer(_env, value_buf, &_array, &_remaining, &_bufferOffset);
548017045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    if (value == NULL) {
548117045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        char * _valueBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
548217045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        value = (GLfloat *) (_valueBase + _bufferOffset);
548317045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    }
5484560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glUniformMatrix2fv(
5485560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLint)location,
5486560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLsizei)count,
5487560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLboolean)transpose,
5488560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLfloat *)value
5489560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
5490560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (_array) {
5491560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        releasePointer(_env, _array, value, JNI_FALSE);
5492560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
5493560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
5494560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
5495560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glUniformMatrix3fv ( GLint location, GLsizei count, GLboolean transpose, const GLfloat *value ) */
5496560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
5497560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glUniformMatrix3fv__IIZ_3FI
5498560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint location, jint count, jboolean transpose, jfloatArray value_ref, jint offset) {
54992545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    jint _exception = 0;
55002545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    const char * _exceptionType;
55012545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    const char * _exceptionMessage;
5502560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLfloat *value_base = (GLfloat *) 0;
5503560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _remaining;
5504560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLfloat *value = (GLfloat *) 0;
5505560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
5506560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (!value_ref) {
55072545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exception = 1;
55082545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
55092545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "value == null";
5510560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
5511560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
5512560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (offset < 0) {
55132545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exception = 1;
55142545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
55152545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "offset < 0";
5516560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
5517560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
5518560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    _remaining = _env->GetArrayLength(value_ref) - offset;
5519560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    value_base = (GLfloat *)
5520560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _env->GetPrimitiveArrayCritical(value_ref, (jboolean *)0);
5521560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    value = value_base + offset;
5522560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
5523560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glUniformMatrix3fv(
5524560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLint)location,
5525560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLsizei)count,
5526560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLboolean)transpose,
5527560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLfloat *)value
5528560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
5529560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
5530560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichexit:
5531560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (value_base) {
5532560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _env->ReleasePrimitiveArrayCritical(value_ref, value_base,
5533560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich            JNI_ABORT);
5534560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
55352545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    if (_exception) {
55362545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        jniThrowException(_env, _exceptionType, _exceptionMessage);
55372545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    }
5538560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
5539560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
5540560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glUniformMatrix3fv ( GLint location, GLsizei count, GLboolean transpose, const GLfloat *value ) */
5541560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
5542560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glUniformMatrix3fv__IIZLjava_nio_FloatBuffer_2
5543560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint location, jint count, jboolean transpose, jobject value_buf) {
5544560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jarray _array = (jarray) 0;
554517045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    jint _bufferOffset = (jint) 0;
5546560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _remaining;
5547560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLfloat *value = (GLfloat *) 0;
5548560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
554917045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    value = (GLfloat *)getPointer(_env, value_buf, &_array, &_remaining, &_bufferOffset);
555017045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    if (value == NULL) {
555117045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        char * _valueBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
555217045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        value = (GLfloat *) (_valueBase + _bufferOffset);
555317045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    }
5554560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glUniformMatrix3fv(
5555560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLint)location,
5556560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLsizei)count,
5557560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLboolean)transpose,
5558560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLfloat *)value
5559560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
5560560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (_array) {
5561560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        releasePointer(_env, _array, value, JNI_FALSE);
5562560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
5563560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
5564560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
5565560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glUniformMatrix4fv ( GLint location, GLsizei count, GLboolean transpose, const GLfloat *value ) */
5566560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
5567560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glUniformMatrix4fv__IIZ_3FI
5568560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint location, jint count, jboolean transpose, jfloatArray value_ref, jint offset) {
55692545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    jint _exception = 0;
55702545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    const char * _exceptionType;
55712545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    const char * _exceptionMessage;
5572560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLfloat *value_base = (GLfloat *) 0;
5573560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _remaining;
5574560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLfloat *value = (GLfloat *) 0;
5575560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
5576560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (!value_ref) {
55772545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exception = 1;
55782545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
55792545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "value == null";
5580560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
5581560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
5582560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (offset < 0) {
55832545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exception = 1;
55842545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
55852545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "offset < 0";
5586560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
5587560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
5588560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    _remaining = _env->GetArrayLength(value_ref) - offset;
5589560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    value_base = (GLfloat *)
5590560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _env->GetPrimitiveArrayCritical(value_ref, (jboolean *)0);
5591560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    value = value_base + offset;
5592560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
5593560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glUniformMatrix4fv(
5594560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLint)location,
5595560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLsizei)count,
5596560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLboolean)transpose,
5597560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLfloat *)value
5598560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
5599560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
5600560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichexit:
5601560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (value_base) {
5602560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _env->ReleasePrimitiveArrayCritical(value_ref, value_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 glUniformMatrix4fv ( GLint location, GLsizei count, GLboolean transpose, const GLfloat *value ) */
5611560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
5612560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glUniformMatrix4fv__IIZLjava_nio_FloatBuffer_2
5613560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint location, jint count, jboolean transpose, jobject value_buf) {
5614560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jarray _array = (jarray) 0;
561517045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    jint _bufferOffset = (jint) 0;
5616560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _remaining;
5617560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLfloat *value = (GLfloat *) 0;
5618560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
561917045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    value = (GLfloat *)getPointer(_env, value_buf, &_array, &_remaining, &_bufferOffset);
562017045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    if (value == NULL) {
562117045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        char * _valueBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
562217045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        value = (GLfloat *) (_valueBase + _bufferOffset);
562317045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    }
5624560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glUniformMatrix4fv(
5625560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLint)location,
5626560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLsizei)count,
5627560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLboolean)transpose,
5628560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLfloat *)value
5629560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
5630560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (_array) {
5631560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        releasePointer(_env, _array, value, JNI_FALSE);
5632560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
5633560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
5634560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
5635560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glUseProgram ( GLuint program ) */
5636560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
5637560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glUseProgram__I
5638560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint program) {
5639560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glUseProgram(
5640560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLuint)program
5641560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
5642560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
5643560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
5644560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glValidateProgram ( GLuint program ) */
5645560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
5646560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glValidateProgram__I
5647560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint program) {
5648560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glValidateProgram(
5649560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLuint)program
5650560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
5651560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
5652560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
5653560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glVertexAttrib1f ( GLuint indx, GLfloat x ) */
5654560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
5655560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glVertexAttrib1f__IF
5656560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint indx, jfloat x) {
5657560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glVertexAttrib1f(
5658560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLuint)indx,
5659560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLfloat)x
5660560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
5661560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
5662560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
5663560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glVertexAttrib1fv ( GLuint indx, const GLfloat *values ) */
5664560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
5665560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glVertexAttrib1fv__I_3FI
5666560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint indx, jfloatArray values_ref, jint offset) {
56672545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    jint _exception = 0;
56682545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    const char * _exceptionType;
56692545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    const char * _exceptionMessage;
5670560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLfloat *values_base = (GLfloat *) 0;
5671560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _remaining;
5672560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLfloat *values = (GLfloat *) 0;
5673560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
5674560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (!values_ref) {
56752545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exception = 1;
56762545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
56772545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "values == null";
5678560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
5679560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
5680560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (offset < 0) {
56812545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exception = 1;
56822545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
56832545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "offset < 0";
5684560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
5685560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
5686560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    _remaining = _env->GetArrayLength(values_ref) - offset;
5687560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    values_base = (GLfloat *)
5688560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _env->GetPrimitiveArrayCritical(values_ref, (jboolean *)0);
5689560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    values = values_base + offset;
5690560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
5691560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glVertexAttrib1fv(
5692560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLuint)indx,
5693560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLfloat *)values
5694560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
5695560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
5696560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichexit:
5697560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (values_base) {
5698560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _env->ReleasePrimitiveArrayCritical(values_ref, values_base,
5699560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich            JNI_ABORT);
5700560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
57012545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    if (_exception) {
57022545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        jniThrowException(_env, _exceptionType, _exceptionMessage);
57032545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    }
5704560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
5705560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
5706560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glVertexAttrib1fv ( GLuint indx, const GLfloat *values ) */
5707560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
5708560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glVertexAttrib1fv__ILjava_nio_FloatBuffer_2
5709560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint indx, jobject values_buf) {
5710560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jarray _array = (jarray) 0;
571117045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    jint _bufferOffset = (jint) 0;
5712560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _remaining;
5713560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLfloat *values = (GLfloat *) 0;
5714560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
571517045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    values = (GLfloat *)getPointer(_env, values_buf, &_array, &_remaining, &_bufferOffset);
571617045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    if (values == NULL) {
571717045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        char * _valuesBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
571817045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        values = (GLfloat *) (_valuesBase + _bufferOffset);
571917045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    }
5720560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glVertexAttrib1fv(
5721560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLuint)indx,
5722560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLfloat *)values
5723560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
5724560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (_array) {
5725560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        releasePointer(_env, _array, values, JNI_FALSE);
5726560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
5727560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
5728560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
5729560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glVertexAttrib2f ( GLuint indx, GLfloat x, GLfloat y ) */
5730560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
5731560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glVertexAttrib2f__IFF
5732560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint indx, jfloat x, jfloat y) {
5733560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glVertexAttrib2f(
5734560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLuint)indx,
5735560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLfloat)x,
5736560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLfloat)y
5737560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
5738560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
5739560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
5740560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glVertexAttrib2fv ( GLuint indx, const GLfloat *values ) */
5741560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
5742560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glVertexAttrib2fv__I_3FI
5743560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint indx, jfloatArray values_ref, jint offset) {
57442545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    jint _exception = 0;
57452545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    const char * _exceptionType;
57462545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    const char * _exceptionMessage;
5747560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLfloat *values_base = (GLfloat *) 0;
5748560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _remaining;
5749560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLfloat *values = (GLfloat *) 0;
5750560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
5751560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (!values_ref) {
57522545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exception = 1;
57532545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
57542545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "values == null";
5755560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
5756560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
5757560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (offset < 0) {
57582545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exception = 1;
57592545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
57602545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "offset < 0";
5761560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
5762560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
5763560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    _remaining = _env->GetArrayLength(values_ref) - offset;
5764560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    values_base = (GLfloat *)
5765560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _env->GetPrimitiveArrayCritical(values_ref, (jboolean *)0);
5766560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    values = values_base + offset;
5767560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
5768560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glVertexAttrib2fv(
5769560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLuint)indx,
5770560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLfloat *)values
5771560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
5772560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
5773560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichexit:
5774560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (values_base) {
5775560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _env->ReleasePrimitiveArrayCritical(values_ref, values_base,
5776560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich            JNI_ABORT);
5777560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
57782545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    if (_exception) {
57792545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        jniThrowException(_env, _exceptionType, _exceptionMessage);
57802545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    }
5781560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
5782560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
5783560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glVertexAttrib2fv ( GLuint indx, const GLfloat *values ) */
5784560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
5785560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glVertexAttrib2fv__ILjava_nio_FloatBuffer_2
5786560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint indx, jobject values_buf) {
5787560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jarray _array = (jarray) 0;
578817045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    jint _bufferOffset = (jint) 0;
5789560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _remaining;
5790560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLfloat *values = (GLfloat *) 0;
5791560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
579217045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    values = (GLfloat *)getPointer(_env, values_buf, &_array, &_remaining, &_bufferOffset);
579317045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    if (values == NULL) {
579417045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        char * _valuesBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
579517045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        values = (GLfloat *) (_valuesBase + _bufferOffset);
579617045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    }
5797560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glVertexAttrib2fv(
5798560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLuint)indx,
5799560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLfloat *)values
5800560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
5801560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (_array) {
5802560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        releasePointer(_env, _array, values, JNI_FALSE);
5803560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
5804560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
5805560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
5806560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glVertexAttrib3f ( GLuint indx, GLfloat x, GLfloat y, GLfloat z ) */
5807560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
5808560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glVertexAttrib3f__IFFF
5809560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint indx, jfloat x, jfloat y, jfloat z) {
5810560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glVertexAttrib3f(
5811560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLuint)indx,
5812560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLfloat)x,
5813560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLfloat)y,
5814560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLfloat)z
5815560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
5816560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
5817560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
5818560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glVertexAttrib3fv ( GLuint indx, const GLfloat *values ) */
5819560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
5820560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glVertexAttrib3fv__I_3FI
5821560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint indx, jfloatArray values_ref, jint offset) {
58222545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    jint _exception = 0;
58232545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    const char * _exceptionType;
58242545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    const char * _exceptionMessage;
5825560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLfloat *values_base = (GLfloat *) 0;
5826560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _remaining;
5827560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLfloat *values = (GLfloat *) 0;
5828560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
5829560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (!values_ref) {
58302545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exception = 1;
58312545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
58322545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "values == null";
5833560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
5834560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
5835560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (offset < 0) {
58362545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exception = 1;
58372545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
58382545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "offset < 0";
5839560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
5840560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
5841560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    _remaining = _env->GetArrayLength(values_ref) - offset;
5842560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    values_base = (GLfloat *)
5843560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _env->GetPrimitiveArrayCritical(values_ref, (jboolean *)0);
5844560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    values = values_base + offset;
5845560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
5846560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glVertexAttrib3fv(
5847560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLuint)indx,
5848560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLfloat *)values
5849560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
5850560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
5851560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichexit:
5852560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (values_base) {
5853560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _env->ReleasePrimitiveArrayCritical(values_ref, values_base,
5854560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich            JNI_ABORT);
5855560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
58562545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    if (_exception) {
58572545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        jniThrowException(_env, _exceptionType, _exceptionMessage);
58582545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    }
5859560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
5860560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
5861560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glVertexAttrib3fv ( GLuint indx, const GLfloat *values ) */
5862560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
5863560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glVertexAttrib3fv__ILjava_nio_FloatBuffer_2
5864560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint indx, jobject values_buf) {
5865560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jarray _array = (jarray) 0;
586617045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    jint _bufferOffset = (jint) 0;
5867560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _remaining;
5868560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLfloat *values = (GLfloat *) 0;
5869560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
587017045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    values = (GLfloat *)getPointer(_env, values_buf, &_array, &_remaining, &_bufferOffset);
587117045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    if (values == NULL) {
587217045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        char * _valuesBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
587317045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        values = (GLfloat *) (_valuesBase + _bufferOffset);
587417045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    }
5875560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glVertexAttrib3fv(
5876560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLuint)indx,
5877560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLfloat *)values
5878560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
5879560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (_array) {
5880560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        releasePointer(_env, _array, values, JNI_FALSE);
5881560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
5882560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
5883560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
5884560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glVertexAttrib4f ( GLuint indx, GLfloat x, GLfloat y, GLfloat z, GLfloat w ) */
5885560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
5886560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glVertexAttrib4f__IFFFF
5887560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint indx, jfloat x, jfloat y, jfloat z, jfloat w) {
5888560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glVertexAttrib4f(
5889560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLuint)indx,
5890560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLfloat)x,
5891560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLfloat)y,
5892560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLfloat)z,
5893560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLfloat)w
5894560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
5895560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
5896560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
5897560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glVertexAttrib4fv ( GLuint indx, const GLfloat *values ) */
5898560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
5899560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glVertexAttrib4fv__I_3FI
5900560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint indx, jfloatArray values_ref, jint offset) {
59012545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    jint _exception = 0;
59022545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    const char * _exceptionType;
59032545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    const char * _exceptionMessage;
5904560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLfloat *values_base = (GLfloat *) 0;
5905560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _remaining;
5906560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLfloat *values = (GLfloat *) 0;
5907560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
5908560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (!values_ref) {
59092545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exception = 1;
59102545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
59112545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "values == null";
5912560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
5913560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
5914560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (offset < 0) {
59152545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exception = 1;
59162545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionType = "java/lang/IllegalArgumentException";
59172545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        _exceptionMessage = "offset < 0";
5918560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        goto exit;
5919560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
5920560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    _remaining = _env->GetArrayLength(values_ref) - offset;
5921560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    values_base = (GLfloat *)
5922560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _env->GetPrimitiveArrayCritical(values_ref, (jboolean *)0);
5923560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    values = values_base + offset;
5924560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
5925560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glVertexAttrib4fv(
5926560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLuint)indx,
5927560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLfloat *)values
5928560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
5929560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
5930560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichexit:
5931560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (values_base) {
5932560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        _env->ReleasePrimitiveArrayCritical(values_ref, values_base,
5933560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich            JNI_ABORT);
5934560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
59352545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    if (_exception) {
59362545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer        jniThrowException(_env, _exceptionType, _exceptionMessage);
59372545b32ced69100fe70685b95315c6adf411083bThomas Tafertshofer    }
5938560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
5939560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
5940560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glVertexAttrib4fv ( GLuint indx, const GLfloat *values ) */
5941560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
5942560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glVertexAttrib4fv__ILjava_nio_FloatBuffer_2
5943560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint indx, jobject values_buf) {
5944560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jarray _array = (jarray) 0;
594517045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    jint _bufferOffset = (jint) 0;
5946560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _remaining;
5947560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLfloat *values = (GLfloat *) 0;
5948560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
594917045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    values = (GLfloat *)getPointer(_env, values_buf, &_array, &_remaining, &_bufferOffset);
595017045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    if (values == NULL) {
595117045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        char * _valuesBase = (char *)_env->GetPrimitiveArrayCritical(_array, (jboolean *) 0);
595217045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer        values = (GLfloat *) (_valuesBase + _bufferOffset);
595317045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    }
5954560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glVertexAttrib4fv(
5955560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLuint)indx,
5956560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLfloat *)values
5957560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
5958560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (_array) {
5959560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        releasePointer(_env, _array, values, JNI_FALSE);
5960560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
5961560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
5962560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
5963224107a421e2611b15d1ec736df54bca9ee3e78dJack Palevich/* void glVertexAttribPointer ( GLuint indx, GLint size, GLenum type, GLboolean normalized, GLsizei stride, GLint offset ) */
5964224107a421e2611b15d1ec736df54bca9ee3e78dJack Palevichstatic void
5965224107a421e2611b15d1ec736df54bca9ee3e78dJack Palevichandroid_glVertexAttribPointer__IIIZII
5966224107a421e2611b15d1ec736df54bca9ee3e78dJack Palevich  (JNIEnv *_env, jobject _this, jint indx, jint size, jint type, jboolean normalized, jint stride, jint offset) {
5967224107a421e2611b15d1ec736df54bca9ee3e78dJack Palevich    glVertexAttribPointer(
5968224107a421e2611b15d1ec736df54bca9ee3e78dJack Palevich        (GLuint)indx,
5969224107a421e2611b15d1ec736df54bca9ee3e78dJack Palevich        (GLint)size,
5970224107a421e2611b15d1ec736df54bca9ee3e78dJack Palevich        (GLenum)type,
5971224107a421e2611b15d1ec736df54bca9ee3e78dJack Palevich        (GLboolean)normalized,
5972224107a421e2611b15d1ec736df54bca9ee3e78dJack Palevich        (GLsizei)stride,
5973224107a421e2611b15d1ec736df54bca9ee3e78dJack Palevich        (const GLvoid *)offset
5974224107a421e2611b15d1ec736df54bca9ee3e78dJack Palevich    );
5975224107a421e2611b15d1ec736df54bca9ee3e78dJack Palevich}
5976224107a421e2611b15d1ec736df54bca9ee3e78dJack Palevich
5977560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glVertexAttribPointer ( GLuint indx, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const GLvoid *ptr ) */
5978560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
5979560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glVertexAttribPointerBounds__IIIZILjava_nio_Buffer_2I
5980560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint indx, jint size, jint type, jboolean normalized, jint stride, jobject ptr_buf, jint remaining) {
5981560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jarray _array = (jarray) 0;
598217045a16575ece34cfadb63da4791f115625df78Thomas Tafertshofer    jint _bufferOffset = (jint) 0;
5983560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    jint _remaining;
5984560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    GLvoid *ptr = (GLvoid *) 0;
5985560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
5986560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    if (ptr_buf) {
5987560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        ptr = (GLvoid *) getDirectBufferPointer(_env, ptr_buf);
5988560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        if ( ! ptr ) {
5989560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich            return;
5990560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        }
5991560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    }
5992560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glVertexAttribPointerBounds(
5993560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLuint)indx,
5994560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLint)size,
5995560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLenum)type,
5996560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLboolean)normalized,
5997560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLsizei)stride,
5998560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLvoid *)ptr,
5999560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLsizei)remaining
6000560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
6001560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
6002560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
6003560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich/* void glViewport ( GLint x, GLint y, GLsizei width, GLsizei height ) */
6004560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic void
6005560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichandroid_glViewport__IIII
6006560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich  (JNIEnv *_env, jobject _this, jint x, jint y, jint width, jint height) {
6007560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    glViewport(
6008560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLint)x,
6009560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLint)y,
6010560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLsizei)width,
6011560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich        (GLsizei)height
6012560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    );
6013560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
6014560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
6015560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic const char *classPathName = "android/opengl/GLES20";
6016560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
6017560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichstatic JNINativeMethod methods[] = {
6018560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"_nativeClassInit", "()V", (void*)nativeClassInit },
6019560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glActiveTexture", "(I)V", (void *) android_glActiveTexture__I },
6020560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glAttachShader", "(II)V", (void *) android_glAttachShader__II },
6021560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glBindAttribLocation", "(IILjava/lang/String;)V", (void *) android_glBindAttribLocation__IILjava_lang_String_2 },
6022560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glBindBuffer", "(II)V", (void *) android_glBindBuffer__II },
6023560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glBindFramebuffer", "(II)V", (void *) android_glBindFramebuffer__II },
6024560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glBindRenderbuffer", "(II)V", (void *) android_glBindRenderbuffer__II },
6025560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glBindTexture", "(II)V", (void *) android_glBindTexture__II },
6026560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glBlendColor", "(FFFF)V", (void *) android_glBlendColor__FFFF },
6027560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glBlendEquation", "(I)V", (void *) android_glBlendEquation__I },
6028560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glBlendEquationSeparate", "(II)V", (void *) android_glBlendEquationSeparate__II },
6029560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glBlendFunc", "(II)V", (void *) android_glBlendFunc__II },
6030560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glBlendFuncSeparate", "(IIII)V", (void *) android_glBlendFuncSeparate__IIII },
6031560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glBufferData", "(IILjava/nio/Buffer;I)V", (void *) android_glBufferData__IILjava_nio_Buffer_2I },
6032560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glBufferSubData", "(IIILjava/nio/Buffer;)V", (void *) android_glBufferSubData__IIILjava_nio_Buffer_2 },
6033560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glCheckFramebufferStatus", "(I)I", (void *) android_glCheckFramebufferStatus__I },
6034560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glClear", "(I)V", (void *) android_glClear__I },
6035560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glClearColor", "(FFFF)V", (void *) android_glClearColor__FFFF },
6036560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glClearDepthf", "(F)V", (void *) android_glClearDepthf__F },
6037560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glClearStencil", "(I)V", (void *) android_glClearStencil__I },
6038560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glColorMask", "(ZZZZ)V", (void *) android_glColorMask__ZZZZ },
6039560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glCompileShader", "(I)V", (void *) android_glCompileShader__I },
6040560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glCompressedTexImage2D", "(IIIIIIILjava/nio/Buffer;)V", (void *) android_glCompressedTexImage2D__IIIIIIILjava_nio_Buffer_2 },
6041560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glCompressedTexSubImage2D", "(IIIIIIIILjava/nio/Buffer;)V", (void *) android_glCompressedTexSubImage2D__IIIIIIIILjava_nio_Buffer_2 },
6042560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glCopyTexImage2D", "(IIIIIIII)V", (void *) android_glCopyTexImage2D__IIIIIIII },
6043560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glCopyTexSubImage2D", "(IIIIIIII)V", (void *) android_glCopyTexSubImage2D__IIIIIIII },
6044560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glCreateProgram", "()I", (void *) android_glCreateProgram__ },
6045560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glCreateShader", "(I)I", (void *) android_glCreateShader__I },
6046560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glCullFace", "(I)V", (void *) android_glCullFace__I },
6047560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glDeleteBuffers", "(I[II)V", (void *) android_glDeleteBuffers__I_3II },
6048560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glDeleteBuffers", "(ILjava/nio/IntBuffer;)V", (void *) android_glDeleteBuffers__ILjava_nio_IntBuffer_2 },
6049560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glDeleteFramebuffers", "(I[II)V", (void *) android_glDeleteFramebuffers__I_3II },
6050560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glDeleteFramebuffers", "(ILjava/nio/IntBuffer;)V", (void *) android_glDeleteFramebuffers__ILjava_nio_IntBuffer_2 },
6051560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glDeleteProgram", "(I)V", (void *) android_glDeleteProgram__I },
6052560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glDeleteRenderbuffers", "(I[II)V", (void *) android_glDeleteRenderbuffers__I_3II },
6053560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glDeleteRenderbuffers", "(ILjava/nio/IntBuffer;)V", (void *) android_glDeleteRenderbuffers__ILjava_nio_IntBuffer_2 },
6054560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glDeleteShader", "(I)V", (void *) android_glDeleteShader__I },
6055560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glDeleteTextures", "(I[II)V", (void *) android_glDeleteTextures__I_3II },
6056560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glDeleteTextures", "(ILjava/nio/IntBuffer;)V", (void *) android_glDeleteTextures__ILjava_nio_IntBuffer_2 },
6057560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glDepthFunc", "(I)V", (void *) android_glDepthFunc__I },
6058560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glDepthMask", "(Z)V", (void *) android_glDepthMask__Z },
6059560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glDepthRangef", "(FF)V", (void *) android_glDepthRangef__FF },
6060560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glDetachShader", "(II)V", (void *) android_glDetachShader__II },
6061560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glDisable", "(I)V", (void *) android_glDisable__I },
6062560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glDisableVertexAttribArray", "(I)V", (void *) android_glDisableVertexAttribArray__I },
6063560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glDrawArrays", "(III)V", (void *) android_glDrawArrays__III },
6064224107a421e2611b15d1ec736df54bca9ee3e78dJack Palevich{"glDrawElements", "(IIII)V", (void *) android_glDrawElements__IIII },
6065560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glDrawElements", "(IIILjava/nio/Buffer;)V", (void *) android_glDrawElements__IIILjava_nio_Buffer_2 },
6066560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glEnable", "(I)V", (void *) android_glEnable__I },
6067560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glEnableVertexAttribArray", "(I)V", (void *) android_glEnableVertexAttribArray__I },
6068560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glFinish", "()V", (void *) android_glFinish__ },
6069560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glFlush", "()V", (void *) android_glFlush__ },
6070560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glFramebufferRenderbuffer", "(IIII)V", (void *) android_glFramebufferRenderbuffer__IIII },
6071560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glFramebufferTexture2D", "(IIIII)V", (void *) android_glFramebufferTexture2D__IIIII },
6072560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glFrontFace", "(I)V", (void *) android_glFrontFace__I },
6073560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glGenBuffers", "(I[II)V", (void *) android_glGenBuffers__I_3II },
6074560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glGenBuffers", "(ILjava/nio/IntBuffer;)V", (void *) android_glGenBuffers__ILjava_nio_IntBuffer_2 },
6075560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glGenerateMipmap", "(I)V", (void *) android_glGenerateMipmap__I },
6076560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glGenFramebuffers", "(I[II)V", (void *) android_glGenFramebuffers__I_3II },
6077560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glGenFramebuffers", "(ILjava/nio/IntBuffer;)V", (void *) android_glGenFramebuffers__ILjava_nio_IntBuffer_2 },
6078560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glGenRenderbuffers", "(I[II)V", (void *) android_glGenRenderbuffers__I_3II },
6079560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glGenRenderbuffers", "(ILjava/nio/IntBuffer;)V", (void *) android_glGenRenderbuffers__ILjava_nio_IntBuffer_2 },
6080560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glGenTextures", "(I[II)V", (void *) android_glGenTextures__I_3II },
6081560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glGenTextures", "(ILjava/nio/IntBuffer;)V", (void *) android_glGenTextures__ILjava_nio_IntBuffer_2 },
6082560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glGetActiveAttrib", "(III[II[II[II[BI)V", (void *) android_glGetActiveAttrib__III_3II_3II_3II_3BI },
6083560814f6b11abe83ff0c4ed18cac015c276b3181Jack 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 },
6084dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer{"glGetActiveAttrib", "(II[II[II)Ljava/lang/String;", (void *) android_glGetActiveAttrib1 },
6085dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer{"glGetActiveAttrib", "(IILjava/nio/IntBuffer;Ljava/nio/IntBuffer;)Ljava/lang/String;", (void *) android_glGetActiveAttrib2 },
6086560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glGetActiveUniform", "(III[II[II[II[BI)V", (void *) android_glGetActiveUniform__III_3II_3II_3II_3BI },
6087dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer{"glGetActiveUniform", "(II[II[II)Ljava/lang/String;", (void *) android_glGetActiveUniform1 },
6088560814f6b11abe83ff0c4ed18cac015c276b3181Jack 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 },
6089dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer{"glGetActiveUniform", "(IILjava/nio/IntBuffer;Ljava/nio/IntBuffer;)Ljava/lang/String;", (void *) android_glGetActiveUniform2 },
6090560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glGetAttachedShaders", "(II[II[II)V", (void *) android_glGetAttachedShaders__II_3II_3II },
6091560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glGetAttachedShaders", "(IILjava/nio/IntBuffer;Ljava/nio/IntBuffer;)V", (void *) android_glGetAttachedShaders__IILjava_nio_IntBuffer_2Ljava_nio_IntBuffer_2 },
6092560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glGetAttribLocation", "(ILjava/lang/String;)I", (void *) android_glGetAttribLocation__ILjava_lang_String_2 },
6093560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glGetBooleanv", "(I[ZI)V", (void *) android_glGetBooleanv__I_3ZI },
6094560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glGetBooleanv", "(ILjava/nio/IntBuffer;)V", (void *) android_glGetBooleanv__ILjava_nio_IntBuffer_2 },
6095560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glGetBufferParameteriv", "(II[II)V", (void *) android_glGetBufferParameteriv__II_3II },
6096560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glGetBufferParameteriv", "(IILjava/nio/IntBuffer;)V", (void *) android_glGetBufferParameteriv__IILjava_nio_IntBuffer_2 },
6097560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glGetError", "()I", (void *) android_glGetError__ },
6098560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glGetFloatv", "(I[FI)V", (void *) android_glGetFloatv__I_3FI },
6099560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glGetFloatv", "(ILjava/nio/FloatBuffer;)V", (void *) android_glGetFloatv__ILjava_nio_FloatBuffer_2 },
6100560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glGetFramebufferAttachmentParameteriv", "(III[II)V", (void *) android_glGetFramebufferAttachmentParameteriv__III_3II },
6101560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glGetFramebufferAttachmentParameteriv", "(IIILjava/nio/IntBuffer;)V", (void *) android_glGetFramebufferAttachmentParameteriv__IIILjava_nio_IntBuffer_2 },
6102560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glGetIntegerv", "(I[II)V", (void *) android_glGetIntegerv__I_3II },
6103560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glGetIntegerv", "(ILjava/nio/IntBuffer;)V", (void *) android_glGetIntegerv__ILjava_nio_IntBuffer_2 },
6104560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glGetProgramiv", "(II[II)V", (void *) android_glGetProgramiv__II_3II },
6105560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glGetProgramiv", "(IILjava/nio/IntBuffer;)V", (void *) android_glGetProgramiv__IILjava_nio_IntBuffer_2 },
6106560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glGetProgramInfoLog", "(I)Ljava/lang/String;", (void *) android_glGetProgramInfoLog },
6107560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glGetRenderbufferParameteriv", "(II[II)V", (void *) android_glGetRenderbufferParameteriv__II_3II },
6108560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glGetRenderbufferParameteriv", "(IILjava/nio/IntBuffer;)V", (void *) android_glGetRenderbufferParameteriv__IILjava_nio_IntBuffer_2 },
6109560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glGetShaderiv", "(II[II)V", (void *) android_glGetShaderiv__II_3II },
6110560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glGetShaderiv", "(IILjava/nio/IntBuffer;)V", (void *) android_glGetShaderiv__IILjava_nio_IntBuffer_2 },
6111560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glGetShaderInfoLog", "(I)Ljava/lang/String;", (void *) android_glGetShaderInfoLog },
6112560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glGetShaderPrecisionFormat", "(II[II[II)V", (void *) android_glGetShaderPrecisionFormat__II_3II_3II },
6113560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glGetShaderPrecisionFormat", "(IILjava/nio/IntBuffer;Ljava/nio/IntBuffer;)V", (void *) android_glGetShaderPrecisionFormat__IILjava_nio_IntBuffer_2Ljava_nio_IntBuffer_2 },
6114560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glGetShaderSource", "(II[II[BI)V", (void *) android_glGetShaderSource__II_3II_3BI },
6115560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glGetShaderSource", "(IILjava/nio/IntBuffer;B)V", (void *) android_glGetShaderSource__IILjava_nio_IntBuffer_2B },
6116dd06946252be852aa53eb6142a119b0fccc83cd1Thomas Tafertshofer{"glGetShaderSource", "(I)Ljava/lang/String;", (void *) android_glGetShaderSource },
6117560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glGetString", "(I)Ljava/lang/String;", (void *) android_glGetString },
6118560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glGetTexParameterfv", "(II[FI)V", (void *) android_glGetTexParameterfv__II_3FI },
6119560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glGetTexParameterfv", "(IILjava/nio/FloatBuffer;)V", (void *) android_glGetTexParameterfv__IILjava_nio_FloatBuffer_2 },
6120560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glGetTexParameteriv", "(II[II)V", (void *) android_glGetTexParameteriv__II_3II },
6121560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glGetTexParameteriv", "(IILjava/nio/IntBuffer;)V", (void *) android_glGetTexParameteriv__IILjava_nio_IntBuffer_2 },
6122560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glGetUniformfv", "(II[FI)V", (void *) android_glGetUniformfv__II_3FI },
6123560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glGetUniformfv", "(IILjava/nio/FloatBuffer;)V", (void *) android_glGetUniformfv__IILjava_nio_FloatBuffer_2 },
6124560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glGetUniformiv", "(II[II)V", (void *) android_glGetUniformiv__II_3II },
6125560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glGetUniformiv", "(IILjava/nio/IntBuffer;)V", (void *) android_glGetUniformiv__IILjava_nio_IntBuffer_2 },
6126560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glGetUniformLocation", "(ILjava/lang/String;)I", (void *) android_glGetUniformLocation__ILjava_lang_String_2 },
6127560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glGetVertexAttribfv", "(II[FI)V", (void *) android_glGetVertexAttribfv__II_3FI },
6128560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glGetVertexAttribfv", "(IILjava/nio/FloatBuffer;)V", (void *) android_glGetVertexAttribfv__IILjava_nio_FloatBuffer_2 },
6129560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glGetVertexAttribiv", "(II[II)V", (void *) android_glGetVertexAttribiv__II_3II },
6130560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glGetVertexAttribiv", "(IILjava/nio/IntBuffer;)V", (void *) android_glGetVertexAttribiv__IILjava_nio_IntBuffer_2 },
6131560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glHint", "(II)V", (void *) android_glHint__II },
6132560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glIsBuffer", "(I)Z", (void *) android_glIsBuffer__I },
6133560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glIsEnabled", "(I)Z", (void *) android_glIsEnabled__I },
6134560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glIsFramebuffer", "(I)Z", (void *) android_glIsFramebuffer__I },
6135560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glIsProgram", "(I)Z", (void *) android_glIsProgram__I },
6136560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glIsRenderbuffer", "(I)Z", (void *) android_glIsRenderbuffer__I },
6137560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glIsShader", "(I)Z", (void *) android_glIsShader__I },
6138560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glIsTexture", "(I)Z", (void *) android_glIsTexture__I },
6139560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glLineWidth", "(F)V", (void *) android_glLineWidth__F },
6140560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glLinkProgram", "(I)V", (void *) android_glLinkProgram__I },
6141560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glPixelStorei", "(II)V", (void *) android_glPixelStorei__II },
6142560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glPolygonOffset", "(FF)V", (void *) android_glPolygonOffset__FF },
6143560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glReadPixels", "(IIIIIILjava/nio/Buffer;)V", (void *) android_glReadPixels__IIIIIILjava_nio_Buffer_2 },
6144560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glReleaseShaderCompiler", "()V", (void *) android_glReleaseShaderCompiler__ },
6145560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glRenderbufferStorage", "(IIII)V", (void *) android_glRenderbufferStorage__IIII },
6146560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glSampleCoverage", "(FZ)V", (void *) android_glSampleCoverage__FZ },
6147560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glScissor", "(IIII)V", (void *) android_glScissor__IIII },
6148560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glShaderBinary", "(I[IIILjava/nio/Buffer;I)V", (void *) android_glShaderBinary__I_3IIILjava_nio_Buffer_2I },
6149560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glShaderBinary", "(ILjava/nio/IntBuffer;ILjava/nio/Buffer;I)V", (void *) android_glShaderBinary__ILjava_nio_IntBuffer_2ILjava_nio_Buffer_2I },
6150560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glShaderSource", "(ILjava/lang/String;)V", (void *) android_glShaderSource },
6151560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glStencilFunc", "(III)V", (void *) android_glStencilFunc__III },
6152560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glStencilFuncSeparate", "(IIII)V", (void *) android_glStencilFuncSeparate__IIII },
6153560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glStencilMask", "(I)V", (void *) android_glStencilMask__I },
6154560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glStencilMaskSeparate", "(II)V", (void *) android_glStencilMaskSeparate__II },
6155560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glStencilOp", "(III)V", (void *) android_glStencilOp__III },
6156560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glStencilOpSeparate", "(IIII)V", (void *) android_glStencilOpSeparate__IIII },
6157560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glTexImage2D", "(IIIIIIIILjava/nio/Buffer;)V", (void *) android_glTexImage2D__IIIIIIIILjava_nio_Buffer_2 },
6158560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glTexParameterf", "(IIF)V", (void *) android_glTexParameterf__IIF },
6159560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glTexParameterfv", "(II[FI)V", (void *) android_glTexParameterfv__II_3FI },
6160560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glTexParameterfv", "(IILjava/nio/FloatBuffer;)V", (void *) android_glTexParameterfv__IILjava_nio_FloatBuffer_2 },
6161560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glTexParameteri", "(III)V", (void *) android_glTexParameteri__III },
6162560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glTexParameteriv", "(II[II)V", (void *) android_glTexParameteriv__II_3II },
6163560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glTexParameteriv", "(IILjava/nio/IntBuffer;)V", (void *) android_glTexParameteriv__IILjava_nio_IntBuffer_2 },
6164560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glTexSubImage2D", "(IIIIIIIILjava/nio/Buffer;)V", (void *) android_glTexSubImage2D__IIIIIIIILjava_nio_Buffer_2 },
6165560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glUniform1f", "(IF)V", (void *) android_glUniform1f__IF },
6166560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glUniform1fv", "(II[FI)V", (void *) android_glUniform1fv__II_3FI },
6167560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glUniform1fv", "(IILjava/nio/FloatBuffer;)V", (void *) android_glUniform1fv__IILjava_nio_FloatBuffer_2 },
6168560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glUniform1i", "(II)V", (void *) android_glUniform1i__II },
6169560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glUniform1iv", "(II[II)V", (void *) android_glUniform1iv__II_3II },
6170560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glUniform1iv", "(IILjava/nio/IntBuffer;)V", (void *) android_glUniform1iv__IILjava_nio_IntBuffer_2 },
6171560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glUniform2f", "(IFF)V", (void *) android_glUniform2f__IFF },
6172560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glUniform2fv", "(II[FI)V", (void *) android_glUniform2fv__II_3FI },
6173560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glUniform2fv", "(IILjava/nio/FloatBuffer;)V", (void *) android_glUniform2fv__IILjava_nio_FloatBuffer_2 },
6174560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glUniform2i", "(III)V", (void *) android_glUniform2i__III },
6175560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glUniform2iv", "(II[II)V", (void *) android_glUniform2iv__II_3II },
6176560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glUniform2iv", "(IILjava/nio/IntBuffer;)V", (void *) android_glUniform2iv__IILjava_nio_IntBuffer_2 },
6177560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glUniform3f", "(IFFF)V", (void *) android_glUniform3f__IFFF },
6178560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glUniform3fv", "(II[FI)V", (void *) android_glUniform3fv__II_3FI },
6179560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glUniform3fv", "(IILjava/nio/FloatBuffer;)V", (void *) android_glUniform3fv__IILjava_nio_FloatBuffer_2 },
6180560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glUniform3i", "(IIII)V", (void *) android_glUniform3i__IIII },
6181560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glUniform3iv", "(II[II)V", (void *) android_glUniform3iv__II_3II },
6182560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glUniform3iv", "(IILjava/nio/IntBuffer;)V", (void *) android_glUniform3iv__IILjava_nio_IntBuffer_2 },
6183560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glUniform4f", "(IFFFF)V", (void *) android_glUniform4f__IFFFF },
6184560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glUniform4fv", "(II[FI)V", (void *) android_glUniform4fv__II_3FI },
6185560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glUniform4fv", "(IILjava/nio/FloatBuffer;)V", (void *) android_glUniform4fv__IILjava_nio_FloatBuffer_2 },
6186560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glUniform4i", "(IIIII)V", (void *) android_glUniform4i__IIIII },
6187560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glUniform4iv", "(II[II)V", (void *) android_glUniform4iv__II_3II },
6188560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glUniform4iv", "(IILjava/nio/IntBuffer;)V", (void *) android_glUniform4iv__IILjava_nio_IntBuffer_2 },
6189560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glUniformMatrix2fv", "(IIZ[FI)V", (void *) android_glUniformMatrix2fv__IIZ_3FI },
6190560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glUniformMatrix2fv", "(IIZLjava/nio/FloatBuffer;)V", (void *) android_glUniformMatrix2fv__IIZLjava_nio_FloatBuffer_2 },
6191560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glUniformMatrix3fv", "(IIZ[FI)V", (void *) android_glUniformMatrix3fv__IIZ_3FI },
6192560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glUniformMatrix3fv", "(IIZLjava/nio/FloatBuffer;)V", (void *) android_glUniformMatrix3fv__IIZLjava_nio_FloatBuffer_2 },
6193560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glUniformMatrix4fv", "(IIZ[FI)V", (void *) android_glUniformMatrix4fv__IIZ_3FI },
6194560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glUniformMatrix4fv", "(IIZLjava/nio/FloatBuffer;)V", (void *) android_glUniformMatrix4fv__IIZLjava_nio_FloatBuffer_2 },
6195560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glUseProgram", "(I)V", (void *) android_glUseProgram__I },
6196560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glValidateProgram", "(I)V", (void *) android_glValidateProgram__I },
6197560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glVertexAttrib1f", "(IF)V", (void *) android_glVertexAttrib1f__IF },
6198560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glVertexAttrib1fv", "(I[FI)V", (void *) android_glVertexAttrib1fv__I_3FI },
6199560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glVertexAttrib1fv", "(ILjava/nio/FloatBuffer;)V", (void *) android_glVertexAttrib1fv__ILjava_nio_FloatBuffer_2 },
6200560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glVertexAttrib2f", "(IFF)V", (void *) android_glVertexAttrib2f__IFF },
6201560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glVertexAttrib2fv", "(I[FI)V", (void *) android_glVertexAttrib2fv__I_3FI },
6202560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glVertexAttrib2fv", "(ILjava/nio/FloatBuffer;)V", (void *) android_glVertexAttrib2fv__ILjava_nio_FloatBuffer_2 },
6203560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glVertexAttrib3f", "(IFFF)V", (void *) android_glVertexAttrib3f__IFFF },
6204560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glVertexAttrib3fv", "(I[FI)V", (void *) android_glVertexAttrib3fv__I_3FI },
6205560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glVertexAttrib3fv", "(ILjava/nio/FloatBuffer;)V", (void *) android_glVertexAttrib3fv__ILjava_nio_FloatBuffer_2 },
6206560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glVertexAttrib4f", "(IFFFF)V", (void *) android_glVertexAttrib4f__IFFFF },
6207560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glVertexAttrib4fv", "(I[FI)V", (void *) android_glVertexAttrib4fv__I_3FI },
6208560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glVertexAttrib4fv", "(ILjava/nio/FloatBuffer;)V", (void *) android_glVertexAttrib4fv__ILjava_nio_FloatBuffer_2 },
6209224107a421e2611b15d1ec736df54bca9ee3e78dJack Palevich{"glVertexAttribPointer", "(IIIZII)V", (void *) android_glVertexAttribPointer__IIIZII },
6210560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glVertexAttribPointerBounds", "(IIIZILjava/nio/Buffer;I)V", (void *) android_glVertexAttribPointerBounds__IIIZILjava_nio_Buffer_2I },
6211560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{"glViewport", "(IIII)V", (void *) android_glViewport__IIII },
6212560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich};
6213560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich
6214560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevichint register_android_opengl_jni_GLES20(JNIEnv *_env)
6215560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich{
6216560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    int err;
6217560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    err = android::AndroidRuntime::registerNativeMethods(_env, classPathName, methods, NELEM(methods));
6218560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich    return err;
6219560814f6b11abe83ff0c4ed18cac015c276b3181Jack Palevich}
6220