我知道ARB意味着函数是OpenGL核心的扩展,但是如果GLEW让我能够使用例如:
glCompileShaderARB()
和
glCompileShader()
他们之间有什么区别?
答案 0 :(得分:5)
前者只有在您的实施支持GL_ARB_shader_objects
时才可用。这个扩展在功能上与核心GLSL不同,在将3D Labs / ARB的原始设计升级到核心之前,有一些小的东西被改变/删除了,当然还有很多功能名称发生了变化。
例如,如果您习惯于看到glGetObjectParameterivARB (...)
和glGetShaderiv (...)
,则glGetProgramiv (...)
会让您感到非常困惑。当GLSL升级为核心时,他们将该功能分开。
<小时/>
glCompileShader (...)
保证可以在任何实现OpenGL 2.0+的地方使用,除非你正在处理古代(~2004)驱动程序,否则这是你应该经常使用的。所有值得阅读的教程都将针对核心GLSL编写,学习ARB扩展没有意义。