GLSL Core Tutorial – Setup Example
| Prev: Creating a Program | Next: Troubleshooting: the Infolog |
The following source code contains all the steps described previously considering a program with three types of shaders: vertex, geometry, and fragment. The variable p, is assumed to be declared globally as GLuint.
void setShaders() {
GLuint v, g, f;
char *vs,*gs, *fs;
// Create shader handlers
v = glCreateShader(GL_VERTEX_SHADER);
g = glCreateShader(GL_GEOMETRY_SHADER);
f = glCreateShader(GL_FRAGMENT_SHADER);
// Read source code from files
vs = textFileRead("example.vert");
gs = textFileRead("example.geom");
fs = textFileRead("example.frag");
const char * vv = vs;
const char * gg = gs;
const char * ff = fs;
// Set shader source
glShaderSource(v, 1, &vv,NULL);
glShaderSource(g, 1, &gg,NULL);
glShaderSource(f, 1, &ff,NULL);
free(vs);free(gs);free(fs);
// Compile all shaders
glCompileShader(v);
glCompileShader(g);
glCompileShader(f);
// Create the program
p = glCreateProgram();
// Attach shaders to program
glAttachShader(p,v);
glAttachShader(p,g);
glAttachShader(p,f);
// Link and set program to use
glLinkProgram(p);
glUseProgram(p);
}
| Prev: Creating a Program | Next: Troubleshooting: the Infolog |
