2016-05-14 164 views
-3

我在Qt中使用OpenGL工作。qt [OpenGL]不能在android上工作

我寫了一些編譯和運行在桌面Qt上的代碼。當我試圖在Android上編譯代碼時,我得到一個錯誤,說OpenGL庫沒有被聲明。

什麼問題?

錯誤: - QT5 5.0.2之前 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

不確定什麼「在Android上編譯」的意思是......但它並不重要。該代碼不是Android應用程序,如果沒有重要的進一步移植,它將無法正常工作。 –

+0

你缺少包含OpenGL頭文件。 –

回答

0

預編譯的Windows桌面版本是建立對角只通過實施它在DirectX 9,OpenGL上的提供的OpenGL ES 2.0的支持ES 2不支持傳統的固定功能流水線,只有基於着色器的流水線。

後搜索我的一段時間發現的Qt bugtrecker封閉錯誤報告: https://bugreports.qt.io/browse/QTBUG-28715

看起來你需要建立自己的Qt 5的副本通過傳遞「-opengl桌面」來使用原生OpenGL驅動程序進行配置。使用第二個選項,您應該可以訪問OpenGL從1.0到4.3(如果您的卡/驅動程序支持它),或者只是不使用傳統固定功能管道,請僅使用基於着色器的管道。