FPS之遊戲繪製(六)

2021-10-05 22:52:00 字數 998 閱讀 8291

1.gdi外部繪製 這種繪製方式最為常見,遊戲也不容易檢測出,建立gdi裝置在指定的視窗控制代碼上繪製,占用cpu很小,但是繪製到遊戲裡面會閃爍,原因是遊戲fps重新整理頻率與gdi繪製頻率不同導致畫出的方框會閃爍。

2.gdi雙緩衝

這種繪製方式有一部分和外部繪製相同,但是又不同,這種繪製方式不會使方框閃爍,但是占用cpu極高,原理是申請一塊與遊戲高度寬度相同的記憶體,把這塊記憶體作為記憶體畫布使用,把繪製的方框畫到這塊記憶體畫布中,然後獲取遊戲的視窗控制代碼,使記憶體畫布中的影象和遊戲螢幕來回替換,這種繪製方式占用cpu,但是繪製效率很高,方框也不會閃爍,電腦配置高的可以研究下這種繪製方式。

3.gdi視窗繪製

這種繪製原理和第一種一樣,只不過不是繪製到遊戲視窗,而是自己建立乙個視窗,把方框繪製到這個視窗上,繪製效率快而且不易被檢測,記憶體占用很小,但是有乙個缺點,就是視窗不會自己重新整理,需要自己寫乙個重新整理視窗,使重新整理視窗的頻率大於等於gdi繪製頻率,這樣就視窗上的繪製內容就是連續的了,大家可以用這種繪製方式畫方框,國外有乙個fps方框透視就是用這種原理,至於寫法比這個精湛多了。

4.d3dhook繪圖

大家都知道3d遊戲的圖形介面有2種,directx和opengl,大部分的fps遊戲都是用directx引擎,所以我們可以通過hook directx裝置介面函式來繪製方框,這種繪製方式不佔cpu,不閃爍,但是易被檢測,dx裝置會在記憶體中申請2塊空間作為快取區a和快取區b,directx裝置會在快取區a中繪製圖形,繪製圖形的原理是通過繪圖函式比如dx11的drawindexed,通過這個函式的引數我們可以看出它是根據索引快取繪製乙個非例項化的圖形,在裝置建立到初始化再到繪製圖形,這一系列全部完成後dx11裝置會用present把快取區a對映到快取區b,讓快取區b作為遊戲螢幕並呈現場景,這樣快取區a與b來回對映達到遊戲畫面不斷更新,所以我們可以hook掉present函式,並獲取裝置指標引入自己的繪圖函式,這種繪製方式肯定不會閃爍,因為遊戲使用的就是d3d圖形介面,我們繪製方框的函式是在這個介面內遊戲fps重新整理頻率和繪製方框頻率肯定是一樣的,現在大部分fps遊戲都對present加了檢測。

遊戲夜讀 《FPS關卡設計》

fps關卡設計,這是書名,也是作者的日常工作內容,但書的內容並不僅限於fps,作者對此也做了一番解釋,極具設計閱歷和分享精神,摘抄如下。正如書名所指出的,本書主要講解第一人稱射擊 fps 遊戲的關卡設計。第一人稱射擊遊戲是最常見的遊戲型別,相比於其他型別的遊戲,這種遊戲的關卡設計尤為重要。所以,作為...

FPS 遊戲自瞄原理

經常玩遊戲的朋友,應該知道fps遊戲,例如 穿越火線,逆戰等等,他們的特點就是以第一人稱視角進行操作人物,螢幕中間會有乙個準星,通過準星瞄準敵人進行攻擊以達到擊殺效果和遊戲體驗。由於fps遊戲的特殊遊戲體驗,所以使得很多不法分子利用逆向知識開發了很多自動瞄準的工具,破壞了遊戲平衡。具體的原理如下 1...

VR初學者 FPS遊戲開發

一些在學習中不認識的函式 ellipsoidparticleemitter 橢圓體粒子發射器 用法eg ellipsoidparticleemitter epe 這裡申明了乙個粒子特效animation.crossfade 動畫的淡入淡出 animation.crossfade fire 引用動畫 ...