The Ordinary
10-13-2008, 09:07 AM
I have read through some of the forums. But i think the best thing would be to just post my code for you to see what the problems are. I have basically followed the Lighthouse3D code to load my shader program, but when i say glGetUniformLocation, then it gives back a result of -1. (which is bad). i am sure i am just missing one thing, because it all looks correct.
please see my code and help me. i am both new to these forums and to OpenGL and GLSL coding. Thank you for any help.
//Load Vertex Shader
//Create Shader Handler
vertex_Handle=glCreateShader(GL_VERTEX_SHADER);
//Load Code from file
char *VCtempcode=textFileRead("find_Coef.vert");
const char *VSpointer=VCtempcode;
//Init Shader Program
glShaderSource(vertex_Handle,1,&VSpointer,NULL);
//free Temp Code
free(VCtempcode);
//Compile Shader
glCompileShader(vertex_Handle);
//Load Fragment Shader
//Create Shader Handler
fragment_Handle=glCreateShader(GL_FRAGMENT_SHADER) ;
//Load Code From File
char *FCtempcode= textFileRead("find_Coef.frag");
const char *FSpointer=FCtempcode;
//Init Shader Program
glShaderSource(fragment_Handle,1,&FSpointer,NULL);
//free Temp Code
free(FCtempcode);
//Compile Shader
glCompileShader(fragment_Handle);
//Bind Together
//Create Program Handler
shader_Program=glCreateProgram();
//Attach shaders to program
glAttachShader(shader_Program,vertex_Handle);
glAttachShader(shader_Program,fragment_Handle);
//Link Program (NB Shaders need to be compiled)
glLinkProgram(shader_Program);
//Get Pointers to Shader Variables
glGetUniformLocation(ShaderVariableInput_Image,"input_A");
my fragment shader is below:
uniform sampler2D input_A;
varying vec2 texCoord;
void main(void)
{
//get the values on the main diagonal
float Value=texture2D(input_A, 1.0-vec2(1.0-texCoord.y,texCoord.y)).x;
//Colour the fragment with Value
gl_FragColor = vec4(Value);
}
please see my code and help me. i am both new to these forums and to OpenGL and GLSL coding. Thank you for any help.
//Load Vertex Shader
//Create Shader Handler
vertex_Handle=glCreateShader(GL_VERTEX_SHADER);
//Load Code from file
char *VCtempcode=textFileRead("find_Coef.vert");
const char *VSpointer=VCtempcode;
//Init Shader Program
glShaderSource(vertex_Handle,1,&VSpointer,NULL);
//free Temp Code
free(VCtempcode);
//Compile Shader
glCompileShader(vertex_Handle);
//Load Fragment Shader
//Create Shader Handler
fragment_Handle=glCreateShader(GL_FRAGMENT_SHADER) ;
//Load Code From File
char *FCtempcode= textFileRead("find_Coef.frag");
const char *FSpointer=FCtempcode;
//Init Shader Program
glShaderSource(fragment_Handle,1,&FSpointer,NULL);
//free Temp Code
free(FCtempcode);
//Compile Shader
glCompileShader(fragment_Handle);
//Bind Together
//Create Program Handler
shader_Program=glCreateProgram();
//Attach shaders to program
glAttachShader(shader_Program,vertex_Handle);
glAttachShader(shader_Program,fragment_Handle);
//Link Program (NB Shaders need to be compiled)
glLinkProgram(shader_Program);
//Get Pointers to Shader Variables
glGetUniformLocation(ShaderVariableInput_Image,"input_A");
my fragment shader is below:
uniform sampler2D input_A;
varying vec2 texCoord;
void main(void)
{
//get the values on the main diagonal
float Value=texture2D(input_A, 1.0-vec2(1.0-texCoord.y,texCoord.y)).x;
//Colour the fragment with Value
gl_FragColor = vec4(Value);
}