如何在Android上使用QOpenGLWidget?

时间:2016-10-23 11:40:24

标签: android qt opengl-es opengl-es-2.0

当我尝试使用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上正常运行,但是如果它包含任何其他QDialog它没有显示任何内容QOpenGLWidget。

这可以在Android上使用QOpenGLWidget,以及如何使用?

1 个答案:

答案 0 :(得分:3)

错误听起来很像代码编译为使用桌面GL。我根本不了解GLWidget代码,但Qt构建系统在库构建期间有opengl版本/风格选择。这些错误听起来很像你的Qt是用桌面opengl构建的,但android只提供了opengl ES。在桌面端,您可以检查实际使用的opengl风味。它可能只适用于linux / windows,因为它们为opengl风格提供了库。