如何在 Android 上使用 QOpenGLWidget?
Posted
技术标签:
【中文标题】如何在 Android 上使用 QOpenGLWidget?【英文标题】:How can I use QOpenGLWidget on Android? 【发布时间】:2016-10-23 11:40:24 【问题描述】:当我尝试使用来自 Qt 5.6 的当前 Android SDK 工具 25.2.2 标准示例 - “Cube OpenGL ES 2.0 示例”进行编译时,它在 Win/Linux 上运行良好,但在黑屏上android 7.0 - API 24。
当我将 QOpenGLWidget 的对象放在 MainWindow 上时会发生相同的行为 - Android 7.0 上的黑屏 - API 24。
两种情况下的应用程序输出:
W libQtGUI.so: (null):0 ((null)): QOpenGLShader::compile(Vertex): ERROR: Valid GLSL but not GLSL ES
W libQtGUI.so: (null):0 ((null)): *** Problematic Vertex shader source code ***
W libQtGUI.so: (null):0 ((null)): #define lowp
W libQtGUI.so: #define mediump
W libQtGUI.so: #define highp
W libQtGUI.so: #line 1
W libQtGUI.so: attribute highp vec3 vertexCoord;attribute highp vec2 textureCoord;varying highp vec2 uv;uniform highp mat4 vertexTransform;uniform highp mat3 textureTransform;void main() uv = (textureTransform * vec3(textureCoord,1.0)).xy; gl_Position = vertexTransform * vec4(vertexCoord,1.0);
W libQtGUI.so: (null):0 ((null)): ***
W libQtGUI.so: (null):0 ((null)): QOpenGLShader::compile(Fragment): ERROR: Valid GLSL but not GLSL ES
W libQtGUI.so: (null):0 ((null)): *** Problematic Fragment shader source code ***
但是当我从 https://dl.google.com/android/repository/tools_r25.1.7-windows.zip 降级到 Android SDK 工具 25.1.7 时,QOpenGLWidget 只能在 MainWindow 上的 Android 上正常工作,但如果它包含 QOpenGLWidget,它不会显示任何其他 QDialog。
这是否可以在 Android 上使用 QOpenGLWidget,以及如何使用?
【问题讨论】:
【参考方案1】:错误听起来很像代码被编译为使用桌面 GL。我根本不知道 GLWidget 代码,但 Qt 构建系统在库构建期间有 opengl 版本/风格选择。这些错误听起来很像您的 Qt 是使用桌面 opengl 构建的,但 android 仅提供 opengl ES。在桌面端,您可以检查实际使用的是哪种 opengl 风格。它可能只适用于 linux/windows,因为它们提供了两种 opengl 风格的库。
【讨论】:
以上是关于如何在 Android 上使用 QOpenGLWidget?的主要内容,如果未能解决你的问题,请参考以下文章