fie*_*sor 2 opengl shader glsl
我对GL 2.0中集成到GL标准的着色器API与GL_ARB_vertex_program扩展中的着色器API(和朋友)之间的真正差异(如果有的话)感到困惑.
我认为有些机器可能会支持glLinkProgramARB,但可能还不支持glLinkProgram.那么使用非ARB版本有什么好处呢?或者没有.
有些机器可能会做很多事情.有些机器可能无法实现EXT_texture_filter_anisotropic.有些机器可能会实现没有顶点着色器的片段着色器.等等.
你应该问自己的问题是:你关心吗?是否值得花时间和精力来支持这样的机器?您是否希望以这种方式支持它们,而不是编写支持它们的固定功能解决方案以及旧的非着色器硬件?
一般来说,如果驱动程序不支持2.0,那么我建议为该驱动程序编写一个基于1.4的渲染路径.要么为该硬件完全放弃着色器,要么最多使用装配着色器.
在任何情况下,GLSL的扩展版本之间没有兼容性(FYI,GL_ARB_vertex_ 程序不公开.它是GL_ARB_shader_objects,GL_ARB_vertex_shader和/或GL_ARB_fragment_shader,视情况而定)和核心版本.因此,从那时起添加的任何新功能,例如在2.0和2.1之间,2.1和3.0之间等,将无法使用.你无法GLhandleARB
将a 推入一个期望a的函数GLuint
.查找绑定对象的函数也不会glUseProgram(GLuint)
与扩展等效.