DirectDraw關於blt的一些注意事項

2021-06-28 09:06:22 字數 1358 閱讀 3684

blt函式是位塊傳輸的意思,一般用作從乙個頁面拷貝到另外乙個頁面。還有的用法就是使用單色填充頁面。 只要將ddbltfx的 fillcolor使其有效。

使用這個函式的時候注意三點:

使用函式前,最好要將頁面初始化。假設你編寫乙個動畫程式的時候,如果你不在每次的blt之前將頁面初始化,你的動畫角色,將在頁面上一直存在,就是要擦出動畫的前一步的blt。

使用這個函式時一定不能在lock與unlock 之間 呼叫,否則報錯。返回值資訊是 dderr_su***cebusy ,意味著呼叫blt的函式的頁面,已經被鎖定。 只有在解鎖之後,才能呼叫該函式。

lpdirectdrawsu***ce7 lpddbitmap;

if(!createbitmapsu***ce(&lpddbitmap,"monster.bmp",640,480))

ddcolorkey srcckey;

srcckey.dwcolorspacehighvalue=0;

srcckey.dwcolorspacelowvalue=0;

lpddbitmap->setcolorkey(ddckey_srcblt,&srcckey);

rect src_rect[6]=,,,

,,};static int  num_rect=0,num_speed=0;

rect dest_rect;

dest_rect.left=num_speed*30;

dest_rect.top=0;

dest_rect.right=dest_rect.left+200;

dest_rect.bottom=400;

if (dest_rect.left >= screen_width)

hresult h=lpddbuffer->blt(&dest_rect,lpddbitmap,&src_rect[num_rect],ddblt_wait | ddblt_keysrc,null);

if(failed(h))

while(failed(lpddprimary->flip(0,ddflip_wait)));

// 上面的**就是裝載位**件,將位圖blt到後備緩衝,然後在呼叫flip() 函式實現換頁。

當你沒有指定關鍵色 (color- key)的時候不能在blt的函式第四個引數中指定ddblt_keysrc |或者ddblt_keydest 標誌, 否則函式呼叫會返回錯誤資訊 dderr_invalidparams.

當你傳給blt函式的源矩形,目標矩形不正確的情況下,也回返回。dderr_invalidparams。  假設你的矩形left與 right交叉了。就會出現這種錯誤。

blt函式呼叫, 記住不能在lock與 unlock之間呼叫。 引數資訊一定仔細檢查是不是正確的。  

首次接觸DirectDraw

directdraw 1.directdraw可能是directx中最重要的技術,因為它溝通了2d圖形的顯示和direct3d所依賴的真緩衝層。只要掌握了directdraw,就能夠編寫各種在dos16 32下編寫的圖形應用程式。directdraw是理解directx中許多概念的關鍵,所以要特別注...

從頭學習DirectDraw

在開始學習directdraw程式設計之前,有一些題外話要說明,以下內容均是個人的心得和體會,如果其中有什麼謬誤之處,敬請諒解,同時個人不對可能造成的後果負責。以下幾點是在編制directx應用程式時應該注意的 directdraw是什麼?讓我們從訊息迴圈開始 directx最初是為遊戲開發而推出的...

DirectX 之 DirectDraw 視窗模式

在視窗模式下使用 directdraw 最大的痛苦是不能使用換頁操作 flip 但是有許多人還是喜歡在視窗模式下進行遊戲.首先,視窗模式下建立乙個 idirectdraw 介面物件和全屏模式下是一樣的,不同的是,在選擇協作模式和不能改變螢幕解析度.當然你堅決要改變,一定要有禮貌的改變.設定協作級別,...