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