着色器在 QML 中的插件安装

Posted

技术标签:

【中文标题】着色器在 QML 中的插件安装【英文标题】:shaders' plugin installation in QML 【发布时间】:2011-11-29 21:49:36 【问题描述】:

我想尝试使用QML ShaderEffectItem on QGraphicsView

我已经从https://qt.gitorious.org/qt-labs/qml1-shadersplugin 克隆了文件在帖子中是如何写的,并且我已经在~/Dev/GitRepo/qml1-shadersplugin$ 中编译了这个插件:

使用 QtCreator,编译这个文件:qmlshadersplugin.pro

但现在我在这个文件夹中运行(~/Dev/GitRepo/qml1-shadersplugin):make install

我有很多:错误:

~/Dev/GitRepo/qml1-shadersplugin$ make installcd src/ && make -f Makefile install
make[1]: Entering directory `/home/goran/Dev/GitRepo/qml1-shadersplugin/src'
g++ -c -m32 -pipe -O2 -D_REENTRANT -Wall -W -fPIC -DQT_NO_DEBUG -DQT_PLUGIN -DQT_DECLARATIVE_LIB -DQT_OPENGL_LIB -DQT_GUI_LIB -DQT_CORE_LIB -I../../../../QtSDK/Desktop/Qt/474/gcc/mkspecs/linux-g++-32 -I. -I../../../../QtSDK/Desktop/Qt/474/gcc/include/QtCore -I../../../../QtSDK/Desktop/Qt/474/gcc/include/QtGui -I../../../../QtSDK/Desktop/Qt/474/gcc/include/QtOpenGL -I../../../../QtSDK/Desktop/Qt/474/gcc/include/QtDeclarative -I../../../../QtSDK/Desktop/Qt/474/gcc/include -I/usr/X11R6/include -I. -o qmlshadersplugin_plugin.o qmlshadersplugin_plugin.cpp
In file included from ../../../../QtSDK/Desktop/Qt/474/gcc/include/QtOpenGL/QtOpenGL:5:0,
                 from shadereffectitem.h:46,
                 from qmlshadersplugin_plugin.cpp:43:
../../../../QtSDK/Desktop/Qt/474/gcc/include/QtOpenGL/qgl.h:77:20: fatal error: GL/gl.h: No such file or directory
compilation terminated.
make[1]: *** [qmlshadersplugin_plugin.o] Error 1
make[1]: Leaving directory `/home/igor/Dev/GitRepo/qml1-shadersplugin/src'
make: *** [sub-src-install_subtargets] Error 2

有什么问题?

【问题讨论】:

【参考方案1】:
GL/gl.h: No such file or directory

这意味着您要么没有安装 opengl 库(非常不可能),要么您没有在 qmake 文件中启用它(很可能)。要在 qmake 文件中启用 opengl,您需要添加这一行:

QT += opengl

更多信息here。

【讨论】:

或者,对我来说,最有可能的是缺少 opengl 开发包、libmesa-dev 或类似的东西。

以上是关于着色器在 QML 中的插件安装的主要内容,如果未能解决你的问题,请参考以下文章

如何避免使用着色器在 OpenGL 中消失线?

着色器在 2d OpenGL 中不起作用

QML:如何将着色器效果与 QtGraphical 效果混合?

着色器在 Opengl Shader Builder 上工作,但不在我的 OpenGL 应用程序中

如何使用OpenGL着色器在平面上绘制没有透视的纹理?

使用片段着色器在特定位置绘制完美的水平线