【问题标题】:Geometry shader几何着色器
【发布时间】:2013-09-25 22:45:43
【问题描述】:

我正在尝试将几何着色器添加到我的程序中。问题是我使用的是 QGLfunctions,我的 OpenGL 版本是 3.1 和 Qt 5.0。

在 Qt 5.0 中,QOpenGLShader 和 QOpenGLShaderProgram 类仅支持顶点和片段着色器。 Qt 5.1 支持 OpenGL 支持的所有着色器阶段(包括几何着色器)。我知道如何使用 QGLfunctions 提供的 addShaderFromSourceCode 添加着色器,但这样就无法添加几何着色器。

有人可以帮我如何在我的程序中添加几何着色器吗?

【问题讨论】:

  • 您是如何尝试添加的?你选对了类型吗? qt-project.org/doc/qt-5.1/qtopengl/…你在尝试的时候遇到了什么错误?
  • 您可以随意绕过 Qt 的 OpenGL 便利功能,直接使用 OpenGL vanilla API 加载着色器。

标签: c++ qt opengl qt5


【解决方案1】:

不要混淆 QGL 和 QOpenGL 类。 First 在 Qt 5 中被贬值,不能使用(仅适用于 Qt 4 兼容代码)。第二个在 Qt 5.0 中没有几何着色器,仅来自 Qt 5.1(原因是 Qt 5 最初基于 OpenGL ES 以实现大平台兼容性,在 Qt 5.1 中添加了对 OpenGL 3-4 的支持)。

您可以使用经典的 GL 代码直接使用几何着色器(然后不使用 Qt)

【讨论】:

  • 什么意思?有一个几何着色器类型。他可以使用它。
  • 是的,在旧的(过时的)QGLShader 类或 Qt 5.1 的 QOpenGLShader 类中有几何着色器,但在 Qt 5.0 的 QOpenGLShader 中没有。
  • 我觉得这应该可以工作:qt-project.org/doc/qt-5.1/qtgui/… 是的,我在上面给出了 qtopengl 链接,但这似乎也有这种类型。
  • 在 Qt 5.1 中是的。但是这里,M_global 想使用 Qt 5.0 并且没有几何着色器支持 (qt-project.org/doc/qt-5.0/qtgui/…)
  • 好的,我明白你的意思了。我在第一条消息中添加了更正(“不在 Qt 5.0 中,仅来自 Qt 5.1”)
【解决方案2】:

简答:Qt 5.0 和 OpenGL 3.0 无法使用此功能。

确保您使用的是 Qt 5.1,因为几何着色器支持仅在该版本中添加。 Qt 5.0 没有这样的功能。详情请见official documentation

此外,当 Sean 将此功能添加到 Qt 时,Sean 有 blogged about it

QOpenGLShader::几何

0x0004 用 OpenGL 编写的几何着色器 基于 OpenGL 核心功能的着色语言 (GLSL)(需要 OpenGL >= 3.2)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多