前者仅在您的实现支持GL_ARB_shader_objects时可用。这个扩展与核心GLSL在功能上不完全相同,有一些小的东西在3D Labs/ARB的原始设计被改变/删除之前,它被促进到核心,并且当然很多函数名字也发生了变化。例如,如果您习惯于看到glGetShaderiv和glGetProgramiv,则glGetObjectParameterivARB (…)会非常困惑。当GLSL被提升到核心时,他们将该函数分开。glCompileShader (…)保证在实现OpenGL 2.0+的任何情况下都可用,除非您使用古老的(~2004)驱动程序,否则您应该始终使用它。所有值得阅读的教程都将针对核心GLSL编写,并且学习ARB扩展没有意义。