扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
作者:LXZ 来源:论坛 2007年10月28日
关键字: Linux
……… |
上述相关代码主要完成了在屏幕上绘制一个绕经过(0,0,0),(1,1,3)的矢量逆时针旋转的小球。每隔33毫秒刷新一次。
具体运行结果如图1所示:
图1. C语言环境下滚动的小球
4.在Windows编程环境下如何实现动画
在Windows编程模型中,实现动画的方法有很多种,这里我们只介绍一种很常用的方法。
★ 计时器实现动画的方法
在Windows编程模型中,用计时器方法来实现动画是很方便的。在编程环境下创建一个计时器,该计时器通知Windows想让WM_TIMER消息隔多长时间给你的窗口发送信息。Windows通过响应这个消息,就能够以一定的时间间隔完成你所要完成的任务。
LRESULT CALLBACK WndProc( HWND hWnd, return (0L); |
具体实现结果如图2所示
/*在上述代码中,我们可以看见在WM_PAINT消息处理程序中有ValidateRect语句,该语句使窗口生效。如果我们省略该函数,那么Windows操作系统认为窗口总处于刷新的状态,并且会时刻将WM_PAINT消息流发送给应用程序。这样我们可以看见动画的帧速率增加了很多。*/
具体运行结果如图2所示:
图2. Windows编程环境下滚动的小方块
5.小结
综上所述,我们详细介绍了OpenGL动画的生成原理,以及如何在两种编程环境下实现动画的具体代码。在C语言编程机制下,我们主要使用GLUT库函数来实现动画,具体的相关函数的应用我们可以参考OpenGL库函数。
在Windows编程机制下,读者应该具有Windows入门级编程的基本知识,而且你也应该对Windows API 函数库有相当的了解,这样你才会熟练掌握该方法。正如以前所说,在该机制下我们有多种实现动画的方法,比如:事件插入循环,使用渲染线程等等。这里我们就不做一一介绍,具体的实现框架与上述方法类似。
双缓冲技术对于在任何一种机制下实现动画都是必要而且有效的。
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。
现场直击|2021世界人工智能大会
直击5G创新地带,就在2021MWC上海
5G已至 转型当时——服务提供商如何把握转型的绝佳时机
寻找自己的Flag
华为开发者大会2020(Cloud)- 科技行者