OpenGL - ARB和非ARB功能之间的差异

ddl*_*ddl 3 opengl

我知道ARB意味着函数是OpenGL核心的扩展,但是如果GLEW让我能够使用例如:

glCompileShaderARB()
Run Code Online (Sandbox Code Playgroud)

glCompileShader()
Run Code Online (Sandbox Code Playgroud)

他们之间有什么区别?

And*_*man 5

前者只有在您的实现支持时才可用GL_ARB_shader_objects.此扩展在功能上与核心GLSL不同,在将3D Labs/ARB的原始设计升级为核心之前,有一些小的东西被更改/删除,当然还有很多功能名称已更改.

例如,glGetObjectParameterivARB (...)如果你习惯于看到glGetShaderiv (...)和完全混淆glGetProgramiv (...).当GLSL升级为核心时,他们将该功能分开.


glCompileShader (...)保证可用于任何实现OpenGL 2.0+的东西,这是你应该经常使用的东西,除非你正在处理古代(〜2004)的驱动程序.所有值得阅读的教程都将针对核心GLSL编写,学习ARB扩展没有意义.