《Windows游戏编程技巧大师》就DirectDraw而创建DirectDraw知识笔记

 

1.DirectDraw 这可能是Directx中最重要的技术,由于它是2D图形赖以实现的渠道。也是Direct3D构建于其上的帧缓冲层。

2.DirectDraw是由非常多借口组成的。共同拥有5个接口


     I. IUnknown 全部COM对象都必须从这个基本借口派生,DirectDraw也不例外。

IUnknown仅仅包括Addref(),Release()和 QueryInterface() 三个函数。这些函数在其它接口中会被复写。


     II.  IDirectDraw 这是開始使用DirectDraw时必须创建的主接口对象。


     III. IDirectDrawSurface 这表示你用DirectDraw创建、控制和现实的实际显示表面。


     IIII. IDirectDrawPalette 支持以使用256或者更少的颜色在视频模式下处理调色板。


     V. IDirectDrawClipper 用于剪切DirectDraw光栅和位图操作到一些可见显示表面的子集。

 

 

3.创建一个DirectDraw

 

     I. 创建主DirectDraw对象并使用 QueryInterface() 来得到一个IDirectDraw7接口。或者直接使用DirectDrawCreateEx()创建一个DirectDraw7接口。


     II. 使用IDirectDrawSurface7接口至少创建一个主显示表面用以画图。


     III. 用IDirectDrawPalette接口创建一个色板。用RGB三元组初试化并配置到相关显示表面中。


     IIII. 假设DirectDraw应用程序要使用窗体。或者要降低位图以免溢出DirectDraw显示表面的可见边界,你至少须要创建一个裁剪器并将其尺寸设置为可见窗体的范围。


     V. 在主显示表面上画图。

 

4创建DirectDraw对象的三种方法

 

    I. 利用 QueryInterface() 对版本号经行升级

   

   LPDIRECTDRAW lpdd = NULL;
   LPDIRECTDRAW lpdd7 =NULL;
 
   if(FAILED(DirectDrawCreate(NULL,&lpdd,NULL)))
   {
         //error
    }
 
    if(FAILED(lpdd->QueryInterface(IID_IDirectDraw7,(LPVOID *)&lpdd7)))
    {
        //error
    }

 

    ps:接口标示符格式
          IID_IDirectCD
          当中字符C表示组件:Draw代表DirectDraw。Sound代表DirectSound,Input代表DirectInput,以此类推。字符D是一个从2~N的数字。代指你须要接口。

 

    II.调用底层的COM创建IDirectDraw7

 

  if(FAILED(CoInitialize(NULL)))
  {
	//error
  }
  if(FAILED(CoCreateInstance(&CLSID_DirectDraw,NULL,CLSCTX_All,&IID_IDirectDraw7,&lpdd7)))
  {
	//error
  }
  if(FAILED(IDirectDraw7_Initialize(lpdd7,NULL)))
  {
	//error
  }
  CoUninitialize();


    III.使用 DirectDrawCreateEx() 函数创建 IDirectDraw7

 


    LPDIRECTDRAW lpdd;
    DirectDrawCreateEx(NULL,(void *)&lpdd,IID_IDirectDraw7,NULL);




   

版权声明:本文博主原创文章,博客,未经同意不得转载。

转载于:https://www.cnblogs.com/mengfanrong/p/4812169.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值