static void TestFunctions(void) { printf("Error 0x%x at line %d\n", glGetError(), __LINE__); { GLfloat pos[3]; printf("Error 0x%x at line %d\n", glGetError(), __LINE__); printf("Light pos %g %g %g\n", pos[0], pos[1], pos[2]); } { GLfloat m[16], result[16]; GLint mPos; int i; for (i = 0; i < 16; i++) m[i] = (float) i; mPos = glGetUniformLocation_func(program, "m"); printf("Error 0x%x at line %d\n", glGetError(), __LINE__); glUniformMatrix4fv_func(mPos, 1, GL_FALSE, m); printf("Error 0x%x at line %d\n", glGetError(), __LINE__); glGetUniformfv_func(program, mPos, result); printf("Error 0x%x at line %d\n", glGetError(), __LINE__); for (i = 0; i < 16; i++) { printf("%8g %8g\n", m[i], result[i]); } } assert(glIsProgram_func(program)); assert(glIsShader_func(fragShader)); assert(glIsShader_func(vertShader)); /* attached shaders */ { GLuint shaders[20]; GLsizei count; int i; glGetAttachedShaders_func(program, 20, &count, shaders); for (i = 0; i < count; i++) { printf("Attached: %u\n", shaders[i]); assert(shaders[i] == fragShader || shaders[i] == vertShader); } } { GLchar log[1000]; GLsizei len; glGetShaderInfoLog_func(vertShader, 1000, &len, log); printf("Vert Shader Info Log: %s\n", log); glGetShaderInfoLog_func(fragShader, 1000, &len, log); printf("Frag Shader Info Log: %s\n", log); glGetProgramInfoLog_func(program, 1000, &len, log); printf("Program Info Log: %s\n", log); } }
void ShaderAPITest::test_uniform_query_matrix(void) { GLuint program; GLfloat data[18]; GLint i, r, c; GLint location; program = make_program("#version 110\nuniform mat3 m[2];\nvoid main() { gl_Position.xyz = m[1][2]; }\n", NULL); location = glGetUniformLocation_func(program, "m"); for (i = 0; i < 9; i++) data[i] = i; for (i = 9; i < 18; i++) data[i] = 321.0; glUniformMatrix3fv_func(location, 1, GL_TRUE, data); for (i = 0; i < 18; i++) data[i] = 123.0; glGetUniformfv_func(program, location, data); for (c = 0; c < 3; c++) for (r = 0; r < 3; r++) assert(data[c * 3 + r] == r * 3 + c); for (i = 9; i < 18; i++) assert(data[i] == 123.0); }