Exemple #1
0
void
program::set_uniform3i(char const* varname, GLint v0, GLint v1, GLint v2) const
{
  GLint location = get_uniform_location(varname);

  if (location >= 0) 
  {
#if GPUCAST_GL_DIRECT_STATE_ACCESS
    glProgramUniform3i(id_, location, v0, v1, v2);
#else 
    glUniform3i(location, v0, v1, v2);
#endif
  } 
}
JNIEXPORT void JNICALL Java_org_lwjgl_opengl_GL41_nglProgramUniform3i(JNIEnv *env, jclass clazz, jint program, jint location, jint v0, jint v1, jint v2, jlong function_pointer) {
	glProgramUniform3iPROC glProgramUniform3i = (glProgramUniform3iPROC)((intptr_t)function_pointer);
	glProgramUniform3i(program, location, v0, v1, v2);
}
static bool
test_int(const char *version_string)
{
	GLint loc;
	bool pass = true;
	int values[4];
	int got[ARRAY_SIZE(values)];
	GLuint prog;
	static const char subtest_name[] = "integer scalar and vectors";
	const char *const shader_strings[] = {
		version_string,
		int_code,
		common_body
	};

	BUILD_SHADER(version_string == NULL);

	/* Try int
	 */
	random_ints(values, ARRAY_SIZE(values));
	loc = glGetUniformLocation(prog, "v1");
	glProgramUniform1i(prog, loc,
			   values[0]);
	pass = piglit_check_gl_error(0) && pass;

	glGetUniformiv(prog, loc, got);
	pass = piglit_check_gl_error(0) && pass;

	pass = check_int_values(values, got, 1) && pass;

	random_ints(values, ARRAY_SIZE(values));
	glProgramUniform1iv(prog, loc, 1, values);
	pass = piglit_check_gl_error(0) && pass;

	glGetUniformiv(prog, loc, got);
	pass = piglit_check_gl_error(0) && pass;

	pass = check_int_values(values, got, 1) && pass;

	/* Try ivec2
	 */
	random_ints(values, ARRAY_SIZE(values));
	loc = glGetUniformLocation(prog, "v2");
	glProgramUniform2i(prog, loc,
			   values[0], values[1]);
	pass = piglit_check_gl_error(0) && pass;

	glGetUniformiv(prog, loc, got);
	pass = piglit_check_gl_error(0) && pass;

	pass = check_int_values(values, got, 2) && pass;

	random_ints(values, ARRAY_SIZE(values));
	glProgramUniform2iv(prog, loc, 1, values);
	pass = piglit_check_gl_error(0) && pass;

	glGetUniformiv(prog, loc, got);
	pass = piglit_check_gl_error(0) && pass;

	pass = check_int_values(values, got, 2) && pass;

	/* Try ivec3
	 */
	random_ints(values, ARRAY_SIZE(values));
	loc = glGetUniformLocation(prog, "v3");
	glProgramUniform3i(prog, loc,
			   values[0], values[1], values[2]);
	pass = piglit_check_gl_error(0) && pass;

	glGetUniformiv(prog, loc, got);
	pass = piglit_check_gl_error(0) && pass;

	pass = check_int_values(values, got, 3) && pass;

	random_ints(values, ARRAY_SIZE(values));
	glProgramUniform3iv(prog, loc, 1, values);
	pass = piglit_check_gl_error(0) && pass;

	glGetUniformiv(prog, loc, got);
	pass = piglit_check_gl_error(0) && pass;

	pass = check_int_values(values, got, 3) && pass;

	/* Try ivec4
	 */
	random_ints(values, ARRAY_SIZE(values));
	loc = glGetUniformLocation(prog, "v4");
	glProgramUniform4i(prog, loc,
			   values[0], values[1], values[2], values[3]);
	pass = piglit_check_gl_error(0) && pass;

	glGetUniformiv(prog, loc, got);
	pass = piglit_check_gl_error(0) && pass;

	pass = check_int_values(values, got, 4) && pass;

	random_ints(values, ARRAY_SIZE(values));
	glProgramUniform4iv(prog, loc, 1, values);
	pass = piglit_check_gl_error(0) && pass;

	glGetUniformiv(prog, loc, got);
	pass = piglit_check_gl_error(0) && pass;

	pass = check_int_values(values, got, 4) && pass;

	piglit_report_subtest_result(pass ? PIGLIT_PASS : PIGLIT_FAIL,
				     subtest_name);

	glDeleteProgram(prog);
	return pass;
}