亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? 2d.txt

?? 一個2D游戲引擎設計的完整文檔
?? TXT
?? 第 1 頁 / 共 2 頁
字號:
上一次我寫了一個史上最簡單的Windows程序。很不幸,在計算機的世界里最簡單的也是最愚蠢的東西。如果一個程序什么也不做的話那它就沒有臉面再存活在這世界上,所以為了讓我的作品能夠有更多生存的空間我必須加入一些有意思的東西。DirectDraw雖然只是一段很短的代碼但卻能徹底地改變人們對這個愚蠢作品的看法。

可能并不是每個人都明白什么是DirectDraw,其實它是DirectX的一部分。一看它的名字也大概猜到它是用來畫圖之類的。不管用來干嘛,先看看著名的John De Goes 在他的名著《3D GAME PROGRAMMING WITH C++》里對DirectX的定義。

DirectX is a software development kit (SDK) specifically to promote hardware assisted, high performance games for Windows, consists of many components...

The components of DirectX are divided into two groups: DirectX Foundation contains low level components that supply basic functionality; DirectX Media contains high level components that perform many complex operations.

這是他的原文,為了讓一些英文不太好的朋友不必浪費時間去翻詞典我將其翻譯一下,這沒有任何商業目的,所以請別告我侵權。

DirectX是一個開發軟件特別用于提高硬件協助能力以支持高質量的Windows游戲。

DirectX有兩組組件:DirectX基本庫,包含低級組件用于基本功能;DirectX媒體,包括高級組件用于完成許多復雜的操作。

以上文字好象有點隱晦難懂。其實我對上面的英文的理解也就相當于上面這段中文的水平。雖然John De Goes的這本書被公認為3D游戲的教材,而且我的偶像Andre LaMothe還特地為這本書寫了序但我在看這本800頁的英文書時常常被許多類似于上面的文字搞的頭昏腦脹。

講了這么多你可能還是沒明白我到底要說些什么,不要著急,所謂心急吃不了熱豆腐,特別是美女的豆腐。再看看下面的文字。

DirectX Foundation consists of the following components: DirectDraw, DirectSound, DirectMusic, Direct3D Immediate Mode (IM), DirectInput, DirectSetup, and AutoPlay.

DirectDraw provides a way for software developers to access the display's attributes - including the size of the desktop and how many colors can be displayed at once - and the display's features, such as playing back video, displaying images and bitmaps, and so on. DirectDraw is not graphics library, in that it cannot draw lines, polygons, or text, but it is still nonetheless for today's 3D games.

這段比較好理解,我也照著翻譯:

DirectX 基本庫包括:DirectDraw, DirectSound, DirectMusic......(參見英文)

DirectDraw 提供了一個方法給軟件開發人員進入顯示的屬性——包括桌面的大小和能被顯示的顏色數——顯示特征,列如播放后臺視頻,顯示圖象和位圖,等等。DirectDraw不是圖形函數庫,也就是說它不能畫線,多邊形,或文字,但是它并非對今天的3D游戲毫無用處。

天啊!為什么譯成中文后反而看不太明白了!看來我還是不適合當翻譯。所以大家將就點,反正就是那個意思,用一句教我軟件工程的老師Mr. Christopher常掛在嘴上的話“你明白就是明白,不明白就是不明白”

哈,如果真不明白的話,就忘掉上面所有的廢話(forget these bullshit)。這完全沒有關系,我保證如果你看完本文后能從地獄爬回來而且能解釋的比我更好的話,你就可以毫不客氣地揍我一頓。

從程序員的角度來說,DirectDraw是一個很復雜的類。不必管它到底是什么,反正你如果要使用DirectDraw, 首先必須創建一個DirectDraw的對象(object)。也就是說聲明一個DirectDraw變量。用下面的代碼:

LPDIRECTDRAW lpDD; //LPDIRECTDRAW 就是微軟寫的DirectDraw類的指針類型。

有了這個變量后就可以對DirectDraw進行初始化:

HRESULT Result;

Result = DirectDrawCreate( NULL, &lpDD, NULL);

DirectDrawCreate函數用來初始化DirectDraw的對象(object),這個函數有三個參數,它的原型如下:

HRESULT WINAPI DirectDrawCreate(

GUID FAR *lpGUID,

LPDIRECTDRAW FAR *lplpDD,

IUnknown FAR *pUnkOuter);

lpGUID:一個指向GUID(Globally Unique Identifier)的地址變量,它描述了一個用于在其上面創建DirectDraw的驅動器。如果這個變量為NULL那么就是說使用當前的顯示驅動程序。

lplpDD:就是上面的lpDD的指針。

pUnkOuter:微軟說這是用于將來對COM的兼容而設定的參數,但微軟又說如果這個變量不為NULL的話,將返回一個錯誤。所以如果你不是反微軟聯盟的成員的話就給它NULL吧。

如果初始化成功的話函數返回的值為DD_OK。

初始化成功后就可以設定Cooperative Level(應該是合作層之類的意思吧,反正就是指定游戲是運行于窗口模式還是令人激動的全屏模式)。

調用SetCooperativeLevel函數:

Result = lpDD->SetCooperativeLevel(

GetActiveWindow(),

DDSCL_EXCLUSIVE | DDSCL_FULLSCREEN | DDSCL_ALLOWREBOOT);

此函數的原型為:

HRESULT SetCooperativeLevel(

HWND hwnd,

DWORD dwFlags);

參數說明:

hwnd:要設定窗口的句柄。

dwFlags:這包括很多莫名其妙卻非常有用的標志。最常用的當然是DDSCL_FULLSCREEN和DDSCL_NORMAL分別指定全屏模式或普通窗口模式。DDSCL_EXCLUSIVE表示該窗口獨占所有操作。DDSCL_ALLOWREBOOT當然就是指可以讓你重啟電腦,就是不將Ctrl+Alt+Del給屏蔽掉。至于其他標志可參考MSDN,當然如果你有的話。

同樣,函數成功將返回一個DD_OK。

如果將窗口模式設為全屏的話,可以設定顯示模式:

Result = lpDD->SetDisplayMode(800, 600, 32);

if(Result == DD_OK)

{/*Display mode was set*/}

else

{/*Display mode was not set*/}

很顯然可以通過一個SetDisplayMode的函數來設定顯示模式,大家一眼就能明白上面的代碼將顯示模式設成800*600顏色數為32位。還是在看看該函數的原型:

HRESULT SetDisplayMode(

DWORD dwWidth,

DWORD dwHeight,

DWORD dwBPP,

參數說明:

dwWidth:屏幕寬度。

dwHeight:屏幕高度。

dwBPP:顏色的位數。

好了,請注意,下面我要說的是DirectDraw的精華,創建一個主頁面。聽起來好象沒什么了不起,但我們玩游戲所看到的圖象正是畫在這個主頁面上的。它其實是一段顯卡上的內存。DirectX允許我們直接向這段內存里寫數據。這意味著顯示速度將會大大的提高,如果你開發一個射擊游戲,那么玩家就不必在發出子彈后要一邊泡咖啡,一邊等待子彈命中目標了。看下面的代碼:

LPDIRECTDRAWSURFACE lpDDPS; //聲明一個DirectDrawSurface的對象的指針。

DDSURFACEDESC ddsd;//創建一個DDSURFACEDESC對象。

ddsd.dwSize = sizeof(ddsd); //指定該結構所占的內存字節數。

ddsd.dwFlag = DDSD_CAPS; //使ddsCaps成員有效。

ddsd.ddsCaps.dwCaps = DDSCAPS_PRIMARYSURFACE; //指定為主頁面。

Result = lpDD->CreateSurface(&ddsd, &lpDDPS, NULL); //創建這個頁面

我敢肯定這是本文里最讓人迷惑的代碼。但不必擔心,我會使出吃奶的力氣來將其解釋清楚,雖然我并不喜歡喝牛奶。

首先大家要明白一個概念,什么是DirectDraw頁面?這其實就是一個頁面,類似于一張白紙,你可以在上面畫任何東西。在做游戲時所有的圖象都是畫在不同的頁面上,將某一個頁面復制到主頁面去就能立即在屏幕上看到這些圖象。

我們來看看那個似乎比長城還長的類型名LPDIRECTDRAWSURFACE,它的意思是lp(long point)-DirectDraw-Surface,就是一個指向DirectDraw頁面的長指針。這里聲明了一個變量lpDDPS我用該變量來代表我要創建的主頁面。記住這最好是個全局變量。

然后我還要聲明一個ddsd的變量,它的數據類型是DDSURFACEDESC。DDSURFACEDESC其實是DirectDraw Surface Description的縮寫。意即DirectDraw頁面描述。這是一個用于描述頁面的結構。我們定義了這個結構的對象ddsd后就可以對其進行填充,比如指定它為一個主頁面。

ddsd.dwSize就是ddsd所占的字節數,記住在你使用DDSURFACEDESC之前一定要填充這個數。不過這是我所見過的最滑稽的賦值運算。好比在說“我的身高等于用尺子量我的身高所得到的長度”!

ddsd.dwFlag是控制標志,這里讓它等于DDSD_CAPS意思是讓ddsd結構里的ddsCaps成員有效。而ddsCaps是DDSCAPS結構,它包含著一些頁面性能的描述。

ddsd.ddsCaps.dwCaps里有許多高級和復雜的設定,比如是否為3D頁面,是否具備Alpha特性等等。但現在我們只需要指定該頁面為主頁面。

最后用CreateSurface函數來創建這個頁面。

函數原型:

HRESULT CreateSurface(
LPDDSURFACEDESC lpDDSurfaceDesc,

LPDIRECTDRAWSURFACE7 FAR *lplpDDSurface,

IUnknown FAR *pUnkOuter);
參數說明:

lpDDSurfaceDesc:當然是DDSURFACEDESC的指針變量。

lplpDDSurface:一個指針變量指向那個頁面指針變量。

pUnkOuter:不用說又是微軟的陷阱,如果不想掉進去摔個粉身粹骨就放NULL吧。

好了終于完成了,現在你可以在屏幕上寫字了,或者調入一幅bmp的位圖。記得前面尊敬的John De Goes 說過DrectDraw并不能用來畫點或畫線,但實際上可以做到。我無意冒犯Geos先生,只不過電腦實際上是個傻瓜而已,無論它多么鐵面無私不講人情只要一點點技巧往往就能瞞天過海。不過這不是我今天要透露的秘密。還是先寫兩個字上去吧。

HDC hDC;

if(lpDDSP->GetDC(&hDC) != DD_OK)
return FALSE;
SetBkColor( hDC, RGB( 0, 0, 255 ) );
SetTextColor( hDC, RGB( 255, 255, 0 ));
TextOut( hDC, 220, 200, "Yes, I did it!",14);

LPSTR lpMesg;

lpMesag = "Press Esc to exit";
TextOut( hDC, 280, 240, lpMesg, lstrlen(lpMesg));
lpDDSP->ReleaseDC(hDC);

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧洲精品在线观看| 色婷婷亚洲精品| 久久午夜羞羞影院免费观看| 极品少妇一区二区| 国产精品久久久久久久蜜臀 | 日韩精品中文字幕一区二区三区 | 亚洲综合在线五月| 欧美日韩国产电影| 精品在线一区二区| 国产日韩av一区| 色偷偷久久人人79超碰人人澡| 亚洲国产wwwccc36天堂| 欧美成人aa大片| 成年人网站91| 日韩av电影一区| 中文字幕av在线一区二区三区| 色狠狠综合天天综合综合| 五月婷婷激情综合网| 久久久久久久久伊人| 北条麻妃一区二区三区| 性做久久久久久免费观看| xvideos.蜜桃一区二区| 在线观看视频一区二区欧美日韩| 蜜桃av一区二区在线观看| 亚洲国产精品二十页| 欧美另类变人与禽xxxxx| 国产成人8x视频一区二区| 亚洲国产一二三| 欧美激情一区三区| 91精品国产欧美一区二区18| 粉嫩av一区二区三区| 天堂资源在线中文精品| 国产欧美视频一区二区| 在线电影国产精品| jizzjizzjizz欧美| 久久成人久久鬼色| 亚洲在线观看免费视频| 国产三级三级三级精品8ⅰ区| 欧美日韩精品综合在线| 成人avav影音| 国产一区二区三区视频在线播放| 亚洲一区二区中文在线| 日本一区二区久久| 精品国产伦一区二区三区免费| 91蝌蚪porny成人天涯| 国产老肥熟一区二区三区| 午夜av电影一区| 一二三四社区欧美黄| 国产精品免费av| 久久久亚洲综合| 欧美老女人在线| 欧美性大战久久| 99久久伊人精品| 国产成人精品在线看| 裸体在线国模精品偷拍| 偷拍亚洲欧洲综合| 亚洲影院在线观看| 亚洲色图欧洲色图| 国产精品欧美一区喷水| 久久精品人人做人人综合| 精品蜜桃在线看| 欧美一级二级三级蜜桃| 欧美丰满少妇xxxbbb| 欧美日本国产一区| 欧美日韩综合在线| 欧美在线你懂得| 欧洲亚洲精品在线| 在线亚洲一区观看| 欧美亚洲精品一区| 在线观看欧美日本| 亚洲永久精品国产| www久久精品| 亚洲精品一线二线三线无人区| 日韩一区二区在线看| 欧美老肥妇做.爰bbww| 欧美日韩高清影院| 91麻豆精品91久久久久久清纯| 欧美日韩一卡二卡| 欧美电影一区二区三区| 91精品久久久久久久久99蜜臂| 欧美在线制服丝袜| 欧美色中文字幕| 欧美日韩午夜影院| 91精品国产综合久久福利| 欧美一区二区三区成人| 久久综合九色欧美综合狠狠 | 国产精品一品视频| 成人免费视频免费观看| 成人av电影免费在线播放| 色综合天天综合狠狠| 精品视频一区二区不卡| 91精品蜜臀在线一区尤物| 精品久久一区二区| 亚洲国产经典视频| 亚洲综合区在线| 男女性色大片免费观看一区二区 | 在线看国产日韩| 欧美日韩大陆一区二区| 欧美v日韩v国产v| 国产欧美日韩久久| 亚洲一区在线观看视频| 美女视频网站久久| 国产成人精品一区二| 91蜜桃免费观看视频| 欧美精品18+| 久久精品亚洲一区二区三区浴池| 综合色天天鬼久久鬼色| 日韩高清欧美激情| 成人精品在线视频观看| 欧美日韩高清在线| 国产日本亚洲高清| 亚洲图片欧美一区| 国产精品伊人色| 91福利视频网站| 久久综合色之久久综合| 亚洲人成网站精品片在线观看| 日韩电影一二三区| 成人动漫中文字幕| 91精品国产91综合久久蜜臀| 国产拍欧美日韩视频二区| 午夜影院久久久| 成人h精品动漫一区二区三区| 欧美日韩精品一区视频| 国产精品网站在线观看| 免费观看成人av| 色婷婷综合在线| 精品人在线二区三区| 一区二区三区中文字幕| 国产成人午夜高潮毛片| 欧美绝品在线观看成人午夜影视| 国产精品嫩草影院com| 久久99久久99| 欧美日韩一区精品| ...xxx性欧美| 国产精品自拍一区| 欧美精品色一区二区三区| 亚洲欧洲精品天堂一级| 国内精品伊人久久久久av一坑| 欧美无砖专区一中文字| 自拍偷拍亚洲综合| 国产91对白在线观看九色| 91精品国产91热久久久做人人| 亚洲人成小说网站色在线| 国产自产2019最新不卡| 欧美一区二区视频在线观看2020 | 欧美成人精品高清在线播放| 亚洲精品国久久99热| 成人的网站免费观看| 欧美激情在线一区二区三区| 精品中文字幕一区二区小辣椒| 欧美欧美欧美欧美| 亚洲女同一区二区| 99久久精品免费精品国产| 日本一区二区免费在线| 国产精品资源在线观看| 欧美videofree性高清杂交| 日韩国产精品久久久| 3d动漫精品啪啪一区二区竹菊 | 精品国产乱码久久久久久1区2区 | 亚洲在线视频网站| 欧洲国内综合视频| 亚洲一区日韩精品中文字幕| 欧洲精品一区二区| 亚洲国产综合在线| 欧美日韩亚洲国产综合| 亚洲一区二区欧美激情| 欧美视频在线不卡| 亚洲成人黄色影院| 欧美日韩极品在线观看一区| 亚洲国产一二三| 91精品国模一区二区三区| 日韩一区精品视频| 欧美一级在线免费| 韩国午夜理伦三级不卡影院| 久久亚洲精品国产精品紫薇| 国产综合一区二区| 欧美韩国日本综合| 色婷婷国产精品综合在线观看| 有码一区二区三区| 欧美色图免费看| 美腿丝袜亚洲综合| 国产欧美一区二区精品仙草咪| 成人丝袜高跟foot| 亚洲免费观看在线视频| 欧美日韩精品一区二区在线播放| 日韩vs国产vs欧美| 久久精品视频在线看| 91视频www| 美女在线观看视频一区二区| 国产视频一区不卡| 在线影院国内精品| 久久99蜜桃精品| 亚洲色欲色欲www| 91麻豆精品久久久久蜜臀| 国产精品影视在线| 亚洲国产欧美日韩另类综合 | 欧美日韩高清一区二区| 激情小说欧美图片| 一区二区三区久久久| 日韩精品一区在线观看|