1 #ifdef __APPLE__ 2 #include <TargetConditionals.h> 3 4 #if TARGET_OS_IPHONE 5 #include "iosgl30.h" 6 #include <OpenGLES/ES3/gl.h> 7 #include <OpenGLES/ES3/glext.h> 8 #include <stdio.h> 9 10 static jclass bufferClass; 11 static jclass byteBufferClass; 12 static jclass charBufferClass; 13 static jclass shortBufferClass; 14 static jclass intBufferClass; 15 static jclass longBufferClass; 16 static jclass floatBufferClass; 17 static jclass doubleBufferClass; 18 static jclass OOMEClass; 19 static jclass UOEClass; 20 static jclass IAEClass; 21 22 static jmethodID positionID; 23 24 25 static void 26 nativeClassInitBuffer(JNIEnv *_env) 27 { 28 jclass bufferClassLocal = _env->FindClass("java/nio/Buffer"); 29 bufferClass = (jclass) _env->NewGlobalRef(bufferClassLocal); 30 31 byteBufferClass = (jclass) _env->NewGlobalRef(_env->FindClass("java/nio/ByteBuffer")); 32 charBufferClass = (jclass) _env->NewGlobalRef(_env->FindClass("java/nio/CharBuffer")); 33 shortBufferClass = (jclass) _env->NewGlobalRef(_env->FindClass("java/nio/ShortBuffer")); 34 intBufferClass = (jclass) _env->NewGlobalRef(_env->FindClass("java/nio/IntBuffer")); 35 longBufferClass = (jclass) _env->NewGlobalRef(_env->FindClass("java/nio/LongBuffer")); 36 floatBufferClass = (jclass) _env->NewGlobalRef(_env->FindClass("java/nio/FloatBuffer")); 37 doubleBufferClass = (jclass) _env->NewGlobalRef(_env->FindClass("java/nio/DoubleBuffer")); 38 39 positionID = _env->GetMethodID(bufferClass, "position","()I"); 40 if(positionID == 0) _env->ThrowNew(IAEClass, "Couldn't fetch position() method"); 41 } 42 43 static void 44 nativeClassInit(JNIEnv *_env) 45 { 46 nativeClassInitBuffer(_env); 47 48 jclass IAEClassLocal = 49 _env->FindClass("java/lang/IllegalArgumentException"); 50 jclass OOMEClassLocal = 51 _env->FindClass("java/lang/OutOfMemoryError"); 52 jclass UOEClassLocal = 53 _env->FindClass("java/lang/UnsupportedOperationException"); 54 55 IAEClass = (jclass) _env->NewGlobalRef(IAEClassLocal); 56 OOMEClass = (jclass) _env->NewGlobalRef(OOMEClassLocal); 57 UOEClass = (jclass) _env->NewGlobalRef(UOEClassLocal); 58 } 59 60 static jint getElementSizeShift(JNIEnv *_env, jobject buffer) { 61 if(_env->IsInstanceOf(buffer, byteBufferClass)) return 0; 62 if(_env->IsInstanceOf(buffer, floatBufferClass)) return 2; 63 if(_env->IsInstanceOf(buffer, shortBufferClass)) return 1; 64 65 if(_env->IsInstanceOf(buffer, charBufferClass)) return 1; 66 if(_env->IsInstanceOf(buffer, intBufferClass)) return 2; 67 if(_env->IsInstanceOf(buffer, longBufferClass)) return 3; 68 if(_env->IsInstanceOf(buffer, doubleBufferClass)) return 3; 69 70 _env->ThrowNew(IAEClass, "buffer type unkown! (Not a ByteBuffer, ShortBuffer, etc.)"); 71 return 0; 72 } 73 74 inline jint getBufferPosition(JNIEnv *env, jobject buffer) 75 { 76 jint ret = env->CallIntMethodA(buffer, positionID, 0); 77 return ret; 78 } 79 80 static void * 81 getDirectBufferPointer(JNIEnv *_env, jobject buffer) { 82 if (!buffer) { 83 return NULL; 84 } 85 void* buf = _env->GetDirectBufferAddress(buffer); 86 if (buf) { 87 jint position = getBufferPosition(_env, buffer); 88 jint elementSizeShift = getElementSizeShift(_env, buffer); 89 buf = ((char*) buf) + (position << elementSizeShift); 90 } else { 91 _env->ThrowNew(IAEClass, "Must use a native order direct Buffer"); 92 } 93 return buf; 94 } 95 96 static const char* getString( JNIEnv *env, jstring string ) 97 { 98 return (const char*)env->GetStringUTFChars(string, NULL); 99 } 100 101 static void releaseString( JNIEnv *env, jstring string, const char* cString ) 102 { 103 env->ReleaseStringUTFChars(string, cString); 104 } 105 106 JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES30_init 107 (JNIEnv *env, jclass) 108 { 109 nativeClassInit( env ); 110 } 111 112 /* 113 * Class: com_badlogic_gdx_backends_iosrobovm_IOSGLES30 114 * Method: glReadBuffer 115 * Signature: (I)V 116 */ 117 JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES30_glReadBuffer 118 (JNIEnv *env, jobject, jint mode) { 119 glReadBuffer(mode); 120 } 121 122 /* 123 * Class: com_badlogic_gdx_backends_iosrobovm_IOSGLES30 124 * Method: glDrawRangeElements 125 * Signature: (IIIIILjava/nio/Buffer;)V 126 */ 127 JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES30_glDrawRangeElements__IIIIILjava_nio_Buffer_2 128 (JNIEnv *env, jobject, jint mode, jint start, jint end, jint count, jint type, jobject indices) { 129 void* dataPtr = getDirectBufferPointer( env, indices ); 130 glDrawRangeElements(mode, start, end, count, type, dataPtr); 131 } 132 133 /* 134 * Class: com_badlogic_gdx_backends_iosrobovm_IOSGLES30 135 * Method: glDrawRangeElements 136 * Signature: (IIIIII)V 137 */ 138 JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES30_glDrawRangeElements__IIIIII 139 (JNIEnv *env, jobject, jint mode, jint start, jint end, jint count, jint type, jint offset) { 140 glDrawRangeElements(mode, start, end, count, type, (void*)offset); 141 } 142 143 /* 144 * Class: com_badlogic_gdx_backends_iosrobovm_IOSGLES30 145 * Method: glTexImage3D 146 * Signature: (IIIIIIIIILjava/nio/Buffer;)V 147 */ 148 JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES30_glTexImage3D__IIIIIIIIILjava_nio_Buffer_2 149 (JNIEnv *env, jobject, jint target, jint level, jint internalformat, jint width, jint height, jint depth, jint border, jint format, jint type, jobject pixels) { 150 void* dataPtr = getDirectBufferPointer( env, pixels ); 151 glTexImage3D(target, level, internalformat, width, height, depth, border, format, type, dataPtr); 152 } 153 154 /* 155 * Class: com_badlogic_gdx_backends_iosrobovm_IOSGLES30 156 * Method: glTexImage3D 157 * Signature: (IIIIIIIIII)V 158 */ 159 JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES30_glTexImage3D__IIIIIIIIII 160 (JNIEnv *env, jobject, jint target, jint level, jint internalformat, jint width, jint height, jint depth, jint border, jint format, jint type, jint offset) { 161 glTexImage3D(target, level, internalformat, width, height, depth, border, format, type, (void*)offset); 162 } 163 164 /* 165 * Class: com_badlogic_gdx_backends_iosrobovm_IOSGLES30 166 * Method: glTexSubImage3D 167 * Signature: (IIIIIIIIIILjava/nio/Buffer;)V 168 */ 169 JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES30_glTexSubImage3D__IIIIIIIIIILjava_nio_Buffer_2 170 (JNIEnv *env, jobject, jint target, jint level, jint xoffset, jint yoffset, jint zoffset, jint width, jint height, jint depth, jint format, jint type, jobject pixels) { 171 void* dataPtr = getDirectBufferPointer( env, pixels ); 172 glTexSubImage3D(target, level, xoffset, yoffset, zoffset, width, height, depth, format, type, dataPtr); 173 } 174 175 /* 176 * Class: com_badlogic_gdx_backends_iosrobovm_IOSGLES30 177 * Method: glTexSubImage3D 178 * Signature: (IIIIIIIIIII)V 179 */ 180 JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES30_glTexSubImage3D__IIIIIIIIIII 181 (JNIEnv *env, jobject, jint target, jint level, jint xoffset, jint yoffset, jint zoffset, jint width, jint height, jint depth, jint format, jint type, jint offset) { 182 glTexSubImage3D(target, level, xoffset, yoffset, zoffset, width, height, depth, format, type, (void*)offset); 183 } 184 185 /* 186 * Class: com_badlogic_gdx_backends_iosrobovm_IOSGLES30 187 * Method: glCopyTexSubImage3D 188 * Signature: (IIIIIIIII)V 189 */ 190 JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES30_glCopyTexSubImage3D 191 (JNIEnv *env, jobject, jint target, jint level, jint xoffset, jint yoffset, jint zoffset, jint x, jint y, jint width, jint height) { 192 glCopyTexSubImage3D(target, level, xoffset, yoffset, zoffset, x, y, width, height); 193 } 194 195 /* 196 * Class: com_badlogic_gdx_backends_iosrobovm_IOSGLES30 197 * Method: glGenQueries 198 * Signature: (I[II)V 199 */ 200 JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES30_glGenQueries__I_3II 201 (JNIEnv *env, jobject, jint n, jintArray ids, jint offset) { 202 int* v = (int*)env->GetPrimitiveArrayCritical(ids, 0); 203 glGenQueries(n, (GLuint*)&v[offset]); 204 env->ReleasePrimitiveArrayCritical(ids, v, 0); 205 } 206 207 /* 208 * Class: com_badlogic_gdx_backends_iosrobovm_IOSGLES30 209 * Method: glGenQueries 210 * Signature: (ILjava/nio/IntBuffer;)V 211 */ 212 JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES30_glGenQueries__ILjava_nio_IntBuffer_2 213 (JNIEnv *env, jobject, jint n, jobject ids) { 214 void* dataPtr = getDirectBufferPointer( env, ids ); 215 glGenQueries(n, (GLuint*)dataPtr); 216 } 217 218 /* 219 * Class: com_badlogic_gdx_backends_iosrobovm_IOSGLES30 220 * Method: glDeleteQueries 221 * Signature: (I[II)V 222 */ 223 JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES30_glDeleteQueries__I_3II 224 (JNIEnv *env, jobject, jint n, jintArray ids, jint offset) { 225 void* dataPtr = getDirectBufferPointer( env, ids ); 226 glDeleteQueries(n, (GLuint*)dataPtr); 227 } 228 229 /* 230 * Class: com_badlogic_gdx_backends_iosrobovm_IOSGLES30 231 * Method: glDeleteQueries 232 * Signature: (ILjava/nio/IntBuffer;)V 233 */ 234 JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES30_glDeleteQueries__ILjava_nio_IntBuffer_2 235 (JNIEnv *env, jobject, jint n, jobject ids) { 236 void* dataPtr = getDirectBufferPointer( env, ids ); 237 glDeleteQueries(n, (GLuint*)dataPtr); 238 } 239 240 /* 241 * Class: com_badlogic_gdx_backends_iosrobovm_IOSGLES30 242 * Method: glIsQuery 243 * Signature: (I)Z 244 */ 245 JNIEXPORT jboolean JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES30_glIsQuery 246 (JNIEnv *env, jobject, jint id) { 247 return glIsQuery(id); 248 } 249 250 /* 251 * Class: com_badlogic_gdx_backends_iosrobovm_IOSGLES30 252 * Method: glBeginQuery 253 * Signature: (II)V 254 */ 255 JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES30_glBeginQuery 256 (JNIEnv *env, jobject, jint target, jint id) { 257 glBeginQuery(target, id); 258 } 259 260 /* 261 * Class: com_badlogic_gdx_backends_iosrobovm_IOSGLES30 262 * Method: glEndQuery 263 * Signature: (I)V 264 */ 265 JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES30_glEndQuery 266 (JNIEnv *env, jobject, jint target) { 267 glEndQuery(target); 268 } 269 270 /* 271 * Class: com_badlogic_gdx_backends_iosrobovm_IOSGLES30 272 * Method: glGetQueryiv 273 * Signature: (IILjava/nio/IntBuffer;)V 274 */ 275 JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES30_glGetQueryiv 276 (JNIEnv *env, jobject, jint target, jint pname, jobject params) { 277 void* dataPtr = getDirectBufferPointer( env, params ); 278 glGetQueryiv(target, pname, (GLint*)dataPtr); 279 } 280 281 /* 282 * Class: com_badlogic_gdx_backends_iosrobovm_IOSGLES30 283 * Method: glGetQueryObjectuiv 284 * Signature: (IILjava/nio/IntBuffer;)V 285 */ 286 JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES30_glGetQueryObjectuiv 287 (JNIEnv *env, jobject, jint target, jint pname, jobject params) { 288 void* dataPtr = getDirectBufferPointer( env, params ); 289 glGetQueryObjectuiv(target, pname, (GLuint*)dataPtr); 290 } 291 292 /* 293 * Class: com_badlogic_gdx_backends_iosrobovm_IOSGLES30 294 * Method: glUnmapBuffer 295 * Signature: (I)Z 296 */ 297 JNIEXPORT jboolean JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES30_glUnmapBuffer 298 (JNIEnv *env, jobject, jint target) { 299 return glUnmapBuffer(target); 300 } 301 302 /* 303 * Class: com_badlogic_gdx_backends_iosrobovm_IOSGLES30 304 * Method: glGetBufferPointerv 305 * Signature: (II)Ljava/nio/Buffer; 306 */ 307 JNIEXPORT jobject JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES30_glGetBufferPointerv 308 (JNIEnv *env, jobject, jint target, jint pname) { 309 //FIXME glGetBufferPointerv (GLenum target, GLenum pname, void **params); 310 env->ThrowNew(IAEClass, "Unsupported method"); 311 } 312 313 /* 314 * Class: com_badlogic_gdx_backends_iosrobovm_IOSGLES30 315 * Method: glDrawBuffers 316 * Signature: (ILjava/nio/IntBuffer;)V 317 */ 318 JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES30_glDrawBuffers 319 (JNIEnv *env, jobject, jint n, jobject bufs) { 320 void* dataPtr = getDirectBufferPointer( env, bufs ); 321 glDrawBuffers(n, (GLenum*)dataPtr); 322 } 323 324 /* 325 * Class: com_badlogic_gdx_backends_iosrobovm_IOSGLES30 326 * Method: glUniformMatrix2x3fv 327 * Signature: (IIZLjava/nio/FloatBuffer;)V 328 */ 329 JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES30_glUniformMatrix2x3fv 330 (JNIEnv *env, jobject, jint location, jint count, jboolean transpose, jobject value) { 331 void* dataPtr = getDirectBufferPointer( env, value ); 332 glUniformMatrix2x3fv(location, count, transpose, (GLfloat*)dataPtr); 333 } 334 335 /* 336 * Class: com_badlogic_gdx_backends_iosrobovm_IOSGLES30 337 * Method: glUniformMatrix3x2fv 338 * Signature: (IIZLjava/nio/FloatBuffer;)V 339 */ 340 JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES30_glUniformMatrix3x2fv 341 (JNIEnv *env, jobject, jint location, jint count, jboolean transpose, jobject value) { 342 void* dataPtr = getDirectBufferPointer( env, value ); 343 glUniformMatrix3x2fv(location, count, transpose, (GLfloat*)dataPtr); 344 } 345 346 /* 347 * Class: com_badlogic_gdx_backends_iosrobovm_IOSGLES30 348 * Method: glUniformMatrix2x4fv 349 * Signature: (IIZLjava/nio/FloatBuffer;)V 350 */ 351 JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES30_glUniformMatrix2x4fv 352 (JNIEnv *env, jobject, jint location, jint count, jboolean transpose, jobject value) { 353 void* dataPtr = getDirectBufferPointer( env, value ); 354 glUniformMatrix2x4fv(location, count, transpose, (GLfloat*)dataPtr); 355 } 356 357 /* 358 * Class: com_badlogic_gdx_backends_iosrobovm_IOSGLES30 359 * Method: glUniformMatrix4x2fv 360 * Signature: (IIZLjava/nio/FloatBuffer;)V 361 */ 362 JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES30_glUniformMatrix4x2fv 363 (JNIEnv *env, jobject, jint location, jint count, jboolean transpose, jobject value) { 364 void* dataPtr = getDirectBufferPointer( env, value ); 365 glUniformMatrix4x2fv(location, count, transpose, (GLfloat*)dataPtr); 366 } 367 368 /* 369 * Class: com_badlogic_gdx_backends_iosrobovm_IOSGLES30 370 * Method: glUniformMatrix3x4fv 371 * Signature: (IIZLjava/nio/FloatBuffer;)V 372 */ 373 JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES30_glUniformMatrix3x4fv 374 (JNIEnv *env, jobject, jint location, jint count, jboolean transpose, jobject value) { 375 void* dataPtr = getDirectBufferPointer( env, value ); 376 glUniformMatrix3x4fv(location, count, transpose, (GLfloat*)dataPtr); 377 } 378 379 /* 380 * Class: com_badlogic_gdx_backends_iosrobovm_IOSGLES30 381 * Method: glUniformMatrix4x3fv 382 * Signature: (IIZLjava/nio/FloatBuffer;)V 383 */ 384 JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES30_glUniformMatrix4x3fv 385 (JNIEnv *env, jobject, jint location, jint count, jboolean transpose, jobject value) { 386 void* dataPtr = getDirectBufferPointer( env, value ); 387 glUniformMatrix4x3fv(location, count, transpose, (GLfloat*)dataPtr); 388 } 389 390 /* 391 * Class: com_badlogic_gdx_backends_iosrobovm_IOSGLES30 392 * Method: glBlitFramebuffer 393 * Signature: (IIIIIIIIII)V 394 */ 395 JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES30_glBlitFramebuffer 396 (JNIEnv *env, jobject, jint srcX0, jint srcY0, jint srcX1, jint srcY1, jint dstX0, jint dstY0, jint dstX1, jint dstY1, jint mask, jint filter) { 397 glBlitFramebuffer(srcX0, srcY0, srcX1, srcY1, dstX0, dstY0, dstX1, dstY1, mask, filter); 398 } 399 400 /* 401 * Class: com_badlogic_gdx_backends_iosrobovm_IOSGLES30 402 * Method: glRenderbufferStorageMultisample 403 * Signature: (IIIII)V 404 */ 405 JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES30_glRenderbufferStorageMultisample 406 (JNIEnv *env, jobject, jint target, jint samples, jint internalformat, jint width, jint height) { 407 glRenderbufferStorageMultisample(target, samples, internalformat, width, height); 408 } 409 410 /* 411 * Class: com_badlogic_gdx_backends_iosrobovm_IOSGLES30 412 * Method: glFramebufferTextureLayer 413 * Signature: (IIIII)V 414 */ 415 JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES30_glFramebufferTextureLayer 416 (JNIEnv *env, jobject, jint target, jint attachment, jint texture, jint level, jint layer) { 417 glFramebufferTextureLayer(target, attachment, texture, level, layer); 418 } 419 420 /* 421 * Class: com_badlogic_gdx_backends_iosrobovm_IOSGLES30 422 * Method: glFlushMappedBufferRange 423 * Signature: (III)V 424 */ 425 JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES30_glFlushMappedBufferRange 426 (JNIEnv *env, jobject, jint target, jint offset, jint length) { 427 glFlushMappedBufferRange(target, offset, length); 428 } 429 430 /* 431 * Class: com_badlogic_gdx_backends_iosrobovm_IOSGLES30 432 * Method: glBindVertexArray 433 * Signature: (I)V 434 */ 435 JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES30_glBindVertexArray 436 (JNIEnv *env, jobject, jint array) { 437 glBindVertexArray(array); 438 } 439 440 /* 441 * Class: com_badlogic_gdx_backends_iosrobovm_IOSGLES30 442 * Method: glDeleteVertexArrays 443 * Signature: (I[II)V 444 */ 445 JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES30_glDeleteVertexArrays__I_3II 446 (JNIEnv *env, jobject, jint n, jintArray arrays, jint offset) { 447 int* v = (int*)env->GetPrimitiveArrayCritical(arrays, 0); 448 glDeleteVertexArrays(n, (GLuint*)&v[offset]); 449 env->ReleasePrimitiveArrayCritical(arrays, v, 0); 450 } 451 452 /* 453 * Class: com_badlogic_gdx_backends_iosrobovm_IOSGLES30 454 * Method: glDeleteVertexArrays 455 * Signature: (ILjava/nio/IntBuffer;)V 456 */ 457 JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES30_glDeleteVertexArrays__ILjava_nio_IntBuffer_2 458 (JNIEnv *env, jobject, jint n, jobject arrays) { 459 void* dataPtr = getDirectBufferPointer( env, arrays ); 460 glDeleteVertexArrays(n, (GLuint*)dataPtr); 461 } 462 463 /* 464 * Class: com_badlogic_gdx_backends_iosrobovm_IOSGLES30 465 * Method: glGenVertexArrays 466 * Signature: (I[II)V 467 */ 468 JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES30_glGenVertexArrays__I_3II 469 (JNIEnv *env, jobject, jint n, jintArray arrays, jint offset) { 470 int* v = (int*)env->GetPrimitiveArrayCritical(arrays, 0); 471 glGenVertexArrays(n, (GLuint*)&v[offset]); 472 env->ReleasePrimitiveArrayCritical(arrays, v, 0); 473 } 474 475 /* 476 * Class: com_badlogic_gdx_backends_iosrobovm_IOSGLES30 477 * Method: glGenVertexArrays 478 * Signature: (ILjava/nio/IntBuffer;)V 479 */ 480 JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES30_glGenVertexArrays__ILjava_nio_IntBuffer_2 481 (JNIEnv *env, jobject, jint n, jobject arrays) { 482 void* dataPtr = getDirectBufferPointer( env, arrays ); 483 glGenVertexArrays(n, (GLuint*)dataPtr); 484 } 485 486 /* 487 * Class: com_badlogic_gdx_backends_iosrobovm_IOSGLES30 488 * Method: glIsVertexArray 489 * Signature: (I)Z 490 */ 491 JNIEXPORT jboolean JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES30_glIsVertexArray 492 (JNIEnv *env, jobject, jint array) { 493 return glIsVertexArray(array); 494 } 495 496 /* 497 * Class: com_badlogic_gdx_backends_iosrobovm_IOSGLES30 498 * Method: glBeginTransformFeedback 499 * Signature: (I)V 500 */ 501 JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES30_glBeginTransformFeedback 502 (JNIEnv *env, jobject, jint primitiveMode) { 503 glBeginTransformFeedback(primitiveMode); 504 } 505 506 /* 507 * Class: com_badlogic_gdx_backends_iosrobovm_IOSGLES30 508 * Method: glEndTransformFeedback 509 * Signature: ()V 510 */ 511 JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES30_glEndTransformFeedback 512 (JNIEnv *env, jobject) { 513 glEndTransformFeedback(); 514 } 515 516 /* 517 * Class: com_badlogic_gdx_backends_iosrobovm_IOSGLES30 518 * Method: glBindBufferRange 519 * Signature: (IIIII)V 520 */ 521 JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES30_glBindBufferRange 522 (JNIEnv *env, jobject, jint target, jint index, jint buffer, jint offset, jint size) { 523 glBindBufferRange(target, index, buffer, offset, size); 524 } 525 526 /* 527 * Class: com_badlogic_gdx_backends_iosrobovm_IOSGLES30 528 * Method: glBindBufferBase 529 * Signature: (III)V 530 */ 531 JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES30_glBindBufferBase 532 (JNIEnv *env, jobject, jint target, jint index, jint buffer) { 533 glBindBufferBase(target, index, buffer); 534 } 535 536 /* 537 * Class: com_badlogic_gdx_backends_iosrobovm_IOSGLES30 538 * Method: glTransformFeedbackVaryings 539 * Signature: (I[Ljava/lang/String;I)V 540 */ 541 JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES30_glTransformFeedbackVaryings 542 (JNIEnv *env, jobject, jint program, jobjectArray varyings, jint buffermode) { 543 //FIXME: convert String[] to char** 544 env->ThrowNew(IAEClass, "Unsupported method"); 545 } 546 547 /* 548 * Class: com_badlogic_gdx_backends_iosrobovm_IOSGLES30 549 * Method: glVertexAttribIPointer 550 * Signature: (IIIII)V 551 */ 552 JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES30_glVertexAttribIPointer 553 (JNIEnv *env, jobject, jint index, jint size, jint type, jint stride, jint offset) { 554 glVertexAttribIPointer(index, size, type, stride, (void*)offset); 555 } 556 557 /* 558 * Class: com_badlogic_gdx_backends_iosrobovm_IOSGLES30 559 * Method: glGetVertexAttribIiv 560 * Signature: (IILjava/nio/IntBuffer;)V 561 */ 562 JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES30_glGetVertexAttribIiv 563 (JNIEnv *env, jobject, jint index, jint pname, jobject params) { 564 void* dataPtr = getDirectBufferPointer( env, params ); 565 glGetVertexAttribIiv(index, pname, (GLint*)dataPtr); 566 } 567 568 /* 569 * Class: com_badlogic_gdx_backends_iosrobovm_IOSGLES30 570 * Method: glGetVertexAttribIuiv 571 * Signature: (IILjava/nio/IntBuffer;)V 572 */ 573 JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES30_glGetVertexAttribIuiv 574 (JNIEnv *env, jobject, jint index, jint pname, jobject params) { 575 void* dataPtr = getDirectBufferPointer( env, params ); 576 glGetVertexAttribIuiv(index, pname, (GLuint*)dataPtr); 577 } 578 579 /* 580 * Class: com_badlogic_gdx_backends_iosrobovm_IOSGLES30 581 * Method: glVertexAttribI4i 582 * Signature: (IIIII)V 583 */ 584 JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES30_glVertexAttribI4i 585 (JNIEnv *env, jobject, jint index, jint x, jint y, jint z, jint w) { 586 glVertexAttribI4i(index, x, y, z, w); 587 } 588 589 /* 590 * Class: com_badlogic_gdx_backends_iosrobovm_IOSGLES30 591 * Method: glVertexAttribI4ui 592 * Signature: (IIIII)V 593 */ 594 JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES30_glVertexAttribI4ui 595 (JNIEnv *env, jobject, jint index, jint x, jint y, jint z, jint w) { 596 glVertexAttribI4ui(index, x, y, z, w); 597 } 598 599 /* 600 * Class: com_badlogic_gdx_backends_iosrobovm_IOSGLES30 601 * Method: glGetUniformuiv 602 * Signature: (IILjava/nio/IntBuffer;)V 603 */ 604 JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES30_glGetUniformuiv 605 (JNIEnv *env, jobject, jint program, jint location, jobject params) { 606 void* dataPtr = getDirectBufferPointer( env, params ); 607 glGetUniformuiv(program, location, (GLuint*)dataPtr); 608 } 609 610 /* 611 * Class: com_badlogic_gdx_backends_iosrobovm_IOSGLES30 612 * Method: glGetFragDataLocation 613 * Signature: (ILjava/lang/String;)I 614 */ 615 JNIEXPORT jint JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES30_glGetFragDataLocation 616 (JNIEnv *env, jobject, jint program, jstring name) { 617 const char* cname = getString( env, name ); 618 int loc = glGetFragDataLocation(program, cname); 619 releaseString( env, name, cname ); 620 } 621 622 /* 623 * Class: com_badlogic_gdx_backends_iosrobovm_IOSGLES30 624 * Method: glUniform1uiv 625 * Signature: (IILjava/nio/IntBuffer;)V 626 */ 627 JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES30_glUniform1uiv 628 (JNIEnv *env, jobject, jint location, jint count, jobject value) { 629 void* dataPtr = getDirectBufferPointer( env, value ); 630 glUniform1uiv(location, count, (GLuint*)dataPtr); 631 } 632 633 /* 634 * Class: com_badlogic_gdx_backends_iosrobovm_IOSGLES30 635 * Method: glUniform3uiv 636 * Signature: (IILjava/nio/IntBuffer;)V 637 */ 638 JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES30_glUniform3uiv 639 (JNIEnv *env, jobject, jint location, jint count, jobject value) { 640 void* dataPtr = getDirectBufferPointer( env, value ); 641 glUniform3uiv(location, count, (GLuint*)dataPtr); 642 } 643 644 /* 645 * Class: com_badlogic_gdx_backends_iosrobovm_IOSGLES30 646 * Method: glUniform4uiv 647 * Signature: (IILjava/nio/IntBuffer;)V 648 */ 649 JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES30_glUniform4uiv 650 (JNIEnv *env, jobject, jint location, jint count, jobject value) { 651 void* dataPtr = getDirectBufferPointer( env, value ); 652 glUniform4uiv(location, count, (GLuint*)dataPtr); 653 } 654 655 /* 656 * Class: com_badlogic_gdx_backends_iosrobovm_IOSGLES30 657 * Method: glClearBufferiv 658 * Signature: (IILjava/nio/IntBuffer;)V 659 */ 660 JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES30_glClearBufferiv 661 (JNIEnv *env, jobject, jint buffer, jint drawbuffer, jobject value) { 662 void* dataPtr = getDirectBufferPointer( env, value ); 663 glClearBufferiv(buffer, drawbuffer, (GLint*)dataPtr); 664 } 665 666 /* 667 * Class: com_badlogic_gdx_backends_iosrobovm_IOSGLES30 668 * Method: glClearBufferuiv 669 * Signature: (IILjava/nio/IntBuffer;)V 670 */ 671 JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES30_glClearBufferuiv 672 (JNIEnv *env, jobject, jint buffer, jint drawbuffer, jobject value) { 673 void* dataPtr = getDirectBufferPointer( env, value ); 674 glClearBufferuiv(buffer, drawbuffer, (GLuint*)dataPtr); 675 } 676 677 /* 678 * Class: com_badlogic_gdx_backends_iosrobovm_IOSGLES30 679 * Method: glClearBufferfv 680 * Signature: (IILjava/nio/FloatBuffer;)V 681 */ 682 JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES30_glClearBufferfv 683 (JNIEnv *env, jobject, jint buffer, jint drawbuffer, jobject value) { 684 void* dataPtr = getDirectBufferPointer( env, value ); 685 glClearBufferfv(buffer, drawbuffer, (GLfloat*)dataPtr); 686 } 687 688 /* 689 * Class: com_badlogic_gdx_backends_iosrobovm_IOSGLES30 690 * Method: glClearBufferfi 691 * Signature: (IIFI)V 692 */ 693 JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES30_glClearBufferfi 694 (JNIEnv *env, jobject, jint buffer, jint drawbuffer, jfloat depth, jint stencil) { 695 glClearBufferfi(buffer, drawbuffer, depth, stencil); 696 } 697 698 /* 699 * Class: com_badlogic_gdx_backends_iosrobovm_IOSGLES30 700 * Method: glGetStringi 701 * Signature: (II)Ljava/lang/String; 702 */ 703 JNIEXPORT jstring JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES30_glGetStringi 704 (JNIEnv *env, jobject, jint name, jint index) { 705 return env->NewStringUTF((const char *)glGetStringi(name, index)); 706 } 707 708 /* 709 * Class: com_badlogic_gdx_backends_iosrobovm_IOSGLES30 710 * Method: glCopyBufferSubData 711 * Signature: (IIIII)V 712 */ 713 JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES30_glCopyBufferSubData 714 (JNIEnv *env, jobject, jint readTarget, jint writeTarget, jint readOffset, jint writeOffset, jint size) { 715 glCopyBufferSubData(readTarget, writeTarget, readOffset, writeOffset, size); 716 } 717 718 /* 719 * Class: com_badlogic_gdx_backends_iosrobovm_IOSGLES30 720 * Method: glGetUniformIndices 721 * Signature: (I[Ljava/lang/String;Ljava/nio/IntBuffer;)V 722 */ 723 JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES30_glGetUniformIndices 724 (JNIEnv *env, jobject, jint, jobjectArray, jobject) { 725 //FIXME: glGetUniformIndices (GLuint program, GLsizei uniformCount, const GLchar *const*uniformNames, GLuint *uniformIndices); 726 env->ThrowNew(IAEClass, "Unsupported method"); 727 } 728 729 /* 730 * Class: com_badlogic_gdx_backends_iosrobovm_IOSGLES30 731 * Method: glGetActiveUniformsiv 732 * Signature: (IILjava/nio/IntBuffer;ILjava/nio/IntBuffer;)V 733 */ 734 JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES30_glGetActiveUniformsiv 735 (JNIEnv *env, jobject, jint program, jint uniformCount, jobject indices, jint pname, jobject params) { 736 void* indicesPtr = getDirectBufferPointer( env, indices ); 737 void* paramsPtr = getDirectBufferPointer( env, params ); 738 glGetActiveUniformsiv(program, uniformCount, (GLuint*)indicesPtr, pname, (GLint*)paramsPtr); 739 } 740 741 /* 742 * Class: com_badlogic_gdx_backends_iosrobovm_IOSGLES30 743 * Method: glGetUniformBlockIndex 744 * Signature: (ILjava/lang/String;)I 745 */ 746 JNIEXPORT jint JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES30_glGetUniformBlockIndex 747 (JNIEnv *env, jobject, jint program, jstring uniformBlockName) { 748 const char* cname = getString( env, uniformBlockName ); 749 int loc = glGetUniformBlockIndex(program, cname); 750 releaseString( env, uniformBlockName, cname ); 751 return loc; 752 } 753 754 /* 755 * Class: com_badlogic_gdx_backends_iosrobovm_IOSGLES30 756 * Method: glGetActiveUniformBlockiv 757 * Signature: (IIILjava/nio/IntBuffer;)V 758 */ 759 JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES30_glGetActiveUniformBlockiv 760 (JNIEnv *env, jobject, jint program, jint uniformBlockIndex, jint pname, jobject params) { 761 void* dataPtr = getDirectBufferPointer( env, params ); 762 glGetActiveUniformBlockiv(program, uniformBlockIndex, pname, (GLint*)dataPtr); 763 } 764 765 /* 766 * Class: com_badlogic_gdx_backends_iosrobovm_IOSGLES30 767 * Method: glGetActiveUniformBlockName 768 * Signature: (IILjava/nio/Buffer;Ljava/nio/Buffer;)V 769 */ 770 JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES30_glGetActiveUniformBlockName__IILjava_nio_Buffer_2Ljava_nio_Buffer_2 771 (JNIEnv *env, jobject, jint, jint, jobject, jobject) { 772 //FIXME: glGetActiveUniformBlockName (GLuint program, GLuint uniformBlockIndex, GLsizei bufSize, GLsizei *length, GLchar *uniformBlockName); 773 env->ThrowNew(IAEClass, "Unsupported method"); 774 } 775 776 /* 777 * Class: com_badlogic_gdx_backends_iosrobovm_IOSGLES30 778 * Method: glGetActiveUniformBlockName 779 * Signature: (II)Ljava/lang/String; 780 */ 781 JNIEXPORT jstring JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES30_glGetActiveUniformBlockName__II 782 (JNIEnv *env, jobject, jint, jint) { 783 //FIXME: glGetActiveUniformBlockName (GLuint program, GLuint uniformBlockIndex, GLsizei bufSize, GLsizei *length, GLchar *uniformBlockName); 784 env->ThrowNew(IAEClass, "Unsupported method"); 785 } 786 787 /* 788 * Class: com_badlogic_gdx_backends_iosrobovm_IOSGLES30 789 * Method: glUniformBlockBinding 790 * Signature: (III)V 791 */ 792 JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES30_glUniformBlockBinding 793 (JNIEnv *env, jobject, jint program, jint uniformBlockIndex, jint uniformBlockBinding) { 794 glUniformBlockBinding(program, uniformBlockIndex, uniformBlockBinding); 795 } 796 797 /* 798 * Class: com_badlogic_gdx_backends_iosrobovm_IOSGLES30 799 * Method: glDrawArraysInstanced 800 * Signature: (IIII)V 801 */ 802 JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES30_glDrawArraysInstanced 803 (JNIEnv *env, jobject, jint mode, jint first, jint count, jint instancecount) { 804 glDrawArraysInstanced(mode, first, count, instancecount); 805 } 806 807 /* 808 * Class: com_badlogic_gdx_backends_iosrobovm_IOSGLES30 809 * Method: glDrawElementsInstanced 810 * Signature: (IIIII)V 811 */ 812 JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES30_glDrawElementsInstanced 813 (JNIEnv *env, jobject, jint mode, jint count, jint type, jint indicesOffset, jint instancecount) { 814 glDrawElementsInstanced(mode, count, type, (GLvoid*)indicesOffset, instancecount); 815 } 816 817 /* 818 * Class: com_badlogic_gdx_backends_iosrobovm_IOSGLES30 819 * Method: glGetInteger64v 820 * Signature: (ILjava/nio/LongBuffer;)V 821 */ 822 JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES30_glGetInteger64v 823 (JNIEnv *env, jobject, jint pname, jobject data) { 824 void* dataPtr = getDirectBufferPointer( env, data ); 825 glGetInteger64v(pname, (GLint64*)dataPtr); 826 } 827 828 /* 829 * Class: com_badlogic_gdx_backends_iosrobovm_IOSGLES30 830 * Method: glGetBufferParameteri64v 831 * Signature: (IILjava/nio/LongBuffer;)V 832 */ 833 JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES30_glGetBufferParameteri64v 834 (JNIEnv *env, jobject, jint target, jint pname, jobject params) { 835 void* dataPtr = getDirectBufferPointer( env, params ); 836 glGetBufferParameteri64v(target, pname, (GLint64*)dataPtr); 837 } 838 839 /* 840 * Class: com_badlogic_gdx_backends_iosrobovm_IOSGLES30 841 * Method: glGenSamplers 842 * Signature: (I[II)V 843 */ 844 JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES30_glGenSamplers__I_3II 845 (JNIEnv *env, jobject, jint count, jintArray samplers, jint offset) { 846 int* v = (int*)env->GetPrimitiveArrayCritical(samplers, 0); 847 glGenSamplers(count, (GLuint*)&v[offset]); 848 env->ReleasePrimitiveArrayCritical(samplers, v, 0); 849 } 850 851 /* 852 * Class: com_badlogic_gdx_backends_iosrobovm_IOSGLES30 853 * Method: glGenSamplers 854 * Signature: (ILjava/nio/IntBuffer;)V 855 */ 856 JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES30_glGenSamplers__ILjava_nio_IntBuffer_2 857 (JNIEnv *env, jobject, jint count, jobject samplers) { 858 void* dataPtr = getDirectBufferPointer( env, samplers ); 859 glGenSamplers(count, (GLuint*)dataPtr); 860 } 861 862 /* 863 * Class: com_badlogic_gdx_backends_iosrobovm_IOSGLES30 864 * Method: glDeleteSamplers 865 * Signature: (I[II)V 866 */ 867 JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES30_glDeleteSamplers__I_3II 868 (JNIEnv *env, jobject, jint count, jintArray samplers, jint offset) { 869 int* v = (int*)env->GetPrimitiveArrayCritical(samplers, 0); 870 glDeleteSamplers(count, (GLuint*)&v[offset]); 871 env->ReleasePrimitiveArrayCritical(samplers, v, 0); 872 } 873 874 /* 875 * Class: com_badlogic_gdx_backends_iosrobovm_IOSGLES30 876 * Method: glDeleteSamplers 877 * Signature: (ILjava/nio/IntBuffer;)V 878 */ 879 JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES30_glDeleteSamplers__ILjava_nio_IntBuffer_2 880 (JNIEnv *env, jobject, jint count, jobject samplers) { 881 void* dataPtr = getDirectBufferPointer( env, samplers ); 882 glDeleteSamplers(count, (GLuint*)dataPtr); 883 } 884 885 /* 886 * Class: com_badlogic_gdx_backends_iosrobovm_IOSGLES30 887 * Method: glIsSampler 888 * Signature: (I)Z 889 */ 890 JNIEXPORT jboolean JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES30_glIsSampler 891 (JNIEnv *env, jobject, jint sampler) { 892 return glIsSampler(sampler); 893 } 894 895 /* 896 * Class: com_badlogic_gdx_backends_iosrobovm_IOSGLES30 897 * Method: glBindSampler 898 * Signature: (II)V 899 */ 900 JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES30_glBindSampler 901 (JNIEnv *env, jobject, jint unit, jint sampler) { 902 glBindSampler(unit, sampler); 903 } 904 905 /* 906 * Class: com_badlogic_gdx_backends_iosrobovm_IOSGLES30 907 * Method: glSamplerParameteri 908 * Signature: (III)V 909 */ 910 JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES30_glSamplerParameteri 911 (JNIEnv *env, jobject, jint sampler, jint pname, jint param) { 912 glSamplerParameteri(sampler, pname, param); 913 } 914 915 /* 916 * Class: com_badlogic_gdx_backends_iosrobovm_IOSGLES30 917 * Method: glSamplerParameteriv 918 * Signature: (IILjava/nio/IntBuffer;)V 919 */ 920 JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES30_glSamplerParameteriv 921 (JNIEnv *env, jobject, jint sampler, jint pname, jobject params) { 922 void* dataPtr = getDirectBufferPointer( env, params ); 923 glSamplerParameteriv(sampler, pname, (GLint*)dataPtr); 924 } 925 926 /* 927 * Class: com_badlogic_gdx_backends_iosrobovm_IOSGLES30 928 * Method: glSamplerParameterf 929 * Signature: (IIF)V 930 */ 931 JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES30_glSamplerParameterf 932 (JNIEnv *env, jobject, jint sampler, jint pname, jfloat param) { 933 glSamplerParameterf(sampler, pname, param); 934 } 935 936 /* 937 * Class: com_badlogic_gdx_backends_iosrobovm_IOSGLES30 938 * Method: glSamplerParameterfv 939 * Signature: (IILjava/nio/FloatBuffer;)V 940 */ 941 JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES30_glSamplerParameterfv 942 (JNIEnv *env, jobject, jint sampler, jint pname, jobject params) { 943 void* dataPtr = getDirectBufferPointer( env, params ); 944 glSamplerParameterfv(sampler, pname, (GLfloat*)dataPtr); 945 } 946 947 /* 948 * Class: com_badlogic_gdx_backends_iosrobovm_IOSGLES30 949 * Method: glGetSamplerParameteriv 950 * Signature: (IILjava/nio/IntBuffer;)V 951 */ 952 JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES30_glGetSamplerParameteriv 953 (JNIEnv *env, jobject, jint sampler, jint pname, jobject params) { 954 void* dataPtr = getDirectBufferPointer( env, params ); 955 glGetSamplerParameteriv(sampler, pname, (GLint*)dataPtr); 956 } 957 958 /* 959 * Class: com_badlogic_gdx_backends_iosrobovm_IOSGLES30 960 * Method: glGetSamplerParameterfv 961 * Signature: (IILjava/nio/FloatBuffer;)V 962 */ 963 JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES30_glGetSamplerParameterfv 964 (JNIEnv *env, jobject, jint sampler, jint pname, jobject params) { 965 void* dataPtr = getDirectBufferPointer( env, params ); 966 glGetSamplerParameterfv(sampler, pname, (GLfloat*)dataPtr); 967 } 968 969 /* 970 * Class: com_badlogic_gdx_backends_iosrobovm_IOSGLES30 971 * Method: glVertexAttribDivisor 972 * Signature: (II)V 973 */ 974 JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES30_glVertexAttribDivisor 975 (JNIEnv *env, jobject, jint index, jint divisor) { 976 glVertexAttribDivisor(index, divisor); 977 } 978 979 /* 980 * Class: com_badlogic_gdx_backends_iosrobovm_IOSGLES30 981 * Method: glBindTransformFeedback 982 * Signature: (II)V 983 */ 984 JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES30_glBindTransformFeedback 985 (JNIEnv *env, jobject, jint target, jint id) { 986 glBindTransformFeedback(target, id); 987 } 988 989 /* 990 * Class: com_badlogic_gdx_backends_iosrobovm_IOSGLES30 991 * Method: glDeleteTransformFeedbacks 992 * Signature: (I[II)V 993 */ 994 JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES30_glDeleteTransformFeedbacks__I_3II 995 (JNIEnv *env, jobject, jint n, jintArray ids, jint offset) { 996 int* v = (int*)env->GetPrimitiveArrayCritical(ids, 0); 997 glDeleteTransformFeedbacks(n, (GLuint*)&v[offset]); 998 env->ReleasePrimitiveArrayCritical(ids, v, 0); 999 } 1000 1001 /* 1002 * Class: com_badlogic_gdx_backends_iosrobovm_IOSGLES30 1003 * Method: glDeleteTransformFeedbacks 1004 * Signature: (ILjava/nio/IntBuffer;)V 1005 */ 1006 JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES30_glDeleteTransformFeedbacks__ILjava_nio_IntBuffer_2 1007 (JNIEnv *env, jobject, jint n, jobject ids) { 1008 void* dataPtr = getDirectBufferPointer( env, ids ); 1009 glDeleteTransformFeedbacks(n, (GLuint*)dataPtr); 1010 } 1011 1012 /* 1013 * Class: com_badlogic_gdx_backends_iosrobovm_IOSGLES30 1014 * Method: glGenTransformFeedbacks 1015 * Signature: (I[II)V 1016 */ 1017 JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES30_glGenTransformFeedbacks__I_3II 1018 (JNIEnv *env, jobject, jint n, jintArray ids, jint offset) { 1019 int* v = (int*)env->GetPrimitiveArrayCritical(ids, 0); 1020 glGenTransformFeedbacks(n, (GLuint*)&v[offset]); 1021 env->ReleasePrimitiveArrayCritical(ids, v, 0); 1022 } 1023 1024 /* 1025 * Class: com_badlogic_gdx_backends_iosrobovm_IOSGLES30 1026 * Method: glGenTransformFeedbacks 1027 * Signature: (ILjava/nio/IntBuffer;)V 1028 */ 1029 JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES30_glGenTransformFeedbacks__ILjava_nio_IntBuffer_2 1030 (JNIEnv *env, jobject, jint n, jobject ids) { 1031 void* dataPtr = getDirectBufferPointer( env, ids ); 1032 glGenTransformFeedbacks(n, (GLuint*)dataPtr); 1033 } 1034 1035 /* 1036 * Class: com_badlogic_gdx_backends_iosrobovm_IOSGLES30 1037 * Method: glIsTransformFeedback 1038 * Signature: (I)Z 1039 */ 1040 JNIEXPORT jboolean JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES30_glIsTransformFeedback 1041 (JNIEnv *env, jobject, jint id) { 1042 return glIsTransformFeedback(id); 1043 } 1044 1045 /* 1046 * Class: com_badlogic_gdx_backends_iosrobovm_IOSGLES30 1047 * Method: glPauseTransformFeedback 1048 * Signature: ()V 1049 */ 1050 JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES30_glPauseTransformFeedback 1051 (JNIEnv *env, jobject) { 1052 glPauseTransformFeedback(); 1053 } 1054 /* 1055 * Class: com_badlogic_gdx_backends_iosrobovm_IOSGLES30 1056 * Method: glResumeTransformFeedback 1057 * Signature: ()V 1058 */ 1059 JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES30_glResumeTransformFeedback 1060 (JNIEnv *env, jobject) { 1061 glResumeTransformFeedback(); 1062 } 1063 1064 /* 1065 * Class: com_badlogic_gdx_backends_iosrobovm_IOSGLES30 1066 * Method: glProgramParameteri 1067 * Signature: (III)V 1068 */ 1069 JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES30_glProgramParameteri 1070 (JNIEnv *env, jobject, jint program, jint pname, jint value) { 1071 glProgramParameteri(program, pname, value); 1072 } 1073 1074 /* 1075 * Class: com_badlogic_gdx_backends_iosrobovm_IOSGLES30 1076 * Method: glInvalidateFramebuffer 1077 * Signature: (IILjava/nio/IntBuffer;)V 1078 */ 1079 JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES30_glInvalidateFramebuffer 1080 (JNIEnv *env, jobject, jint target, jint numAttachments, jobject attachments) { 1081 void* dataPtr = getDirectBufferPointer( env, attachments ); 1082 glInvalidateFramebuffer(target, numAttachments, (GLenum*)dataPtr); 1083 } 1084 1085 /* 1086 * Class: com_badlogic_gdx_backends_iosrobovm_IOSGLES30 1087 * Method: glInvalidateSubFramebuffer 1088 * Signature: (IILjava/nio/IntBuffer;IIII)V 1089 */ 1090 JNIEXPORT void JNICALL Java_com_badlogic_gdx_backends_iosrobovm_IOSGLES30_glInvalidateSubFramebuffer 1091 (JNIEnv *env, jobject, jint target, jint numAttachments, jobject attachments, jint x, jint y, jint width, jint height) { 1092 void* dataPtr = getDirectBufferPointer( env, attachments ); 1093 glInvalidateSubFramebuffer(target, numAttachments, (GLenum*)dataPtr, x, y, width, height); 1094 } 1095 1096 1097 #endif 1098 #endif