【问题标题】:error: C2065: 'GL_GEOMETRY_SHADER': undeclared identifier错误:C2065:“GL_GEOMETRY_SHADER”:未声明的标识符
【发布时间】:2023-03-04 10:34:01
【问题描述】:

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

C:\Users\IEUser\go\src\company\3dpe\3dpe-materials.cpp:190: 错误: C2065:“GL_GEOMETRY_SHADER”:未声明的标识符

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

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\5.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\5.11.0\winrt_x64_msvc2017\include\QtANGLE\GLES2


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

在使用 MinGW 编译器进行构建时,该错误确实不会发生。


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

【问题讨论】:

    标签: qt opengl-es


    【解决方案1】:

    在 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

    【讨论】:

    • @user3405291 3.2 是最新的 OpenGL ES 版本。但这取决于你的硬件和驱动程序,是否支持。
    猜你喜欢
    • 2011-02-15
    • 2011-04-16
    • 2011-04-16
    • 2010-12-24
    • 2011-03-02
    • 2011-12-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多