3
char *readShaderFile(const char *FileName)
10
fp = fopen(FileName,"rt");
12
fseek(fp, 0, SEEK_END);
19
DATA = (char *)malloc(sizeof(char) * (flength+1));
20
flength = fread(DATA, sizeof(char), flength, fp);
33
void Shader::load(const char *pVertexShaderFileName, const char *pFragmentShaderFileName)
35
char *vertex_shader_source, *fragment_shader_source;
37
mVertexShader = glCreateShaderObjectARB(GL_VERTEX_SHADER);
38
mFragmentShader = glCreateShaderObjectARB(GL_FRAGMENT_SHADER);
40
vertex_shader_source = readShaderFile(pVertexShaderFileName);
42
fragment_shader_source = readShaderFile(pFragmentShaderFileName);
44
const char *vs = vertex_shader_source;
45
const char *fs = fragment_shader_source;
47
glShaderSourceARB(mVertexShader, 1, &vs, NULL);
48
glShaderSourceARB(mFragmentShader, 1, &fs, NULL);
50
free(vertex_shader_source);
51
free(fragment_shader_source);
53
glCompileShaderARB(mVertexShader);
54
glCompileShaderARB(mFragmentShader);
56
mShaderProgram = glCreateProgramObjectARB();
57
glAttachObjectARB(mShaderProgram, mFragmentShader);
58
glAttachObjectARB(mShaderProgram, mVertexShader);
60
glLinkProgram(mShaderProgram);
65
glUseProgramObjectARB(mShaderProgram);
70
glDetachObjectARB(mShaderProgram, mVertexShader);
71
glDetachObjectARB(mShaderProgram, mFragmentShader);
73
glDeleteObjectARB(mShaderProgram);