Opengl es 必要时有条件地包括GLES2

Opengl es 必要时有条件地包括GLES2,opengl-es,shader,opengl-es-2.0,undefined-symbol,Opengl Es,Shader,Opengl Es 2.0,Undefined Symbol,我试图使用函数,如glCreateShader,glGetShaderiv,glDeleteProgram,但在Linux系统上导入GL/GL.h或GL/glext.h时,它们并不存在 这可能是因为它是2008年推出的一款集成图形报告的笔记本电脑: 2.1 Mesa 20.1.10 和离散卡: 3.0 Mesa 20.1.10 当我导入GLES2/gl2.h时,一切正常,包含的内容都已解决 现在,我至少一个月都无法访问桌面计算机或具有足够高图形标准的计算机-我假设这些更好的系统在标准GL/GL.

我试图使用函数,如
glCreateShader
glGetShaderiv
glDeleteProgram
,但在Linux系统上导入
GL/GL.h
GL/glext.h
时,它们并不存在

这可能是因为它是2008年推出的一款集成图形报告的笔记本电脑:

2.1 Mesa 20.1.10

和离散卡:

3.0 Mesa 20.1.10

当我导入
GLES2/gl2.h
时,一切正常,包含的内容都已解决

现在,我至少一个月都无法访问桌面计算机或具有足够高图形标准的计算机-我假设这些更好的系统在标准
GL/GL.h
文件中包含着色器功能


如何编写仅在需要时才需要GLE的条件导入?我不想在Makefile中添加变量,我希望能够自动检测到这样一个系统,其中这些符号在编译时只能作为GLES组件使用
#ifdef
序列。

您必须使用类似或的OpenGL加载程序。OpenGL(ES)是一种规范。加载程序允许您访问图形驱动程序提供的API函数

见:

const SDL\u GLContext context=SDL\u GL\u CreateContext(窗口);
if(上下文==nullptr){

std::cout您必须使用类似或的OpenGL加载程序。OpenGL(ES)是一种规范。加载程序允许您访问图形驱动程序提供的API函数

见:

const SDL\u GLContext context=SDL\u GL\u CreateContext(窗口);
if(上下文==nullptr){

std::你是否必须使用OpenGL加载程序,比如@rabbi76,这对SDL2有效吗?@rabbi76好的,我会让glew试试,然后报告回来。这与sdl无关。OpenGL(ES)是一个规范。加载程序使您可以访问图形驱动程序提供的API函数。@rabbi76好吧……简单地说,很简单。包括
GL/glew.h
并删除所有其他包含已修复了它-非常感谢。如果您将注释作为答案,我将接受它。您必须使用OpenGL加载程序r like或@rabbi76这对SDL2有用吗?@rabbi76好吧,我会让glew试试并报告回来。这与sdl.OpenGL(ES)无关是一个规范。加载程序允许您访问图形驱动程序提供的API函数。@rabbi76好吧……简单来说,很简单。包括
GL/glew.h
并删除所有其他包含已修复了它-非常感谢。如果您写下您的评论作为答案,我将接受它。