Qt 5.5 и OpenGL: QVertexArrayObject::create() вызывает QPainter::drawimage()?

Я понимаю, что для того, чтобы любой из удобных классов Qt OpenGL был правильно инициализирован и использован, они должны вызываться с действующим текущим контекстом. Итак, я разработал мои классы, которые будут инициализированы из моего перегруженного QOpenGLWidget::initializeGL() функция, в которой в документации говорится, что контекст создан и обновлен (хотя и без фреймбуфера).

Однако когда initializeGL() пытается инициализировать один из моих подклассов MeshObjectконкретно вызывая функцию QOpenGLVertexArrayObject::create()программа вылетает с сообщением

Read access violation at 0x0Проходя через отладчик, обратите внимание на стек вызовов:

В QPainter::drawImage выполняются вызовы, которые наверняка завершатся сбоем, поскольку отсутствует кадровый буфер.

Но почему там QPainter::drawImage вызов происходит, когда я пытаюсь создать vertexArrayObject? Конечно, эта функция не должна быть связана с рисованием на экране.

Хотя в документации также говорится, что QOpenGLVertexArrayObjects будет работать только на некоторых платформах OpenGL ES 2.0, vbuffer.create() вызывает точно такой же сценарий, и я уже использовал QOpenGLVertexArrayObjects на этой точной машине на предыдущем проекте абсолютно без проблем.

Полная трассировка стека:

0   QPainter::drawImage Qt5Guid     0x58292a56  
1   QPainter::drawImage Qt5Guid     0x5829203c  
2   MeshState::initBuffers  meshobject.cpp  71  0x2fb793    
3   SceneObject::setupObjects   sceneobject.cpp 18  0x2fa1eb    
4   SceneObject::initialize sceneobject.cpp 12  0x2fa12f    
5   OpenGLWidget::initializeGL  openglwidget.cpp    34  0x2f8ecf    
6   QAbstractScrollArea::setHorizontalScrollBar Qt5Widgetsd     0x587a9859  
7   QAbstractScrollArea::setHorizontalScrollBar Qt5Widgetsd     0x587a86da  
8   QAbstractScrollArea::setHorizontalScrollBar Qt5Widgetsd     0x58770104  
9   QAbstractScrollArea::setHorizontalScrollBar Qt5Widgetsd     0x587a8850  
10  QAbstractScrollArea::setHorizontalScrollBar Qt5Widgetsd     0x5872548e  
11  QAbstractScrollArea::setHorizontalScrollBar Qt5Widgetsd     0x587235f5  
12  QSortFilterProxyModel::mapToSource  Qt5Cored        0x591b6b47  
13  QSortFilterProxyModel::mapToSource  Qt5Cored        0x591bf379  
14  QAbstractScrollArea::setHorizontalScrollBar Qt5Widgetsd     0x5877a3a3  
15  QAbstractScrollArea::setHorizontalScrollBar Qt5Widgetsd     0x5877a618  
16  QAbstractScrollArea::setHorizontalScrollBar Qt5Widgetsd     0x5876be41  
17  QAbstractScrollArea::setHorizontalScrollBar Qt5Widgetsd     0x5876c0bb  
18  QAbstractScrollArea::setHorizontalScrollBar Qt5Widgetsd     0x58779441  
19  QAbstractScrollArea::setHorizontalScrollBar Qt5Widgetsd     0x5877a62e  
20  QAbstractScrollArea::setHorizontalScrollBar Qt5Widgetsd     0x5876be41  
21  QAbstractScrollArea::setHorizontalScrollBar Qt5Widgetsd     0x5876c0bb  
22  main    main.cpp    10  0x2f3419    
23  WinMain qtmain_win.cpp  113 0x2fdcdd    
24  __tmainCRTStartup   crtexe.c    618 0x2fd0bf    
25  WinMainCRTStartup   crtexe.c    466 0x2fce7d    
26  BaseThreadInitThunk KERNEL32        0x772e38f4  
27  __RtlUserThreadStart    ntdll       0x77865de3  
28  _RtlUserThreadStart ntdll       0x77865dae  

0 ответов

Другие вопросы по тегам