void OpcodeState::load_matrix_coefficients( double green[ 3 ], double blue[ 3 ], double red[ 3 ] ) { glProgramLocalParameter4dARB( GL_FRAGMENT_PROGRAM_ARB, 0, green[ 0 ], green[ 1 ], green[ 2 ], 0 ); glProgramLocalParameter4dARB( GL_FRAGMENT_PROGRAM_ARB, 1, blue[ 0 ], blue[ 1 ], blue[ 2 ], 0 ); glProgramLocalParameter4dARB( GL_FRAGMENT_PROGRAM_ARB, 2, red[ 0 ], red[ 1 ], red[ 2 ], 0 ); OpenGLDisplay::GLcheck( "glProgramEnvParamater4dARB" ); }
void begin_spheres() { if(sphere_vertex_program_id == 0 && sphere_fragment_program_id == 0) { create_sphere_programs() ; } glDisable(GL_NORMALIZE) ; glEnable(GL_VERTEX_PROGRAM_ARB) ; glEnable(GL_VERTEX_PROGRAM_POINT_SIZE_ARB) ; glBindProgramARB(GL_VERTEX_PROGRAM_ARB, sphere_vertex_program_id) ; glEnable(GL_FRAGMENT_PROGRAM_ARB) ; glBindProgramARB(GL_FRAGMENT_PROGRAM_ARB, sphere_fragment_program_id) ; // For the moment, this is the only way we have to find the // dimension of the OpenGL window. float w=float(screen_w), h=float(screen_h), r=gx_max(w,h) ; glProgramLocalParameter4dARB(GL_VERTEX_PROGRAM_ARB, 0, 1.0/r, 0, 0, 0.2) ; glProgramLocalParameter4dARB(GL_FRAGMENT_PROGRAM_ARB, 0, -w/2.0, -h/2.0, 0, 0) ; glProgramLocalParameter4dARB(GL_FRAGMENT_PROGRAM_ARB, 1, -2.0/r, -2.0/r, 0, 0) ; glBegin(GL_POINTS) ; }
PIGLIT_GL_TEST_CONFIG_END void piglit_init(int argc, char **argv) { bool pass = true; double test_data[4] = { 0.1, 0.2, 0.3, 0.4 }; double result_data[4]; float epsilon = .00001; piglit_require_extension("GL_ARB_vertex_program"); glProgramLocalParameter4dARB(GL_VERTEX_PROGRAM_ARB, 0, test_data[0], test_data[1], test_data[2], test_data[3]); /* Produce a GL error to trick Mesa's * glGetProgramLocalParameter4dvARB code. */ glDepthFunc(0xd0d0d0d0); glGetProgramLocalParameterdvARB(GL_VERTEX_PROGRAM_ARB, 0, result_data); if (fabs(test_data[0] - result_data[0]) > epsilon || fabs(test_data[1] - result_data[1]) > epsilon || fabs(test_data[2] - result_data[2]) > epsilon || fabs(test_data[3] - result_data[3]) > epsilon) { fprintf(stderr, "glProgramLocalParamter4dvARB failed:\n"); fprintf(stderr, " Expected: (%f %f %f %f)\n", test_data[0], test_data[1], test_data[2], test_data[3]); fprintf(stderr, " Observed: (%f %f %f %f)\n", result_data[0], result_data[1], result_data[2], result_data[3]); pass = false; } /* Clear our error. */ (void)glGetError(); piglit_report_result(pass ? PIGLIT_PASS : PIGLIT_FAIL); }
JNIEXPORT void JNICALL Java_org_lwjgl_opengl_ARBProgram_nglProgramLocalParameter4dARB(JNIEnv *env, jclass clazz, jint target, jint index, jdouble x, jdouble y, jdouble z, jdouble w, jlong function_pointer) { glProgramLocalParameter4dARBPROC glProgramLocalParameter4dARB = (glProgramLocalParameter4dARBPROC)((intptr_t)function_pointer); glProgramLocalParameter4dARB(target, index, x, y, z, w); }
JNIEXPORT void JNICALL Java_org_lwjgl_opengl_ARBVertexProgram_glProgramLocalParameter4dARB(JNIEnv *__env, jclass clazz, jint target, jint index, jdouble x, jdouble y, jdouble z, jdouble w) { glProgramLocalParameter4dARBPROC glProgramLocalParameter4dARB = (glProgramLocalParameter4dARBPROC)tlsGetFunction(1384); UNUSED_PARAM(clazz) glProgramLocalParameter4dARB(target, index, x, y, z, w); }