亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > Delphi > 正文

用DELPHI開發DirectX游戲

2019-11-18 18:30:05
字體:
來源:轉載
供稿:網友
這不是一篇關于DirectX的祥細教程,而是講解如何用DELPHI開發DirectX游戲.因為不管是網上或是書店,關于DirectX的書基本上是用C++或VC描述的.用DELPHI開發游戲的資料是少之又少,這篇文章的目的就是讓讀者能夠學會如何利用已有的資料學習來開發游戲.
  這篇文章面向的是對DirectX有一定了解,卻不知道如何在DELPHI下開發DirectX游戲的讀者.

推薦參考資料:
<<游戲編程指南>>,<<DirectX中文收冊>>

DELPHI能不能開發游戲?
  回答是當然,網上很多游戲論壇有不少人都認為開發游戲只能用C++或VC. DELPHI只適合來做做桌面應用,勸有這些觀點的人先反匯編看看DELPHI和VC編釋出來的代碼,或是看看"奇跡時代"這個游戲,"奇跡時代"就是用DELPHI開發的,速度和畫面優于帝國時代.DELPHI是完全面向對象,并能內嵌匯編,支持MMX指今(DELPHI中MMX寄存器為mm0-mm7).完全適合游戲開發的需要.其實不論VC,DELPHI都只是工具,只要內功好都能做出來好的程序或是游戲.

準備工作:
   目前用DELPHI開發DirectX游戲有二種選擇.一是使用jedi的DirectX聲明(http://www.delphi-jedi.org).另一種是使用DelphiX控件.在這里我們準備使用jedi的DirectX聲明包來開發DirectX游戲,之所以選擇DirectX聲明包是因為這樣是以SDK方式來開發游戲,以后如果需要轉到其它語言也不必重新學習DirectX.至于DelphiX控件我沒用過,沒發言權,不過偶是不用日貨的 ;-)
  先到以下地址下載DirectX的聲明包(http://kuga.51.net/download/files/directx7.rar),并解壓到你自定的目錄中.再在DELPHI中選擇Tools->Environment Options,在打開的窗口中選擇Library選項卡,點擊Library Path后面的按鈕.會彈出來一個Directories窗口,再點擊Greyed items denote invalid path右邊的按鈕.選擇DirectX聲明解壓到的目錄.再點擊ADD按鈕,這樣就把DirectX聲明所在的目錄添加到了DELPHI 的Library路徑中.就可以直接在uses中引用DirectX聲明中的單元了.這個聲明包里自帶了幾個例子,可以作為入門的參考.

調試經驗:
  開發全屏游戲時最好把設計時的屏幕分辯率設為和游戲一樣的分辯率,以免調試時頻繁切換分辯率而損傷屏幕.
  開發全屏游戲最好是在WIN2000/XP下,不然在98下調試時游戲進入死循環或產生異常時.機子很容易就會當掉.在2000/XP下全屏游戲進入死循環時可以按ALT+TAB切換到DELPHI中(但這時由于DirectX游戲是全屏,獨占了屏幕,屏幕上不會有變化,所以要多試幾次),按CTRL+F2就可以結束游戲.如果是異常的話,切換到DELPHI中先按下回車再按CTRL+F2就可以結束調試游戲了.

注意:
  如果你是使用DELPHI7的話,請把DirectDraw.pas中的145行{$IFDEF VER140}改為{$IFDEF VER150}才能正常編釋.
  最好使用API的方式來建立游戲主窗口而不是使用VCL的TFORM類.

先讓我們來看看用C++和DELPHI初始化DirectDraw對像的代碼段.
c++版:
BOOL InitDDraw( )
{
  LPDIRECTDRAW7 lpDD; // DirectDraw對象的指針
  if ( DirectDrawCreateEx (NULL, (void **)&lpDD, IID_IDirectDraw7, NULL) != DD_OK )
    return FALSE;    {創建DirectDraw對象}
  {里使用了 if ( xxx != DD_OK) 的方法進行錯誤檢測,這是最常用的方法}
  if (lpDD->SetCoOperativeLevel(hwnd,DDSCL_EXCLUSIVE|DDSCL_FULLSCREEN) != DD_OK )
    return FALSE;   {設置DirectDraw控制級}
  if ( lpDD->SetDisplayMode( 640, 480, 32, 0, DDSDM_STANDARDVGAMODE ) != DD_OK )
    return FALSE;    {置顯示模式}
}

DELPHI版:
function TForm1.InitDirectDraw: Boolean;
var
  lpDD: IDirectDraw7;
begin
  Result := False; {先假設初始化失敗}
  {建立DirectDraw對象}
  if DirectDrawCreateEx(nil, lpDD, IID_IDIRECTDRAW7, nil) <> DD_OK then
    exit;
  {設定DirectDraw的控制級,第一個參數為DirectDraw窗口的句柄,這里把控級級設為的全屏加獨占模式}
  if lpDD.SetCooperativeLevel(Hwnd, DDSCL_EXCLUSIVE or DDSCL_FULLSCREEN) <> DD_OK then
    exit;
  {設定顯示模式,第一,二個參數為分辯率大小,第三個參數用來設置顯示模式的顏色位數,
  第四個參數設定屏幕的刷新率,0為默認值,第四個參數唯一有效的值只有DDSDM_STANDARDVGAMODE}
  if lpDD.SetDisplayMode(640, 480, 32, 0, DDSDM_STANDARDVGAMODE) <> DD_OK then
    exit;
  Result := True;
end;

可以看出來,這二段代碼除了語法和對象名外完全一樣,只要了解了這點,我們完全可以參考VC或C++的資料,然后用DELPHI做出自己的游戲了.DELPHI中DirectX聲明中的對象名,結構名和VC不一樣,一般的對應關系如下:
                                     DELPHI                             VC
DirectDraw對象       IDirectDraw7                        LPDIRECTDRAW7
頁面對象             IDirectDrawSurface7             LPDIRECTDRAWSURFACE7
DirectDraw的頁面描述 TDDSurfaceDesc2                 DDSURFACEDESC2
基本上只是前綴不一樣,由于篇幅,這兒就不一一列出所有對像和結構了.



上一篇:Delphi與匯編雜談(2)

下一篇:在Delphi中實現圖片的旋轉、縮放

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
學習交流
熱門圖片

新聞熱點

疑難解答

圖片精選

網友關注

亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产精品极品美女在线观看免费| 国产精品情侣自拍| 午夜美女久久久久爽久久| 日韩精品中文字幕在线观看| 欧洲午夜精品久久久| 欧美日韩xxxxx| 亚洲娇小xxxx欧美娇小| 国产成+人+综合+亚洲欧洲| 国产精品视频一区二区三区四| 国产一区视频在线| 热久久视久久精品18亚洲精品| 国产精品中文久久久久久久| 欧美理论在线观看| 国产综合久久久久| 在线成人激情黄色| 欧美日韩xxx| 亚洲天堂av高清| 国产精品丝袜视频| 国产suv精品一区二区三区88区| 丝袜一区二区三区| 久久香蕉国产线看观看网| 久久av在线看| 97在线观看免费高清| 欧美激情视频网址| 日韩免费看的电影电视剧大全| 欧美一区二区三区……| 久久久久久伊人| 欧美日韩中文在线观看| 在线观看日韩欧美| 欧美成人精品一区| 亚洲福利在线播放| 伊人青青综合网站| 成人有码在线视频| 成人网址在线观看| 91色在线视频| 亚洲成人网av| 亚洲成人黄色在线观看| 国产成人亚洲综合91精品| 亚洲精品国产精品国产自| 欧美激情视频在线免费观看 欧美视频免费一| 久久久久久久av| 亚洲偷熟乱区亚洲香蕉av| 国产精品∨欧美精品v日韩精品| 久久国产加勒比精品无码| www国产亚洲精品久久网站| 国产精品久久久久久久久借妻| 在线播放国产一区二区三区| 亚洲国产精品推荐| 欧美在线视频一区| 亚洲香蕉成视频在线观看| 激情懂色av一区av二区av| 97国产在线观看| 日韩中文第一页| 亚洲第一中文字幕在线观看| 国内精品小视频在线观看| 久久91亚洲精品中文字幕| 日韩福利视频在线观看| 国产91在线播放精品91| 久久91超碰青草是什么| 97av在线视频免费播放| 亚洲国产成人久久| 黄色91在线观看| 亚洲精品中文字幕有码专区| 国产精品r级在线| 91网在线免费观看| 91高潮精品免费porn| 日本一区二三区好的精华液| 欧美日韩电影在线观看| 亚洲性线免费观看视频成熟| 一区二区亚洲精品国产| 麻豆国产精品va在线观看不卡| 中文国产成人精品久久一| 精品亚洲国产视频| 国产精品丝袜久久久久久高清| 亚洲日本欧美日韩高观看| 国内精品国产三级国产在线专| 中文字幕日韩精品在线| 日韩视频免费大全中文字幕| 欧美精品在线第一页| 久久久亚洲欧洲日产国码aⅴ| 91在线国产电影| 成人国产亚洲精品a区天堂华泰| 亚洲精品一区二区久| 欧美激情精品久久久久久久变态| 欧美福利在线观看| 欧美国产精品va在线观看| 久久精品免费播放| 亚洲欧美日韩高清| 国产91在线播放精品91| 国产美女被下药99| 国产精品69精品一区二区三区| 成人精品视频99在线观看免费| 亚洲少妇中文在线| 69av在线视频| 成人h猎奇视频网站| 亚洲性生活视频| 欧美一区二粉嫩精品国产一线天| 91免费看视频.| 欧美国产中文字幕| 国产视频精品一区二区三区| 人人澡人人澡人人看欧美| 中文字幕自拍vr一区二区三区| 亚洲护士老师的毛茸茸最新章节| 国模gogo一区二区大胆私拍| 91亚洲国产成人久久精品网站| 国产精品一区二区在线| 国产成人精品视频| 欧美人在线观看| 亚洲综合在线中文字幕| 91香蕉嫩草神马影院在线观看| 国模视频一区二区| 日韩在线www| 欧美多人乱p欧美4p久久| 国产欧美日韩丝袜精品一区| 色综合老司机第九色激情| 久久免费视频在线| 亚洲电影av在线| 奇米4444一区二区三区| 日韩电影中文 亚洲精品乱码| 久久精品国产精品亚洲| 成人夜晚看av| 亚洲精品ady| 国产精品一区二区电影| 午夜剧场成人观在线视频免费观看| 日韩在线免费高清视频| 亚洲国产成人精品女人久久久| 日韩精品视频观看| 久久不射电影网| 久久手机免费视频| 欧美一级片在线播放| 日韩a**站在线观看| 精品国产电影一区| 亚洲精品国产美女| 美日韩丰满少妇在线观看| 国产精品旅馆在线| 国产91色在线|免| 中文字幕在线观看亚洲| 中文字幕在线观看日韩| 久久久视频在线| 欧美丰满老妇厨房牲生活| 91精品视频大全| 欧美激情va永久在线播放| 日韩在线观看网址| 国产欧美精品一区二区三区-老狼| 国产精品久久久久久久久免费看| 成人www视频在线观看| 亚洲精品乱码久久久久久按摩观| 欧洲美女7788成人免费视频| 国产精品激情av电影在线观看| 中文字幕亚洲无线码在线一区| 亚洲图中文字幕| 麻豆一区二区在线观看| 国产久一一精品| 久久久av亚洲男天堂| 亚洲国产精品一区二区三区| 日韩有码在线播放| 日本一区二区三区在线播放| 欧美激情视频在线观看| 亚洲精品视频免费在线观看| 在线亚洲午夜片av大片| 日韩在线观看免费网站| 亚洲国产精品va在线观看黑人| 亚洲人成网站999久久久综合| 欧美二区乱c黑人|