Windows Game Note7

1、 如何编写窗口模式的DirectX程序,如何操作主表面
① 窗口方式的DirectDraw程序的主表面就是整个显示屏幕,而不仅仅是你的窗口,这就意味着你必须找出你的窗口客户区的坐标,并确保只是在它上面操作
② 裁剪,你必须告诉DirectDraw裁剪系统,你在屏幕上有一个窗口,是它按照这个窗口进行裁剪,无论你的窗口如何移动位置或者改变尺寸
③ 8位调色板。如果视频是8位模式,改变调色板会带来问题,你必须满足Windows的调色板管理器,否则你可能会使其他的应用程序变得很难看。你可以改变调色板,但是最好留下大约20个调色板项(保留给Windows和系统色彩),这样调色板管理器能够使其他应用程序看起来比较正常。
④ 如何在不同的模式下,进行blit和像素操作。
2、GetWindowRect()得到窗口坐标。
  像素格式: 首先你需要在程序一开始处调用GetPixelFormat()函数以决定色彩深度。基于这色彩深度而调用不同的像素绘制函数。所以在程序中某处,或许是在设置DirectDraw之后的Game_Init()函数中,应该用主表面调用GetPixelFormat()。 一旦你知道了像素的格式,就可以利用条件逻辑、函数指针或虚函数来设置像素绘制函数的正确色深。
    AdjustWindowRectEx()可以计算不同样式的窗口尺寸。
3、设置裁剪器:
① 创建一个DirectDraw裁剪器: lpdd->CreateClipper();
② 用函数IDIRECTDRAWCLIPPER::SetHWnd()将裁剪器同窗口相关联。这使得裁剪器同你的窗口联系在一起,并为你处理所有诸如尺寸改变和移动的细节。 lpddclipper->SetHWnd();
③ 将裁剪器同想要裁剪的表面相连  lpddsprimary->SetClipper(lpddclipper);
    和窗口相关联的裁剪器只在对主表面进行blit时才起作用。
4、创建256色模式下的Windows应用程序的技巧是将美术数据限制在236色以内,这样你就由空间留给Windows,然后再恰当地设置逻辑调色板的调色板标志。当调色板被实现后,Windows就不再管它们。
PC_EXPLICIT意味着“这些色彩映射到硬件”,PC_NOCOLLAPSE意味着“不要将这些色彩映射到其他项,让它们保持原样”
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值