2016-05-14 9 views
-3

Ich arbeite in Qt mit OpenGL.qt [OpenGL] funktioniert nicht auf Android

Ich schrieb einen Code, der kompiliert und auf dem Desktop Qt ausgeführt wurde. Als ich versuchte, den Code auf Android zu kompilieren, bekam ich eine Fehlermeldung, dass die OpenGL-Bibliotheken nicht deklariert wurden.

Was ist das Problem?

Fehler: - enter image description here

#include "mainwindow.h" 
#include <QApplication> 
#include <QGLFunctions> 
#include <QGLWidget> 

class app: public QGLWidget, QGLFunctions{ 
    public: 
    void initializeGL(); 
    void paintGL(); 
    void resizeGL(); 

}; 

void app::initializeGL(){ 
    qglClearColor(Qt::black); 
} 
void app::resizeGL(){ 
    glMatrixMode(GL_PROJECTION); 
    glLoadIdentity(); 
    glViewport(0,0,(GLint)200,(GLint)200); 
    glOrtho(0,100,100,0,-1,1); 
} 
void app::paintGL(){ 
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); 
    glBegin(GL_QUADS); 

     glColor3f(1,0,0); 
     glVertex2f(0,100); 

     glColor3f(0,1,0); 
     glVertex2f(100,100); 

     glColor3f(0,0,1); 
     glVertex2f(100,0); 

     glColor3f(1,1,1); 
     glVertex2f(0,0); 

    glEnd(); 
} 

int main(int argc, char *argv[]) 
{ 
    QApplication a(argc, argv); 

    app App; 
    App.show(); 

    return a.exec(); 
} 
+0

Nicht sicher, was "kompilieren auf Android" bedeutet ... aber es ist wirklich egal. Dieser Code ist keine Android-App und wird ohne eine weitere Portierung nicht funktionieren. –

+0

Sie fehlen für OpenGL-Header. –

Antwort

0

Die vorkompilierte Windows-Desktop-Version vor der QT5 ist 5.0.2 gegen ANGLE gebaut, die es OpenGL ES 2-Unterstützung bietet nur oben auf DirectX 9. OpenGL durch die Implementierung ES 2 unterstützt die ältere feste Funktionspipeline nicht, nur eine shaderbasierte.

Nach einiger Zeit, die ich des Suchens fand die geschlossene bugreport in Qt bugtrecker: https://bugreports.qt.io/browse/QTBUG-28715

Sieht aus wie Sie Ihre eigene Kopie von Qt 5 aufbauen müssen die nativen OpenGL-Treiber verwenden, indem Sie in „-opengl Desktop“ passing konfigurieren. Mit der zweiten Option sollten Sie Zugriff auf OpenGL von 1.0 bis 4.3 haben (wenn Ihre Karte/Treiber dies unterstützt), oder verwenden Sie einfach nicht die ältere feste Funktionspipeline, sondern nur eine shaderbasierte.