JNIEXPORT void JNICALL Java_org_lwjgl_opengl_ARBProgram_nglGetProgramLocalParameterfvARB(JNIEnv *env, jclass clazz, jint target, jint index, jlong params, jlong function_pointer) { GLfloat *params_address = (GLfloat *)(intptr_t)params; glGetProgramLocalParameterfvARBPROC glGetProgramLocalParameterfvARB = (glGetProgramLocalParameterfvARBPROC)((intptr_t)function_pointer); glGetProgramLocalParameterfvARB(target, index, params_address); }
JNIEXPORT void JNICALL Java_org_lwjgl_opengl_ARBVertexProgram_nglGetProgramLocalParameterfvARB__IIJ(JNIEnv *__env, jclass clazz, jint target, jint index, jlong paramsAddress) { glGetProgramLocalParameterfvARBPROC glGetProgramLocalParameterfvARB = (glGetProgramLocalParameterfvARBPROC)tlsGetFunction(1390); intptr_t params = (intptr_t)paramsAddress; UNUSED_PARAM(clazz) glGetProgramLocalParameterfvARB(target, index, params); }
PIGLIT_GL_TEST_CONFIG_END void piglit_init(int argc, char **argv) { const char *source = "!!ARBvp1.0\n" "OPTION ARB_position_invariant;\n" "MOV result.color, program.local[3];\n" "END\n"; GLuint prog; GLint max_local; GLint i; piglit_require_extension("GL_ARB_vertex_program"); prog = piglit_compile_program(GL_VERTEX_PROGRAM_ARB, source); glBindProgramARB(GL_VERTEX_PROGRAM_ARB, prog); glGetProgramivARB(GL_VERTEX_PROGRAM_ARB, GL_MAX_PROGRAM_LOCAL_PARAMETERS_ARB, &max_local); /* Limit the test to blowing through 256MB of memory. */ max_local = MIN2(max_local, 1024 * 1024 * 16); for (i = 0; i < max_local; i++) { float values[4]; values[0] = i * 4; values[1] = i * 4 + 1; values[2] = i * 4 + 2; values[3] = i * 4 + 3; glProgramLocalParameter4fvARB(GL_VERTEX_PROGRAM_ARB, i, values); } for (i = 0; i < max_local; i++) { float values[4], get_values[4]; glGetProgramLocalParameterfvARB(GL_VERTEX_PROGRAM_ARB, i, get_values); values[0] = i * 4; values[1] = i * 4 + 1; values[2] = i * 4 + 2; values[3] = i * 4 + 3; if (memcmp(values, get_values, sizeof(values)) != 0) { fprintf(stderr, "Difference on " "glGetProgramLocalParameterfvARB(%d):\n", i); fprintf(stderr, "expected: %f %f %f %f\n", values[0], values[1], values[2], values[3]); fprintf(stderr, "found: %f %f %f %f\n", get_values[0], get_values[1], get_values[2], get_values[3]); piglit_report_result(PIGLIT_FAIL); } } piglit_report_result(PIGLIT_PASS); }
JNIEXPORT void JNICALL Java_org_lwjgl_opengl_ARBProgram_nglGetProgramLocalParameterfvARB(JNIEnv *env, jclass clazz, jint target, jint index, jobject params, jint params_position, jlong function_pointer) { GLfloat *params_address = ((GLfloat *)(*env)->GetDirectBufferAddress(env, params)) + params_position; glGetProgramLocalParameterfvARBPROC glGetProgramLocalParameterfvARB = (glGetProgramLocalParameterfvARBPROC)((intptr_t)function_pointer); glGetProgramLocalParameterfvARB(target, index, params_address); }