DirectDraw与Windows协作

来源:互联网 发布:陌交软件怎么样 编辑:程序博客网 时间:2024/06/05 11:12

视频显示设备协作级别:

                   全屏模式:整个屏幕表面都分配给了你的游戏,并且你是直接写到视频设备里,没有其他的应用程序能接触到这种设备。/////////什么直接写到视频设备里????

                   窗口模式:DirectDraw需更多的与Windows协作,因为其他的应用程序可能需要更新他们各自的客户窗口区域。因此,窗口模式下你对于视频设备的控制和垄断

                                     要有限的多。

设置函数:IDirectDraw::SetCooperativeLevel(HWND  hwnd, DWORD  dwFlags);

                参数说明:hwnd是必须的,以便DirectX(这里特指DirectDraw)可以固定于它。

                                 dwFlags:控制标记,直接影响DirectDraw与Windows之间的协作方式。

             返回:调用成功返回DD_OK,失败则返回错误码

全屏模式通常设置:lpdd7->SetCooperativeLevel(hwnd,DDSCL_FULLSCREEN | DDSCL_ALLOWMODEX | DSCL_EXCLUSIVE | DDSCL_ALLOWREBOOT);

窗口化通常设置:lpdd7->SetCooperativeLevel(hwnd,DDSCL_NORMAL);

 

设置视频模式:  IDirectDraw::SetDisplayMode();

HRESULT SetDisplayMode(  
///width of mode in pixel
  DWORD dwWidth,
/////heighe of mode in pixel
  DWORD dwHeight,
///bits per pixel ,8,16,24,32,
  DWORD dwBpp
  DWORD  dwRefreshRate,////desired  refresh,0 for default
   DWORD  dwFlags  ////extra  flags(advanced)  0  for default
  );
调用成功时返回DD_OK
例:创建一个256(8位)色的640*480模式   lpdd->SetDisplayMode(640,480,8,0,0);
    创建一个16位800*600模式   lpdd->SetDisplayMode(800,600,16,0,0);
上面两种模式之间有很大区别,不仅仅是分辨率不同:色彩深度。
 
当创建8位色彩模式时,你就是在要求一个调色板模式,并且必须创建一个调色板并用形为8.8.8的RGB项填满它。(要知道怎么使用DirectDraw调色板)
当创建色彩深度为16、24、32bpp的RGB模式,就不需要调色板,你可以将编码过的数据直接写到显示缓冲。

 

原创粉丝点击