1

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

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

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

4

2 回答 2

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)

于 2013-09-25T07:22:42.547 回答
1

简短的回答:你不能在 Qt 5.0 和 OpenGL 3.0 中拥有这个功能。

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

此外,当 Sean将此功能添加到 Qt 时,Sean 已经在博客中介绍了它。

QOpenGLShader::几何

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

于 2013-09-25T07:48:34.143 回答