【发布时间】:2017-01-07 20:25:50
【问题描述】:
调试时的确切崩溃是:
下级停止了,因为它触发了异常。 在线程 0 中停止的原因:0x7fed96c6cda 异常,代码:0x0000005:读取访问冲突:0x0,flags=0x0。
然后异常指向下面代码中的这一行:
if(QOpenGLContext::currentContext()->isValid())
下面的代码足以为我重现异常。 子类化 QOpenGLWidget 类并在尝试访问上下文之前使子类调用 initializeGL() 并不能解决问题。
#include <QApplication>
#include <QOpenGLWidget>
#include <QOpenGLContext>
#include <QDebug>
void initialize(QOpenGLWidget * renderArea)
{
renderArea->makeCurrent();
if(QOpenGLContext::currentContext()->isValid())
{
qInfo() << "Valid.";
}
}
int main(int argc, char *argv[])
{
QSurfaceFormat format;
format.setVersion(3,3);
format.setProfile(QSurfaceFormat::CoreProfile);
QSurfaceFormat::setDefaultFormat(format);
QApplication a(argc, argv);
QOpenGLWidget * glw = new QOpenGLWidget;
initialize(glw);
return a.exec();
}
【问题讨论】: