- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我有一个标准的过剩实现。显示函数重绘每个对象,但我需要不断更新每个对象的某些值。实际上,我能想到的唯一方法是生成一个线程来处理更新。但是,我不能使用来自不同线程的 glutPostRedisplay() 来让 glut 刷新窗口。在过剩循环旁边有一个循环来更新值的好方法是什么?
此外, sleep 几分之一秒(而不是整秒 sleep ())的最佳方法是什么。
最佳答案
如果您需要某种定期更新,您可能需要设置一个 glutIdleFunc
.这是一个函数,只要没有事件要处理,就会在循环中调用。如果你想定期调用一些东西(而不是尽可能快),你可能想尝试 glutTimerFunc
这允许您安排一些东西在未来的几毫秒内由 GLUT 循环运行。
关于你的第二个问题,如果你需要 sleep 几分之一秒,你可能想尝试 usleep
对于微秒分辨率 sleep 周期,或 nanosleep
以纳秒为单位指定 sleep 周期(尽管您实际上不会获得纳秒分辨率)。我不知道你使用的是什么平台,也不知道这些在 Windows 上是否可用,但它们应该在任何 POSIX 兼容系统(Linux、BSD、Mac OS X)上可用。但也许出于您的目的,glutTimerFunc
会工作得更好。
编辑添加:看起来在 Windows 上您需要使用 [Sleep
]( http://msdn.microsoft.com/en-us/library/ms686298(VS.85%29.aspx)(注意大写 S
),这需要以毫秒为单位的时间。
关于c - glutPostRedisplay 在不同的线程中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1611102/
我是一名优秀的程序员,十分优秀!