游戏开发论坛

 找回密码
 立即注册
搜索
查看: 3279|回复: 6

垂直同步D问题(带附件)

[复制链接]

30

主题

298

帖子

299

积分

中级会员

Rank: 3Rank: 3

积分
299
QQ
发表于 2004-2-20 18:22:00 | 显示全部楼层 |阅读模式
今天开始对自己的程序(基于DirectDraw)做刷新测试的时候,意外的发现了问题:

我在对屏幕进行刷新的时候,在窗口模式下,如果只是进行垂直同步的话,会在屏幕上的某条水平线处发生图像断裂(撕裂),而如果进行帧限速而又进行垂直同步的话,则会出现画面严重抖动。在全屏模式下,不会出现图像撕裂,但会随机的出现图像抖动。

想问一下有经验的朋友是怎么解决这个问题的?是否需要自己跟踪扫描线呢?

PS:我用的是OMAGE加速版的驱动,用FLIP方法不会进行垂直同步的等待。我是使用
GetVerticalBlankStatus()来查询垂直扫描状态的,用了WaitForVerticalBlank()效果不是很理想。 [em5]

sf_2004220182255.rar

109.75 KB, 下载次数:

30

主题

298

帖子

299

积分

中级会员

Rank: 3Rank: 3

积分
299
QQ
 楼主| 发表于 2004-2-20 18:36:00 | 显示全部楼层

Re:垂直同步D问题(带附件)

附件里的程序都进行了垂直同步,按F1可以切换帧限速的开/关(60帧/秒),F2可以切换背景清除开/关。

我是这样进行垂直同步的:

BOOL vb = FALSE;

while(vb!=TRUE) m_lpDD7->GetVerticalBlankStatus(&vb);

30

主题

298

帖子

299

积分

中级会员

Rank: 3Rank: 3

积分
299
QQ
 楼主| 发表于 2004-2-20 18:51:00 | 显示全部楼层

Re:垂直同步D问题(带附件)

还想问一下,有没有不进行垂直同步也可以使画面不闪烁的办法?谢谢了

30

主题

298

帖子

299

积分

中级会员

Rank: 3Rank: 3

积分
299
QQ
 楼主| 发表于 2004-2-20 20:00:00 | 显示全部楼层

Re:垂直同步D问题(带附件)

没有人帮帮我么。。。。。。。。。。。。。。。。

我全身心的顶...............

1万

主题

1万

帖子

2万

积分

管理员

中级会员

Rank: 9Rank: 9Rank: 9

积分
20505
发表于 2004-2-20 20:10:00 | 显示全部楼层

Re:垂直同步D问题(带附件)

一般来说现在的机器都那么快,不需要进行垂直同步,我看了你的例子,能不能换个静态图片?那个图块跳来跳去,眼睛都看花了。呵呵。

全屏的那个例子在我机器上会闪烁,是不是因为你flip没有进行翻转表面的绘制?

30

主题

298

帖子

299

积分

中级会员

Rank: 3Rank: 3

积分
299
QQ
 楼主| 发表于 2004-2-20 20:19:00 | 显示全部楼层

Re:垂直同步D问题(带附件)

我原来做刷新测试的时候,就是用的静态图片,所以一直都没有发现这个闪烁的问题。

在我的机器上,不进行垂直同步的话,在窗口模式下的限速60帧的情况下,动态图像会抖动得非常严重。而在全屏只是会几秒钟随机的抖动一下。

不知道SEA_BUG兄是怎么在HOHO里解决这个问题的,或者能替我分析一下原因,将不胜感谢。

30

主题

298

帖子

299

积分

中级会员

Rank: 3Rank: 3

积分
299
QQ
 楼主| 发表于 2004-2-20 20:26:00 | 显示全部楼层

Re:垂直同步D问题(带附件)

全屏的例子会闪烁可能是因为我使用的驱动的关系,OMAGE驱动似乎对FLIP方法有影响(调用之后立即返回并进行翻面,而不是等待到下一次的垂直空白),所以我在程序里不管全屏还是窗口都应用了垂直同步。而在没有使用OMAGE驱动的机器上,可能就会因为这个原因,出现了闪烁。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-5-14 19:41

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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