【发布时间】:2014-03-08 11:49:12
【问题描述】:
我知道 ARB 意味着该函数是 OpenGL 核心的扩展,但如果 GLEW 让我能够使用例如:
glCompileShaderARB()
和
glCompileShader()
它们有什么区别?
【问题讨论】:
-
所有你需要的是谷歌的答案:opengl.org/wiki/OpenGL_Extension
标签: opengl
我知道 ARB 意味着该函数是 OpenGL 核心的扩展,但如果 GLEW 让我能够使用例如:
glCompileShaderARB()
和
glCompileShader()
它们有什么区别?
【问题讨论】:
标签: opengl
仅当您的实现支持GL_ARB_shader_objects 时,前者才可用。此扩展在功能上与核心 GLSL 不同,在升级为核心之前,3D Labs/ARB 的原始设计有一些小改动/删除,当然还有很多功能名称发生了变化。
例如,如果您习惯于看到glGetShaderiv (...) 和glGetProgramiv (...),glGetObjectParameterivARB (...) 就会彻底混淆。当 GLSL 被提升为核心时,他们拆分了该功能。
glCompileShader (...) 保证在任何实现 OpenGL 2.0+ 的程序中都可用,除非您正在处理古老的 (~2004) 驱动程序,否则您应该始终使用它。所有值得一读的教程都将针对核心 GLSL 编写,学习 ARB 扩展毫无意义。
【讨论】: