error: C2065: 'GL_GEOMETRY_SHADER': undeclared identifier

error: C2065: 'GL_GEOMETRY_SHADER': undeclared identifier

我在尝试使用带有 Qt 5.11 的 QtCreator 和 Microsoft Visual Studio Community 2017 安装的 MSVC 2017 编译器构建应用程序时遇到此错误:

C:\Users\IEUser\go\src\companydpedpe-materials.cpp:190: error: C2065: 'GL_GEOMETRY_SHADER': undeclared identifier

错误发生在下面代码的第二行,注意第一行和第三行都可以,只有第二行是错误的:

data[renderer]->vtxShd = addShaderToProgram(vertexShaderSource, GL_VERTEX_SHADER, data[renderer]->shdPrg, renderer);
data[renderer]->geoShd = addShaderToProgram(geometryShaderSource, GL_GEOMETRY_SHADER, data[renderer]->shdPrg, renderer);
data[renderer]->frgShd = addShaderToProgram(fragmentShaderSource, GL_FRAGMENT_SHADER, data[renderer]->shdPrg, renderer);

错误截图如下:


发生错误是因为 GL_GEOMETRY_SHADER 未在以下头文件中定义:

gl3.h头文件:

    Directory: C:\Qt\Qt5.11.0.11.0\winrt_x64_msvc2017\include\QtANGLE\GLES3


Mode                LastWriteTime         Length Name
----                -------------         ------ ----
-a----        5/14/2018  11:28 PM          83875 gl3.h

gl2.h头文件:

    Directory: C:\Qt\Qt5.11.0.11.0\winrt_x64_msvc2017\include\QtANGLE\GLES2


Mode                LastWriteTime         Length Name
----                -------------         ------ ----
-a----        5/14/2018  11:28 PM          44659 gl2.h

使用 MinGW 编译器构建时 NOT 不会发生错误。


到目前为止我还想不出解决办法,只是想有人会帮忙。

OpenGL ES 3.0 支持几何着色器。参见 OpenGL ES Shading Language 3.00 Specification

但是从 OpenGL ES 3.2 开始支持几何着色器。看。 OpenGL ES Shading Language 3.20 Specification

进一步查看 Khronos OpenGL ES Registry