Opengl glutmainloop()

Я только начал использовать OpenGL, и кажется, что нелегко понять работу glutMainLoop(), что на самом деле происходит там? Остается ли там ничего не делать до тех пор, пока какой-либо из вызовов функций не ответит?

Ответы

Ответ 1

Он снова и снова вызывает обратный вызов вашего дисплея, вызывая простой, чтобы он мог поддерживать определенную частоту кадров, если это возможно, и другие, если это необходимо (например, если вы изменяете размер окна или запускаете входное событие).

По существу, внутри этой функции есть основной программный цикл, где GLUT выполняет большую часть работы для вас и позволяет вам просто настроить конкретную программную логику в этих обратных вызовах. Прошло некоторое время с тех пор, как я работал с GLUT, и это, безусловно, запутывает в первую очередь.

В вашем обратном вызове, очевидно, должна быть ваша основная логика рисовать то, что должно быть, что должно продолжаться. В режиме ожидания обратного вызова должны быть некоторые очень легкие операции, чтобы определить, какое изменение состояния должно было быть от последнего отображения времени, и вызывался в следующий раз. Например, если вы что-то оживляете, это будет где вы измените свое положение или ориентацию.

Ответ 2

Это точно так же, как заявила StrixVaria.

glutMainLoop входит в цикл обработки событий GLUT. Эта процедура должна вызываться не более одного раза в программе GLUT. После вызова эта процедура никогда не вернется. Он будет вызывать по необходимости любые обратные вызовы, которые были зарегистрированы.

Взято из здесь

Ответ 3

Использование opengl и glut together означает, что вы будете писать программу "переполнения", которая использует команды opengl в функциях обратного вызова. main содержит функции пересыхания. многие функции перенасыщения требуют регистрации функции обратного вызова. Эти функции обратного вызова обычно содержат команды opengl.

Приступая к вашему вопросу, теперь, когда становится ясно, что вы в основном пишете программу перенасыщения, следует также принять, что вызов функции glutMainLoop фактически выполняет функции обратного вызова как и когда требуется, что в свою очередь выполняет команды opengl.

Ответ 4

Ну glutMainLoop - это основная функция, которая продолжает вызывать и вызывать функции отображения, а также сохраняет ваше окно на самом деле. Вы узнаете, что opengl не так страшен.