Qt 3D示例——cube
Qt 3D官方示例
cube的3D演示,一個純C++的項目。雖然QML示例比較炫,但是要深入理解還是得從C++例子入手。
從MainWidget.show入口。一步步可以跟蹤到initializeGL,paintGL,resizeGL,對了解OpenGL運行流程有幫助。
MainWidget.show---->Qwidget::show-----> setVisible(true);---> show_helper
從show_helper中會引出一條主線
sendPendingMoveAndResizeEvents主動觸發QWidget::event事件(其中涉及到的通信機制太復雜),
事件類型為QOpenGLWidget的resizeEvent。(d->initialize();)
resizeEvent最終會調用到 MainWidget::initializeGL()
resizeEvent最終會調用到 MainWidget::resizeGL()
resizeEvent最終會調用到 MainWidget::initializeGL()
---> showChildren(false);
---->sendEvent(q, &showEvent);
---->show_sys---> setVisible(true);(顯示窗口)
----->sendSyntheticEnterLeave(this)
resizeEvent --> resizeGL -->
initTextures中會讀取png圖片放在Image(750x500)中用于貼圖。
setVisible函數內部會把所有初始化搞定,繼續跟進工作量太大。
QWidget::create---->

浙公網安備 33010602011771號