Quote:His card: XFX Radeon HD 5770
His OpenGL Version: 2.1.9116
ATi generally provides good drivers. However if the player got the drivers out of the box, chances are the OpenGL driver *may* not be perfect. His best bet would be to install the latest drivers of his graphics card, if not done already.
Quote:I'm wondering if the shader actually WILL work... just as a "warning" or whatever compileResults != GL_TRUE. Does compileResults only ever equal GL_TRUE or GL_FALSE? Because if it equals something like GL_WARNING then maybe I can check for that and allow the shaders to run.
compileResults will always return either GL_TRUE or GL_FALSE, according to the shader objects specifications :
http://www.opengl.org/registry/specs/ARB/shader_objects.txt - § 2.14.2, LinkProgramARB
If the result is GL_FALSE, it means that the linker failed. So you can not use this shader. Maybe some drivers will still run the shader if you bind it, but in the best case you will have undefined results and in the worst case your application will simply crash or freeze the system or eat your dog or whatever. In practice, calling glUseProgramObjectARB after a link failure will set the GL error to GL_INVALID_OPERATION, still according to the shader objects spec :
http://www.opengl.org/registry/specs/ARB/shader_objects.txt - § 2.14.2, UseProgramObjectARB
As a side note, this line is not valid :
glGetObjectParameterivARB(fragShader, GL_LINK_STATUS, compileResults);
you should ask for GL_OBJECT_LINK_STATUS (or GL_OBJECT_LINK_STATUS_ARB) instead :
glGetObjectParameterivARB(fragShader, GL_OBJECT_LINK_STATUS, compileResults);
In fact this is just a literal issue because GL_LINK_STATUS and GL_OBJECT_LINK_STATUS do equal, but that is a hack that should not be used.