rad*_*al7 22
在事件驱动编程中,就像在交互式OpenGL应用程序中一样,主应用程序循环通常做三件事:
GLUT glutMainLoop()为您隐含地执行这些步骤.几乎所有过剩的回调您注册(如glutKeyboardFunc(),glutReshapeFunc()等)采取1.照顾,并打电话给你设立想必做2功能.
现在,如果您注册了一个空闲函数glutIdleFunc(),则会在处理完所有当前事件后调用它.通常程序员实现他们的空闲功能只是调用他们用于渲染场景的例程(即他们传递的例程glutDisplayFunc()).如果渲染"需要一段时间"(比如接近所有时间渲染帧),这种方法可能会有问题,因为您可能没有时间完成渲染,然后处理下一帧的事件.如果你要插入你提到的while循环,你就会这样做,这会绕过GLUT的本机事件处理机制.与GLUT良好配合的更好方法是将空闲函数实现为仅调用glutPostRedisplay(),这告诉GLUT在处理完所有事件之后和调用空闲函数之前调度对显示函数的调用.
| 归档时间: |
|
| 查看次数: |
11757 次 |
| 最近记录: |