Esempio n. 1
0
File: ogl.cpp Progetto: keithw/ahab
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" );
}
Esempio n. 2
0
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);
}