Невозможно вызвать связанные с OpenGL функции вне InitializeGL и paintGL
Как видно из заголовка, внутри Qt я не могу использовать или вызывать какие-либо функции OpenGL за пределами функций QGLWidget, таких как initializeGL()
, а также paintGL()
,
Я пытаюсь построить 3D-модель, после слота из моего QMainWindow
класс называется. Кажется, что все работает нормально, все вершины загружены, однако, когда я пытаюсь нарисовать свою модель, я получаю исключение ссылки NULL; что чаще всего происходит, когда предоставляется слишком мало вершин.
Та же самая строительная функция работает, когда я использую ее в initializeGL()
,
1 ответ
На самом деле это довольно просто: вне этих функций контекст QGLWidget не является текущим. Вы можете сделать контекст текущим, вызвав QGLWidet::makeCurrent(). Возможно, лучший способ обойти это - отложить вызов любых функций GL внутри paintGL, поскольку это гарантирует, что контекст является текущим, и вы не рискуете связываться с любым другим материалом openGL, изменяя контекст.