+ int program = glCreateProgram();
+ int vShader = glCreateShader(GL_VERTEX_SHADER);
+ int fShader = glCreateShader(GL_FRAGMENT_SHADER);
+ const char * vptr[1] = { vsSource };
+ const char * fptr[1] = { psSource };
+ int i;
+
+ glShaderSource(vShader, 1, vptr, &vsLen);
+ glShaderSource(fShader, 1, fptr, &fsLen);
+ delete vsSource;
+ delete psSource;
+
+ glCompileShader(vShader);
+ glGetShaderInfoLog(vShader, sizeof(compileLog), null, compileLog);
+ puts("Vertex Shader Compile Log:");
+ puts("--------------------------");
+ puts(compileLog[0] ? compileLog : "Success.");
+
+ glCompileShader(fShader);
+ glGetShaderInfoLog(fShader, sizeof(compileLog), null, compileLog);
+ puts("");
+ puts("");
+ puts("Fragment Shader Compile Log:");
+ puts("--------------------------");
+ puts(compileLog[0] ? compileLog : "Success.");
+
+ glAttachShader(program, vShader);
+ glAttachShader(program, fShader);
+
+ glBindAttribLocation(program, GLBufferContents::vertex, "vertex");
+ glBindAttribLocation(program, GLBufferContents::texCoord, "texCoord");
+ glBindAttribLocation(program, GLBufferContents::color, "color");
+ glBindAttribLocation(program, GLBufferContents::normal, "normal");
+ // glBindFragDataLocation(program, 0, "fragColor");
+
+ glLinkProgram(program);
+ glValidateProgram(program);
+
+ glGetProgramInfoLog(program, sizeof(compileLog), null, compileLog);
+ puts("");
+ puts("");
+ puts("Shader Program Log:");
+ puts("--------------------------");
+ puts(compileLog[0] ? compileLog : "Success.");
+
+ uPrjMatrix = glGetUniformLocation(program, "projection_matrix");
+ uMVMatrix = glGetUniformLocation(program, "modelview_matrix");
+ uTextureMatrix = glGetUniformLocation(program, "texture_matrix");
+ uColor = glGetUniformLocation(program, "current_color");
+ uTexturingOn = glGetUniformLocation(program, "texturingOn");
+ uLightingOn = glGetUniformLocation(program, "lightingOn");
+ uFogOn = glGetUniformLocation(program, "fogOn");
+ uFogDensity = glGetUniformLocation(program, "fogDensity");
+ uFogColor = glGetUniformLocation(program, "fogColor");
+ uGlobalAmbient = glGetUniformLocation(program, "globalAmbient");
+ uPerVertexColor = glGetUniformLocation(program, "perVertexColor");
+ uMatDiffuse = glGetUniformLocation(program, "matDiffuse");
+ uMatAmbient = glGetUniformLocation(program, "matAmbient");
+ uMatSpecular = glGetUniformLocation(program, "matSpecular");
+ uMatEmissive = glGetUniformLocation(program, "matEmissive");
+ uMatPower = glGetUniformLocation(program, "matPower");
+ uMatOpacity = glGetUniformLocation(program, "matOpacity");
+ uMatTwoSided = glGetUniformLocation(program, "matTwoSided");
+
+ for(i = 0; i < 8; i++)
+ {
+ char name[100];