2013-09-25 4 views
1

Я пытаюсь добавить геометрический шейдер в свою программу. Проблема в том, что я использую QGLfunctions, моя версия OpenGL - это 3.1 и Qt 5.0.Geometry shader

В Qt 5.0 классы QOpenGLShader и QOpenGLShaderProgram имели поддержку шейдеров Vertex andf Fragment. Qt 5.1 включает поддержку всех шейдерных этапов, поддерживаемых OpenGL (включая геометрический шейдер). Я знаю, как добавить шейдер, используя addShaderFromSourceCode, предоставленный QGLfunctions, но тем самым невозможно добавить геометрический шейдер.

Может кто-нибудь помочь мне, как добавить геометрический шейдер в мою программу?

+0

Как вы пытались это добавить? Вы выбрали правильный тип? http://qt-project.org/doc/qt-5.1/qtopengl/qglshader.html#ShaderTypeBit-enum Какая ошибка вы получили, когда пытались? – lpapp

+0

Вы можете обойти удобные функции OpenGL Qt и напрямую загружать шейдеры с помощью API OpenGL vanilla. – datenwolf

ответ

1

Не смешивайте классы QGL и QOpenGL. Сначала был обесценен в Qt 5 и не должен использоваться (только для Qt 4 совместимого кода). Во втором нет геометрических шейдеров в Qt 5.0, только из Qt 5.1 (причина в том, что Qt 5 изначально был основан на OpenGL ES для обеспечения большей совместимости платформ, поддержка OpenGL 3-4 была добавлена ​​в Qt 5.1).

Вы можете использовать классический код 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.

QOpenGLShader :: Геометрия

0x0004 Геометрические шейдеры, написанные на OpenGL Shading Language (GLSL), основанный на ядре функции OpenGL (OpenGL требует > = 3.2).

Смежные вопросы