程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#基礎知識 >> DirectDraw之C#入門攻略

DirectDraw之C#入門攻略

編輯: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部分;

  DirectDraw篇

  DxVBLib.DirectDraw7 dDraw

  按照剛才所說的步驟,先由dx-------DirectX7結構實體來創建一個DDraw接口實體用來完成後面的步驟;

  

DxVBLib.DirectDraw7 dDraw=dx. DirectDrawCreate(guid);

  GUID是一個長達128位的結構(Structrue),是接口的代號對每一個借口都是不同的,可以用dx.CreateNewGuid()或者System.Guid.NewGuid().ToString()獲得。其實我們在這裡並不需要通過這個GUID接口來訪問DDraw接口的實體,所以讓GUID=""就可以了.

  • 首頁
  • 上一頁
  • 1
  • 2
  • 下一頁
  • 尾頁
  • 共2頁
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved