【问题标题】:qt [ OpenGL ] not working on android [closed]qt [OpenGL] 无法在 android 上运行 [关闭]
【发布时间】:2016-05-14 18:42:49
【问题描述】:

我正在使用 OpenGL 在 Qt 中工作。

我编写了一些在 Desktop Qt 上编译和运行的代码。当我尝试在 Android 上编译代码时,我收到一条错误消息,提示未声明 OpenGL 库。

有什么问题?

错误:-

#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();
}

【问题讨论】:

  • 不确定“在 Android 上编译”是什么意思……但这并不重要。该代码不是 Android 应用程序,如果不进行大量进一步移植,它将无法工作。
  • 您缺少 OpenGL 标头的包含。

标签: android c++ qt opengl-es


【解决方案1】:

Qt5 5.0.2 之前的预编译 Windows 桌面版本是针对 ANGLE 构建的,它仅通过在 DirectX 9 之上实现它来提供 OpenGL ES 2 支持。OpenGL ES 2 不支持传统的固定功能管道,只有一个基于着色器的。

经过一段时间的搜索,我在 Qt bugtrecker 中找到了已关闭的错误报告: https://bugreports.qt.io/browse/QTBUG-28715

看起来您需要构建自己的 Qt 5 副本以通过传入“-opengl desktop”进行配置来使用本机 OpenGL 驱动程序。使用第二个选项,您应该可以访问 1.0 到 4.3 的 OpenGL(如果您的卡/驱动程序支持它),或者只是不使用传统的固定功能管道,只使用基于着色器的管道。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-02-10
    • 1970-01-01
    • 1970-01-01
    • 2014-10-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-27
    相关资源
    最近更新 更多