Vertex_shader vs. vertex_program

Hello everybody,
I need help with a very simple question, i think. I work with Programshaders on a Program in an study final. On Program Startup I check, if the nessessary Extensions are available. I thought these were:

(GL_ARB_SHADING_LANGUAGE_100) or something like that.

I gave the Program to my Prof, and he can’t run the Program, because it didn’t find these Extensions. BUT he said that Shaders are supported in his Card, because he has the Extensions:


He works on a GeForce Go5650.

Sorry if this question seems silly, but I need a Answer for my Prof!

By the way - If he starts the Program, it returns with an Error, because it can’t compile the Vertex Code and the Fragment Code.

Am I right with the Extensions I checked?



Correct me if I am wrong, but GL_ARB_SHADER refers to the OpenGL Shading Language and GL_ARB_PROGRAM refers to the asm-like vertex/fragment programs. I have never worked with mobile accelerators, but somewhere I read that there are sometimes problems with bringing their drivers up to date - and this could be the issue since OpenGL Shading Language is >relatively< new…

Programs and shaders are two different things. Shaders, which resemble a subset of C/C++ are a higher-level abstraction than programs, which resemble an assembly language. You can read the definitive description of the respective extensions at the extension registry .

Your prof needs to install newer drivers. On my 5600, glsl shaders work well with NVidia drivers 66.93. But with old drivers in the 50ies they were not yet supported.

Also note that the _100 extension isn’t necessarily exposed, as GLSL support was initially implicitly assumed when vertex_shader was exposed.

The _program versions are several year old, and refer to the assembly-style shaders. If you use the Cg runtime, it might compile GLSL code to ARB_v_p for you, but then you have to re-code all the GLSL interface code to use Cg instead.

This topic was automatically closed 183 days after the last reply. New replies are no longer allowed.