请教:DirectX中如何实现显示图像与显示器扫描的同步?

Dream_soft 2004-12-30 05:55:21
在国外的软件中看到,可以图像的显示与显示器的电子枪扫描同步。即在电子枪扫描到特定位置的同时,将图像数据写入到该位置,以避免在写入数据后等待电子枪扫描到该位置的随机延迟,实现高时间精度的图像呈现。请问在DirectX中如何实现该功能?
请高手不啬赐教,谢谢。
...全文
83 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
Dream_soft 2005-01-11
  • 打赏
  • 举报
回复
呵呵,谢谢大家了。我把这个贴子结了,有建议的朋友请到别的相同贴子上啊,谢谢。

http://community.csdn.net/Expert/topic/3687/3687287.xml?temp=.7108728

另外说一下,Timer的计时精度号称是毫秒,其实是1/18.2秒,大约55毫秒左右,因为它用的是计算机的时钟中断。
Dream_soft 2005-01-11
  • 打赏
  • 举报
回复
To happy__888:

谢谢你的回复。不过不论你在显卡上刷新多少次,都要等到显示器的电子枪扫描到这个位置时才能更新,是吧?图像在这10毫秒内不论更新了多少次,显示器上都不能表现出来,对吧?它所有表现的只是最后一次更新的图像,对吧?

至于后一个问题,我并不是要在更新超过30帧。我只是要求在我发出写指令的时候,在1~2毫秒内就能出现在显示器上。这样就要求得到显示器的场同步信号,在电子枪将要到达这里的时候将内容写入显卡,这样才能避免显卡上的内容已经更新了,而显示器上的内容还在等电子枪到达更不能更新造成的随机误差。

至于说到人眼可以接受的速度,是远远超过1/30秒的,你所说30帧的只是因为似动现象而形成的将静止的画面看成运动的速度而已。

再次谢谢各位朋友参加讨论。
寻开心 2005-01-10
  • 打赏
  • 举报
回复
眼睛识别不了那么高的速度的, 眼睛只能识别30-60之间的图像,太快了,没有用途

显示器做不到那么高的速度, 好的显示器最高大概也就是120-150左右的刷新速度
Dream_soft 2005-01-09
  • 打赏
  • 举报
回复
谢谢各位朋友,不过我算过,将刷新率开到100Hz,也只能到10毫秒,10毫秒的精度对图象呈现来说也是太低了。有别的法子没有呢?

To:happy__888([顾问团]寻开心)

我要解决的不是在卡上翻转的问题,而是在显示器上的实时显示的问题。在卡上显存写一千次也要显示器的电子枪描到那里才能显示,不是吗?谢谢。
Dream_soft 2004-12-31
  • 打赏
  • 举报
回复
呵呵,这位朋友说的很好啊,不过我是做心理学的反应时程序,时间精度要求是毫秒级的,不知道行不行?
寻开心 2004-12-31
  • 打赏
  • 举报
回复
一秒钟翻转的次数可以很高,数百次到上千次都有可能的
因为翻转本身的速度极快,它的本质就是显卡当中显存页面的切换,只是一个寄存器数值的改变而已
它不是影响速度的主角

关键是你要绘制的内容的多少,以及占用的时间
这个是影响显示速度的关键
如果对于简单场景一秒钟几百次毫无问题,复杂的场景几秒钟一次都可能

zzwu 2004-12-31
  • 打赏
  • 举报
回复
timer的计数单位就是毫秒。
寻开心 2004-12-30
  • 打赏
  • 举报
回复
垂直扫描同步
dx常规的做法是多缓冲的,用户始终在后备缓冲当中绘制,然后把整个缓冲翻转到主表面上,从而使得绘制的内容在屏幕上显示出来
dx可以在createdevice的时候,指定这种翻转和垂直同步扫描的关系,保证在扫描的过程当中不更新内容,从而防治屏幕撕裂的现象。
dx处理翻转的速度很快,一次扫描周期之下,可能翻转多次,dx当中也可以限制这个扫描次数

这些控制参数都是在CreateDevice的函数当中指定

4,446

社区成员

发帖
与我相关
我的任务
社区描述
图形图像/机器视觉
社区管理员
  • 机器视觉
  • 迪菲赫尔曼
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧