Qt 5.5和OpenGL:QVertexArrayObject :: create()调用QPainter :: drawimage()?

时间:2016-04-03 13:44:03

标签: qt opengl vertex-array-object

据我所知,要正确初始化和使用任何Qt OpenGL便捷类,必须使用有效的当前上下文调用它们。所以,我设计的类是从我重载的QOpenGLWidget::initializeGL()函数初始化的,其中文档声明上下文已创建并且是最新的(尽管没有帧缓冲)。

但是,当initializeGL()尝试初始化我的一个子类MeshObject,特别是调用函数QOpenGLVertexArrayObject::create()时,程序会崩溃并显示消息

Read access violation at 0x0 使用调试器,请注意调用堆栈:

enter image description here

正在调用QPainter :: drawImage,由于没有帧缓冲存在,因此肯定会失败。

但是当我尝试创建vertexArrayObject时,为什么会发生QPainter::drawImage调用?当然,这个功能应该不涉及到画面的绘画。

尽管文档还指出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 个答案:

没有答案