Невозможно вызвать связанные с OpenGL функции вне InitializeGL и paintGL

Как видно из заголовка, внутри Qt я не могу использовать или вызывать какие-либо функции OpenGL за пределами функций QGLWidget, таких как initializeGL(), а также paintGL(),

Я пытаюсь построить 3D-модель, после слота из моего QMainWindow класс называется. Кажется, что все работает нормально, все вершины загружены, однако, когда я пытаюсь нарисовать свою модель, я получаю исключение ссылки NULL; что чаще всего происходит, когда предоставляется слишком мало вершин.

Та же самая строительная функция работает, когда я использую ее в initializeGL(),

1 ответ

Решение

На самом деле это довольно просто: вне этих функций контекст QGLWidget не является текущим. Вы можете сделать контекст текущим, вызвав QGLWidet::makeCurrent(). Возможно, лучший способ обойти это - отложить вызов любых функций GL внутри paintGL, поскольку это гарантирует, что контекст является текущим, и вы не рискуете связываться с любым другим материалом openGL, изменяя контекст.

Другие вопросы по тегам