Я только что начал использовать OpenGL, и, похоже, нелегко понять работу glutMainLoop()
, что на самом деле происходит там? Остается ли там ничего не делать до тех пор, пока какой-либо из вызовов функций не ответит?opengl glutmainloop()
ответ
Он вызывает обратный вызов дисплея снова и снова, вызывая простой, чтобы он мог поддерживать определенную частоту кадров, если это возможно, и другие, если это необходимо (например, если вы изменяете размер окна или запускаете входное событие).
В основном, эта функция является основным программным циклом, в котором GLUT выполняет большую часть работы для вас и позволяет вам просто настроить конкретную программную логику в этих обратных вызовах. Прошло некоторое время с тех пор, как я работал с GLUT, и это, конечно, сбивает с толку в первую очередь.
В вашем обратном вызове, очевидно, должна быть ваша основная логика рисовать то, что должно быть, что должно происходить. В режиме ожидания обратного вызова должны быть некоторые очень легкие операции, чтобы определить, какое изменение состояния должно было быть от последнего отображения времени, и вызывался в следующий раз. Например, если вы что-то оживляете, это будет то место, где вы измените свое положение или ориентацию.
Как указано в StrixVaria.
glutMainLoop входит в цикл обработки событий GLUT. Эта процедура должна вызываться не более одного раза в программе GLUT. После вызова эта процедура никогда не вернется. Он будет вызывать по необходимости любые обратные вызовы, которые были зарегистрированы.
Взятые из here
Использование OpenGL и перенасыщение вместе означает, что вы будете писать программу «GLUT», которая использует команды OpenGL в функции обратного вызова. main содержит функции пересыхания. многие функции перенасыщения требуют регистрации функции обратного вызова. Эти функции обратного вызова обычно содержат команды opengl.
На ваш вопрос, теперь, когда ясно, что вы в основном пишете программу перенасыщения, следует также принять, что вызов функции glutMainLoop фактически выполняет функции обратного вызова как и когда требуется, что в свою очередь выполняет команды opengl.
Well glutMainLoop - это основная функция, которая продолжает вызывать и вызывать функции отображения, а также позволяет фактически открывать ваше окно. Вы узнаете, что opengl не так страшен.
- 1. opengl: вопрос о glutMainLoop()
- 2. OpenGL Ubuntu 13,10 QtCreator - неопределенная ссылка на `glutMainLoop`
- 3. Как очистить память после вызова glutMainLoop()?
- 4. повреждение памяти внутри glutMainLoop()?
- 5. Исключая остальную часть моей программы вокруг glutMainLoop?
- 6. Использование glutIdleFunc для выхода из glutMainLoop?
- 7. Как я могу запустить новый glutMainLoop() после выхода из него в OpenGL с Perl?
- 8. Можно ли заменить glutMainLoop() на простой цикл?
- 9. glutMainLoop в mac osx Lion freezes application
- 10. порядок функций в opengl
- 11. цвет фона в OpenGL
- 12. OpenGL glRectf() не отображая
- 13. Looping in OpenGL с glutTimerFunc (...)
- 14. OpenGL Line Drawing
- 15. Оптимизация OpenGL или ...?
- 16. opengl glulookat странное поведение
- 17. OpenGL - gluOrtho2d и glLoadIdentity?
- 18. Рисование с glutDisplayFunc (OpenGL)
- 19. Интеграция OpenCV в приложении OpenGL
- 20. Имея настройки OpenGL
- 21. мультисэмплинг opengl?
- 22. c - openGL glDrawPixels
- 23. OpenGL последовательность поворотов треугольника
- 24. Масштабирование в opengl
- 25. opengl read .3ds file?
- 26. opengl color quadrangle
- 27. Мерцающий экран OpenGL
- 28. OpenGL ES - using glDrawArrays()
- 29. Распределение памяти в OpenGL
- 30. OpenGL Drawing с VBO
Глют напугал меня на всю жизнь –
GLUT болезненна, и это не очень ... на самом деле это отвратило меня от графического программирования. – StrixVaria
Вращение было для меня сумасшедшим, как «wtf, есть z-координата?» Как только я взял физику и выучил некоторые правила, все успокоилось –