Opengl glutmainloop()
Я только начал использовать OpenGL, и кажется, что нелегко понять работу glutMainLoop()
, что на самом деле происходит там? Остается ли там ничего не делать до тех пор, пока какой-либо из вызовов функций не ответит?
Ответы
Ответ 1
Он снова и снова вызывает обратный вызов вашего дисплея, вызывая простой, чтобы он мог поддерживать определенную частоту кадров, если это возможно, и другие, если это необходимо (например, если вы изменяете размер окна или запускаете входное событие).
По существу, внутри этой функции есть основной программный цикл, где GLUT выполняет большую часть работы для вас и позволяет вам просто настроить конкретную программную логику в этих обратных вызовах. Прошло некоторое время с тех пор, как я работал с GLUT, и это, безусловно, запутывает в первую очередь.
В вашем обратном вызове, очевидно, должна быть ваша основная логика рисовать то, что должно быть, что должно продолжаться. В режиме ожидания обратного вызова должны быть некоторые очень легкие операции, чтобы определить, какое изменение состояния должно было быть от последнего отображения времени, и вызывался в следующий раз. Например, если вы что-то оживляете, это будет где вы измените свое положение или ориентацию.
Ответ 2
Это точно так же, как заявила StrixVaria.
glutMainLoop входит в цикл обработки событий GLUT. Эта процедура должна вызываться не более одного раза в программе GLUT. После вызова эта процедура никогда не вернется. Он будет вызывать по необходимости любые обратные вызовы, которые были зарегистрированы.
Взято из здесь
Ответ 3
Использование opengl и glut together означает, что вы будете писать программу "переполнения", которая использует команды opengl в функциях обратного вызова. main содержит функции пересыхания. многие функции перенасыщения требуют регистрации функции обратного вызова. Эти функции обратного вызова обычно содержат команды opengl.
Приступая к вашему вопросу, теперь, когда становится ясно, что вы в основном пишете программу перенасыщения, следует также принять, что вызов функции glutMainLoop фактически выполняет функции обратного вызова как и когда требуется, что в свою очередь выполняет команды opengl.
Ответ 4
Ну glutMainLoop - это основная функция, которая продолжает вызывать и вызывать функции отображения, а также сохраняет ваше окно на самом деле. Вы узнаете, что opengl не так страшен.