0

Qt OpenGL の便利なクラスを正しく初期化して使用するには、有効な現在のコンテキストで呼び出す必要があることを理解しています。そのため、オーバーロードQOpenGLWidget::initializeGL()された関数からクラスを初期化するように設計しました。ドキュメントには、コンテキストが作成され、現在の状態になっていることが記載されています (ただし、フレームバッファーはありません)。

ただし、initializeGL()サブクラスの 1 つを初期化しようとすると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  
4

0 に答える 0