游戏开发论坛

 找回密码
 立即注册
搜索
查看: 1712|回复: 3

关于动画闪烁的问题

[复制链接]

10

主题

26

帖子

38

积分

注册会员

Rank: 2

积分
38
发表于 2006-5-8 10:56:00 | 显示全部楼层 |阅读模式
小弟在VC做的一个动画,用定时器控制动画的速度,用的是SetTimer( hWnd, 1, 10, NULL);
动画的函数如下:
MOVE
{
    清屏;
    绘制画面;
}
但不知为什么,无论定时器设得多小,总会有闪烁的感觉,希望各位老兄给个建义;

12

主题

124

帖子

124

积分

注册会员

Rank: 2

积分
124
QQ
发表于 2006-5-8 12:54:00 | 显示全部楼层

Re:关于动画闪烁的问题

首先,Win32 API 中的 SetTimer 函数无法精确计时,一般当时间间隔小于 50ms 时,Windows无法保证时间的精确性。所以你用 10ms 作为定时器间隔,实际上和 50ms 差不了多少。

其次,如果不使用双缓存,你每次重画下一帧时都清屏,而这个动作会直接被送到显示设备上,清屏一般是用背景色重画,而这样的动作每次都会被用户直接看到,当然会感到闪烁。


如果你使用 Win32 GDI,最常见的解决办法是使用双缓存,即在内存中创建一个DC并与一个内存BMP关联,然后将所有的绘图工作在内存DC上进行,需要显示时使用 BitBlt 函数将其复制到主显示设备上,由于 BitBlt 函数的速度非常快,所以基本上就消除了闪烁问题。

到网上搜索 “双缓存” 相关信息,你可以得到很多更详细的解答。

10

主题

26

帖子

38

积分

注册会员

Rank: 2

积分
38
 楼主| 发表于 2006-5-8 16:35:00 | 显示全部楼层

Re:关于动画闪烁的问题

相当感谢,其实我是个新手,对图形不怎么熟悉,我做的都是按照自己的意愿写的,这次真的获益不浅

12

主题

124

帖子

124

积分

注册会员

Rank: 2

积分
124
QQ
发表于 2006-5-9 10:39:00 | 显示全部楼层

Re:关于动画闪烁的问题

慢慢来,所谓的高手也都是从新手成长起来的。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2026-1-24 11:34

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表