2013-09-25 79 views
1

我試圖幾何着色器添加到我的計劃。問題是我正在使用QGL函數,我的OpenGL版本是3.1和Qt 5.0。幾何着色器

在Qt 5.0中,QOpenGLShader和QOpenGLShaderProgram類只支持Vertex和f碎片着色器。 Qt 5.1包含對OpenGL支持的所有着色器階段(包括幾何着色器)的支持。我知道如何使用QGL函數提供的addShaderFromSourceCode添加着色器,但這樣不可能添加幾何着色器。

有人可以幫助我如何幾何着色器添加到我的計劃?

+0

你是怎麼試圖補充的?你選擇了正確的類型? http://qt-project.org/doc/qt-5.1/qtopengl/qglshader.html#ShaderTypeBit-enum當你嘗試它時會得到什麼錯誤? – lpapp

+0

你可以自由地繞過Qt的OpenGL便利功能,並使用OpenGL香草API直接加載着色器。 – datenwolf

回答

1

不要混淆QGL和QOpenGL類。首先在Qt 5中折舊並且不能使用(僅適用於Qt 4兼容代碼)。第二不具有幾何形狀着色器Qt中5.0,只從Qt的5.1(原因是Qt的5最初基於OpenGL ES爲大平臺的相容性,在Qt的5.1的溶液中加入對OpenGL 3-4支持)。

您可以使用經典的GL代碼直接使用幾何着色器(不那麼QT)

+0

你是什麼意思?有幾何着色器類型。他可以使用它。 – lpapp

+0

是的,有在舊的(obsolet)QGLShader類或使用Qt 5.1的QOpenGLShader類幾何着色器,而不是使用Qt 5.0的QOpenGLShader。 – gbdivers

+0

我有個印象,這應該工作:http://qt-project.org/doc/qt-5.1/qtgui/qopenglshader.html#ShaderTypeBit-enum是的,我給上面的qtopengl鏈接,但這似乎有型也是。 – lpapp

0

簡短的回答:你不能有此功能使用Qt 5.0和OpenGL 3.0。

請確保您使用的是Qt 5.1,因爲幾何着色器支持僅在該版本中添加。 Qt 5.0沒有這樣的功能。有關詳細信息,請參閱official documentation

另外,肖恩有blogged about it時,他們將此功能添加到Qt。寫在基於OpenGL核心特徵OpenGL的 着色語言(GLSL)

QOpenGLShader ::幾何

0x0004幾何形狀着色器(需要 的OpenGL> = 3.2)。