Эти gl…
функции являются просто обычными функциями OpenGL, или, если используется оболочка расширения, имена макросов, разрешающие символы оболочки.QGLWidget заботится о создании и управлении контекстом OpenGL, как это делают GLUT или GLFW.
QGLWidget предлагает функцию-член QGLWidget::makeCurrent
, которая выбирает контекст OpenGL экземпляра QGLWidget, являющийся текущим контекстом в потоке, из которого QGLWidget::makeCurrent
называется.QGLWidget::swapBuffers
выдает двойной буферный своп.После того, как вы закончили использовать контекст OpenGL, скажем, в конце функции рендерера, вызовите QGLWidget::doneCurrent
, который отсоединит контекст от текущего потока;это необходимо для того, чтобы OpenGL работал в многопоточных программах - если вы убедитесь, что все операции OpenGL выполняются из одного и того же потока, вы можете опустить вызов QGLWidget::doneCurrent
.
Конечно, в режиме реального ООПВ программе вы должны передать ссылку на другой класс вашему производному QGLWidget и вызвать его функцию рисования из обработчика рисования QGLWidget.