Create shader program from vertex shader and fragment shader files
| 870 | |
| 871 | // Create shader program from vertex shader and fragment shader files |
| 872 | GLuint loadGLSLProgram(const char *vertFileName, const char *fragFileName) |
| 873 | { |
| 874 | GLint linked; |
| 875 | GLuint program; |
| 876 | |
| 877 | program = glCreateProgram(); |
| 878 | |
| 879 | if (!attachShader(program, GL_VERTEX_SHADER, vertFileName)) { |
| 880 | glDeleteProgram(program); |
| 881 | fprintf(stderr, "Couldn't attach vertex shader from file %s\n", vertFileName); |
| 882 | return 0; |
| 883 | } |
| 884 | |
| 885 | if (!attachShader(program, GL_FRAGMENT_SHADER, fragFileName)) { |
| 886 | glDeleteProgram(program); |
| 887 | fprintf(stderr, "Couldn't attach fragment shader from file %s\n", fragFileName); |
| 888 | return 0; |
| 889 | } |
| 890 | |
| 891 | glLinkProgram(program); |
| 892 | glGetProgramiv(program, GL_LINK_STATUS, &linked); |
| 893 | |
| 894 | if (!linked) { |
| 895 | glDeleteProgram(program); |
| 896 | char temp[256]; |
| 897 | glGetProgramInfoLog(program, 256, 0, temp); |
| 898 | fprintf(stderr, "Failed to link program: %s\n", temp); |
| 899 | return 0; |
| 900 | } |
| 901 | |
| 902 | return program; |
| 903 | } |
no test coverage detected