快捷搜索:

DirectDraw之C#入门攻略

  DirectX简述

  DirectX本身为游戏开发的一套SDK,其本身原来仅仅是用来与OpenGL,3DFX竞争的一套用于视频游戏开发的SDK.。现在Microsoft已经发布其8.1版本。到DirectX7为止DirectX已经成为一套功能齐全的多媒体开发SDK.。由于其易用(相对于GDI API)高效也就成为了视频播放,3D绘图等高质量多媒体程序(high-performance multimedia applications)的良好开发平台。由于Microsoft在软件业的霸主地位,使得DirectX得到了众多的显卡厂商的广泛支持。换句话说,用DirectX编程就完全可以不用去管显卡的品牌和型号,专心和DirectX打好交道,剩下的由DirectX和Windows再交流解决了。
  
  DirectX的DirectDraw用于2D绘图,与Windows的API相比,DirectDraw更为安全,而且更增加了一些实用的方法用于图形的转换和修改。DirectInput则提供了用于管理输入设备的方法,在这里所有的Joystick都可以一律看待,极大的简化了Joystick的使用。DirectMusic和DirectSound不用说大家也能想到是音乐和声效的控制手段,尽管现在很多的游戏都采用MP3播放背景音乐,但是DirectMusic的方便和功能强大还是值得一看的。至于Direct3D和DirectPlay是用于3D绘制和联网游戏,尽管都是正红火的游戏形式,但因为D3D比较复杂,就只有留下D3D和DPlay以后再专门介绍了。由于DirectX本身是一套底层(low-level)的程序接口,也就是说它就是一套API,所以DirectX编程需要用到大量的指针用于对系统显存和系统内存进行直接操作以换取更快的执行效率,所以起初DirectX使仅用于C++的。从DirectX7开始,DirectX都有VB的运行库,那些复杂的指针操作统统被转换成了普通的变量操作,这也就是为什么能用C#开发DirectX程序的原因。



  由于我今天才拿到DirectX8.1的SDK,所以这里的程序都使用DirctX7vb运行库开发。DirectX结构复杂,功能烦多,掌握起来并不像数据库开发那么明了,所以在此我仅仅是对其简单的介绍其基本功能的介绍。但是也不用还怕DirectX下面的众多功能接口的使用的基本方法是一样的,归结下来实现基本功能一般的必要步骤如下:

  1.创建接口DirectX7.DirectXXXCreate();(XXX代表Input&Music&Draw….)

   如:ddraw=dx.DirectDrawCreate("");

  2.环境设置

   如:
    ddraw.SetCooperativeLevel(frm.Handle.ToInt32(),
             DxVBLib.CONST_DDSCLFLAGS.DDSCL_FULLSCREEN|
             DxVBLib.CONST_DDSCLFLAGS.DDSCL_ALLOWMODEX|
             DxVBLib.CONST_DDSCLFLAGS.DDSCL_EXCLUSIVE);
 

  环境设置有时需要枚举(enumerate)来获得正确的可用设置.

  3.创建操作实体

   如:DDsurface=ddraw.CreateSurface(ref dDDesc);

  4.对实体进行操作

   如:DDsurfaceSpt.SetColorKey(DxVBLib.CONST_DDCKEYFLAGS.DDCKEY_SRCBLT,ref DDColorKey);
 
  有了这4个步骤,也就基本上了解了DirectX编程的思路了,下面需要的就是寻找实现步骤的具体解决方法。我们先从DDraw开始,先做一个可以在背景上移动的(spriter)角色。然后再让他走动时发出声音(DSound),最后配上背景音乐(DMusic),这样一个游戏的基本要素也就差不多齐全了,剩下该让他干点什么,就要看你的相像力了,在发挥想象力之前,还是先写代码吧!

  建立一个project需要一个窗体(Form),引用Direct7 ,不要想引用DirectX8代替DirectX7,DirectX8没有DirectDraw我也不知道为什么没有了,可能是在D3D表面也可以绘制2D的原因吧!接着我们可以去掉多余的引用留下System.,System.Windows.Forms和DxVBLib(它可是主角哦)就可以了。DirectX就是绘图用的所以…System.Drawing就没用了,不过还是把System.Drawing留下来,后面访问Form位置的时候还是要用它。

 

  接着定义DirectX7接口

   private DxVBLib.DirectX7 dx=new DxVBLib.DirectX7();

  好了准备工作已经做完了,下面就正式开始DirectDraw部分;

1

作者:lazydaytime责任编辑:方舟)

天极新媒体 最酷科技资讯

扫码赢大奖

评论

* 网友发言均非本站立场,本站不在评论栏推荐任何网店、经销商,谨防上当受骗!

您可能还会对下面的文章感兴趣: