游戏开发论坛

 找回密码
 立即注册
搜索
查看: 3604|回复: 4

directx 如何实现帧同步?

[复制链接]

75

主题

102

帖子

110

积分

注册会员

Rank: 2

积分
110
发表于 2011-7-16 08:56:00 | 显示全部楼层 |阅读模式
我想在多台电脑做到同步画面 可是具体的实现方法我还没有掌握,请问directx 范例里有相关的代码么?
有人说是在backtofront之前做一个判断,如果所有的客户机都已经渲染完成,主机就把缓存内容映射到屏幕上,不知道这中方式可不可行,这个不让主机执行backtofront应该怎样做呢?而且如果长时间得不到客户机的相应,那主机的缓存会不会越来越大?因为不停有内容被更新到缓存中去,而且还不让他渲染出来,也就没有清除的工作了,
还有就是与本机的刷新率如何联系,如果两者的刷新率不一样,会造成画面撕扯的现象该如何解决呢?

谢谢各位,最好能提供一点伪代码 非常感谢

34

主题

844

帖子

1755

积分

金牌会员

Rank: 6Rank: 6

积分
1755
发表于 2011-7-16 21:32:00 | 显示全部楼层

Re:directx 如何实现帧同步?

不知道。

汇编语言

  1.       MOV   DX,03DAh
  2. SYNC:IN    AL,DX
  3.       TEST  AL,08h
  4.       JZ    SYNC
复制代码

34

主题

844

帖子

1755

积分

金牌会员

Rank: 6Rank: 6

积分
1755
发表于 2011-7-16 21:42:00 | 显示全部楼层

Re:directx 如何实现帧同步?

03DA 端口可获得显示器电子枪的扫描状态。

03DA 读取值的 0000N000 位置表示电子枪是否为“正在回归”,也就是“扫描完毕”。

以下为英文原文资料

  1. 03DA r CGA status register EGA/VGA: input status 1 register
  2.    bit 7-4     not used
  3.    bit 3 = 1   in vertical retrace
  4.    bit 2 = 1   light pen switch is off
  5.    bit 1 = 1   positive edge from light pen has set trigger
  6.    bit 0 = 0   do not use memory
  7.          = 1   memory access without interfering with display
复制代码

bit 3 = 1 in vertical retrace
翻译如下:
位3 = 1 正在“垂直的回归”中

34

主题

844

帖子

1755

积分

金牌会员

Rank: 6Rank: 6

积分
1755
发表于 2011-7-16 22:23:00 | 显示全部楼层

Re:directx 如何实现帧同步?

以下是在网上找到的 DirectDraw 垂直同步源代码

  1. //============================================================
  2. // win_ddraw_wait_vsync
  3. //============================================================
  4. void win_ddraw_wait_vsync(void)
  5. {
  6.   HRESULT result;
  7.   BOOL is_vblank;

  8. // if we're not already in VBLANK, wait for it
  9.   result = IDirectDraw::GetVerticalBlankStatus(ddraw, &is_vblank);
  10.   if (result == DD_OK && !is_vblank)
  11.   {
  12.     result = IDirectDraw::WaitForVerticalBlank(ddraw, DDWAITVB_BLOCKBEGIN, 0);
  13.   }
  14. }
  15. //============================================================
复制代码

59

主题

984

帖子

1200

积分

金牌会员

Rank: 6Rank: 6

积分
1200
发表于 2011-7-17 00:49:00 | 显示全部楼层

Re:directx 如何实现帧同步?

........................................
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-6-8 13:42

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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