Try this code please, and see if it works for you. I just get the pre-mature EOF compilation error in fragment shader.
void LoadShaders()
{
const GLchar *shaderSrc1[] =
{
"varying vec3 fragNormal;",
"varying vec3 lightDir;",
"attribute vec3 tangent;",
"attribute vec3 normal;",
"uniform vec3 lightSrc;",
"void main()",
"{",
"mat3 tbn;",
"tbn[0] = normalize(tangent);",
"tbn[2] = normalize(normal);",
"tbn[1] = normalize(cross(tangent, tbn[2]));",
"vec3 lv = lightSrc - vec3(gl_Vertex);",
"fragNormal = gl_Normal;",
"lightDir = tbn * lv;",
"gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex;",
"}"
};
const GLchar *shaderSrc2[] =
{
"varying vec3 fragNormal;",
"varying vec3 lightDir;",
"uniform sampler2D baseTexSamp;",
"uniform sampler2D bumpTexSamp;",
"void main()",
"{",
" float f = dot(normalize(lightDir), normalize(fragNormal));",
" gl_FragColor = texture2D(baseTexSamp, gl_TexCoord[0].st);",
"}"
};
GLuint shader1, shader2;
shader1 = glCreateShader(GL_VERTEX_SHADER);
glShaderSource(shader1, 10, shaderSrc1, NULL);
glCompileShader(shader1);
int succeeded;
int len;
char info[512];
glGetShaderiv(shader1, GL_COMPILE_STATUS, &succeeded);
if(!succeeded)
{
glGetShaderiv(shader1, GL_INFO_LOG_LENGTH, &len);
glGetShaderInfoLog(shader1, len, &len, info);
printf("
*** GLSL compilation problem in vertex shader:");
printf("
*** %s", info);
}
else
{
shader2 = glCreateShader(GL_FRAGMENT_SHADER);
glShaderSource(shader2, 10, shaderSrc2, NULL);
glCompileShader(shader2);
glGetShaderiv(shader2, GL_COMPILE_STATUS, &succeeded);
if(!succeeded)
{
glGetShaderiv(shader2, GL_INFO_LOG_LENGTH, &len);
glGetShaderInfoLog(shader1, len, &len, info);
printf("
*** GLSL compilation problem in fragment shader:");
printf("
*** %s", info);
}
}
if (succeeded)
{
GLuint program = glCreateProgram();
glAttachShader(program, shader1);
glAttachShader(program, shader2);
glLinkProgram(program);
glGetProgramiv(program, GL_LINK_STATUS, &succeeded);
if(!succeeded)
{
glGetProgramiv(program, GL_INFO_LOG_LENGTH, &len );
glGetProgramInfoLog(program, len, &len, info);
printf("
*** GLSL linking problem:");
printf("
*** %s", info);
}
}
}