void main(void)
{
gl_Position = ftransform();
}
void main(void)
{
gl_FragColor = vec4(1.0, 0.0, 0.0, 1.0);
}Since the color is not red, and changing the alpha value has no effect...I assume the problem is with how I'm compiling the shaders?
ShaderProgram* ResourceLoader::getShaderProgram(const std::string &vertexShader, const std::string &fragmentShader) {
const char *vertexSource = NULL;
const char *fragmentSource = NULL;
GLuint fragmentProgram;
GLuint vertexProgram;
for(std::list<std::string>::iterator itr = mPaths.begin(); itr != mPaths.end(); itr++) {
if(fileExists((*itr)+vertexShader)) {
// Load vertexShader
vertexSource = loadShaderSource((*itr)+vertexShader);
// Compile shader
vertexProgram = glCreateShader(GL_VERTEX_SHADER);
glShaderSource(vertexProgram, 1, &vertexSource, NULL);
glCompileShader(vertexProgram);
}
if(fileExists((*itr)+fragmentShader)) {
// load fragmentShader
fragmentSource = loadShaderSource((*itr)+fragmentShader);
// Compile shader
fragmentProgram = glCreateShader(GL_FRAGMENT_SHADER);
glShaderSource(fragmentProgram, 1, &fragmentSource, NULL);
glCompileShader(fragmentProgram);
}
// if both shaders were loaded, return the ShaderProgram
if(vertexSource && fragmentSource) {
// Compile the shader program
GLuint program = glCreateProgram();
glAttachShader(program, vertexProgram);
glAttachShader(program, fragmentProgram);
glLinkProgram(program);
ShaderProgram* result = new ShaderProgram(program);
// Release the buffers allocated in loadShaderSource
delete[] vertexSource;
delete[] fragmentSource;
// Return the ShaderProgram
return result;
}
}
// If the shader is incomplete (missing one of the two shader programs)
// make sure we don't leave allocated buffer behind
if(vertexSource)
delete[] vertexSource;
if(fragmentSource)
delete[] fragmentSource;
}
void GraphicsDevice::useShader(ShaderProgram* p) {
glUseProgram(p->getId());
}
void GraphicsDevice::clearShader() {
glUseProgram(0);
}






