Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/drupal/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Opengl es OpenGL ES 2版本之间openGlShaderSource中的签名差异_Opengl Es - Fatal编程技术网

Opengl es OpenGL ES 2版本之间openGlShaderSource中的签名差异

Opengl es OpenGL ES 2版本之间openGlShaderSource中的签名差异,opengl-es,Opengl Es,我注意到openGLShaderSource的签名已更改: 如果您查看gl2.h(我的版本为16803),签名如下: GL_APICALL void GL_APIENTRY glShaderSource (GLuint shader, GLsizei count, const GLchar* const* string, const GLint* length); GL_APICALL void GL_APIENTRY glShaderSource (GLuin

我注意到openGLShaderSource的签名已更改:

如果您查看gl2.h(我的版本为16803),签名如下:

GL_APICALL void         GL_APIENTRY glShaderSource (GLuint shader, GLsizei count, const GLchar* const* string, const GLint* length);
GL_APICALL void         GL_APIENTRY glShaderSource (GLuint shader, GLsizei count, const GLchar** string, const GLint* length);
现在,在该文件的旧版本(版本10602)上,或者在查看该功能的桌面版本时,签名显示:

GL_APICALL void         GL_APIENTRY glShaderSource (GLuint shader, GLsizei count, const GLchar* const* string, const GLint* length);
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*);

因此,当它尝试将glShaderSource函数指针分配给具有新gl2.h版本的glShaderSourceType变量时,无法编译…

多亏了Nicol Bolas的提示!这似乎是:

void foo(const char* const*) {} void bar(const char**) {} typedef void (*ftype)(const char**); int main() { ftype f1 = reinterpret_cast(foo); ftype f2 = bar; return 0; } void foo(常量字符*常量*){} 空条(常量字符**{} typedef void(*ftype)(常量字符**); int main(){ F类型f1=重新解释铸件(foo); F型f2=钢筋; 返回0; }
你不能简单地表演一个演员吗?