HGE核心繪圖解決方案


  在【【HGE】繪圖底層】這個帖子里面有些地方需要更正。

  為了不誤導別人,這里有必要補充一下:

  HGE每次繪圖都需要鎖定一次緩沖區,只適合繪制大量相同的圖片,如果是各種不同的圖片,問題就出來了。如果繪制一百張圖片就需要鎖定和解鎖各一百次。了解D3DAPI編程的人明白這是個什么問題。所以現有的HGE繪圖算法是完全不適合大型游戲的。

  有些人看到HGE自帶例子中繪制2000個sprite FPS達200-300以上就以為是正確的,不要忘記繪制的圖片都是同一張圖片。這個問題是網上一位朋友首先發現的。

  這里給出解決方案:

  首先刪除HGE原有的渲染函數,一個都不要留。

  然后制作出一個添加數據的函數,函數調用之前,進行鎖定操作,但是只需要鎖定一次。

  可以不斷調用這個函數把四邊形數據復制入頂點緩沖區里面。全部復制完畢解鎖。

  也許你以為跟HGE原來的復制一次就鎖定一次是一樣的,那么就要仔細思考了。

  這里只鎖定一次,以后的調用的是不需要鎖定的,但是需要在鎖定的狀態下復制數據。

  全部復制完畢之后解鎖就行。因為對數據的更新就按照設定的時間來操作。

  網絡游戲為了同步肯定需要設定一個同樣的數據更新時間。

  那么在不需要更新的時間內,是不需要對數據進行復制的。

  那么原來的一幀時間內鎖定一千次,一千張圖片需要繪制,現在我們在好幾幀的時間內才需要鎖定一次,而且是大批量地復制各種不同的圖元數據,這個數量的對比就可想而知了。

  如果你不了解關於頂點緩沖區鎖定操作不當會帶來什么問題,可以在網上搜索,很容易得到結果。

  而且我把頂點緩沖區的創建和鎖定方式全部修改了。以適合數據大批量地復制的要求。

  在大部分渲染的時間內,顯卡GPU直接讀取緩沖區的所有數據進行批量地渲染,CPU只需要做很少的工作。使用高級着色和HLSL技術,也許CPU更空閑。

  就是說渲染函數和邏輯函數分開處理。

  客戶端的繪圖核心是繪圖算法架構。研究這方面的人很少,原因只有一個,大量程序員缺乏商業游戲實踐的開發經驗。

  對游戲沒有深入地了解,哪怕你的編程技術世界上第一,在游戲開發的面前也只是白痴一個。

  繪圖核心只有一個目的,在大量的場景中繪制大量的圖元和大量的特效的時候,游戲的流暢性完全不受到影響。

  玩過盛大傳奇和傳奇世界的人都知道,在攻城的時候在皇宮里面那種走一步卡半天的感受就了解了。

  不要認為二維游戲不值得研究,那么你永遠都不可能做成成功的三維游戲,因為實際繪圖核心是一致的。

  不以為三維游戲就肯定不同了。哈哈~~

  思路已經給出,大牛很容易修改出來。

  當然修改成功之后,你可以不用HGE這個名稱了。因為其它方面其實都是D3D架構的常用設置。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM