我注意到 openGLShaderSource 的签名发生了变化:
如果您查看http://www.khronos.org/registry/gles/中的 gl2.h (对我来说是 rev 16803),签名内容如下:
GL_APICALL void GL_APIENTRY glShaderSource (GLuint shader, GLsizei count, const GLchar* const* string, const GLint* length);
现在,在该文件的旧版本(rev 10602)上,或者在查看该函数的桌面版本时,签名显示:
GL_APICALL void GL_APIENTRY glShaderSource (GLuint shader, GLsizei count, const GLchar** string, const GLint* length);
注意字符串参数缺少的“const”...
有谁知道如何检测到这一点并保持向后兼容性?据我所知,没有定义“修订”宏,可以检查使用一个版本或另一个版本。
背景信息:我正在尝试为带有新 gl2.h 标头的嵌入式平台编译 WebKit。webkit 有这个:
typedef void (*glShaderSourceType) (GLuint, GLsizei, const char**, const GLint*);
在http://opensource.apple.com/source/WebCore/WebCore-1298/platform/graphics/cairo/OpenGLShims.h中,因此当它尝试将 glShaderSource 函数指针分配给新的 glShaderSourceType 变量时无法编译gl2.h 版本...