3D遊戲編程:Direct3D幫我們做了哪些事情?

2020-12-28 我是遊戲小胡

「學」的部分

每一個程式設計師或多或少都有一些「傲氣」,因為他們掌握了別人掌握不了的東西,難免會沾沾自喜。實際上,每個行業都有這樣的現象,某些人自以為很強,然後就會看不起那些能力比較弱的。說得再「接地氣」一些,這就是「鄙視鏈」。

編程界的「鄙視鏈」道理是一樣的,那些會「核心技術」的程式設計師,就會「鄙視」其他的程式設計師了。「鄙視鏈」在年輕程式設計師中不算明顯,主要是在那些「資深的」、年長的程式設計師圈子中比較常見。尤其是會寫3D遊戲的老程式設計師,目光是非常高的,他們甚至會看不起DirectX!

DirectX的技術中,讓所有程式設計師都佩服的地方有兩個:

其一,就是COM技術;

其二,是DirectX虛擬了所有的硬體,讓遊戲編程不再考慮繁瑣的硬體控制。

第二點怎麼理解呢?

在沒有DirectX之前,我們要寫一個遊戲是比較麻煩的。雖然作業系統(比方說Windows)提供了很多控制接口,這些控制接口可以控制顯示屏幕、聲音、鍵盤、滑鼠等等,但是,這些接口都是為普通程序設計的,遊戲程序完全沒法用。

舉個簡單的例子。Windows控制鍵盤的方式,是通過Windows消息來處理的。我們前面學過,Windows消息是有一個消息隊列的。說得再明白寫,就是鍵盤的響應是緩慢的。當用戶按下某個鍵的時候,鍵盤產生電流,告訴Windows系統用戶按了某個鍵。然後,Windows系統把這個鍵的信息打包成Windows消息的格式,發送給當前活動的窗口(最前面的一個窗口)。窗口通過消息循環,可以接收到這個消息,然後使用消息處理函數來處理這個鍵盤消息。

這一系列的複雜動作,其實是非常消耗時間的。由於同一時間內Windows消息的數量非常龐大,這個鍵盤消息傳遞到窗口的時候,可能已經等待了比較長的時間了。

然而,我們人是感覺不到「延遲」的,畢竟只有零點幾秒的時間。可是,零點幾秒對於電腦來講,卻是一段非常長的時間,對於遊戲程序來說,這個響應時間實在是太長了點。

所以,一個程式設計師要在遊戲中處理鍵盤按鍵,必須獲得鍵盤的直接控制權,也就是說,當這個遊戲程序運行的時候,會直接截取鍵盤按鍵時的電流信息,這樣,就不存在排隊等待的延遲了。

而要直接獲得鍵盤的電流信息,是一項非常困難的工作,尤其是在Windows這樣的環境下(在DOS環境下還可以用中斷),程式設計師甚至需要懂得鍵盤的驅動程序內容!這也是為什麼,在沒有DirectX之前,遊戲程式設計師非常喜歡在DOS環境下寫遊戲,因為控制鍵盤簡單啊!

不僅僅是鍵盤,程式設計師還要面對更為複雜的顯示屏幕,甚至是顯示屏後面的顯卡!也就是說,一個遊戲程式設計師,在正式寫遊戲之前,光處理這些硬體問題,就會搞得焦頭爛額。

而DirectX呢?直接把程式設計師和硬體分開了。它創建了新的COM接口,用COM接口來代替硬體接口。這樣的話,一個程式設計師只需要寥寥幾行的代碼,就能獲取一個硬體的完整控制權,至於背後那繁瑣的工作,就交給DirectX來處理吧!

由於這兩點非常「硬核」以及「高能」,沒有程式設計師會看不起這兩點,DirectX也被很多程式設計師推崇。

但是,3D遊戲程式設計師中,有那麼一些人自視甚高,他們非常看不起DirectX中的Direct3D。原因其實很簡單,他們可以不依靠Direct3D就能寫出效率不錯的3D程序,而Direct3D,僅靠簡單的幾個步驟,就可以讓新手寫出效果不錯的3D程序,你說,這讓他們內心怎麼平衡得了?

他們在自己寫3D程序的時候,曾經為了優化一個矩陣的乘法計算,熬了好幾個大夜才解決;他們為了讓燈光看起來更加真實,翻遍了大量的書籍資料;他們為了讓攝像機的運動過程更加順暢,努力學習了一個多月的四元數!可是,這一切在Direct3D這裡都是多餘。程式設計師不需要懂得太多的東西,就能寫出更好的程序來,你說,氣人不氣人?

但是,這些會3D遊戲編程內涵的程式設計師,依舊看不起只用Direct3D寫遊戲的人,因為,他們懂得矩陣的內涵,而後者只是迷迷糊糊地在使用罷了。

我們學校Direct3D的時候,千萬不要有什麼心理負擔,因為我們只是愛好,只要能寫出遊戲來,怎麼樣都是好的。而且,只要你認真學習本課程,你會明白3D遊戲編程中的每一步。雖然用Direct3D實現起來比較容易,但是,這個原理你是明白的。你和那些拋棄Direct3D寫遊戲的人來講,只是不懂得內部那複雜的數學計算罷了。而且,這些數學計算真的沒必要學,否則真的太浪費時間了。這麼說吧,如果再出個專欄,講解矩陣在3D遊戲編程中的詳細運用,並包含具體的計算過程和步驟,那麼,寫個100章,每章上萬字,都不一定能講明白。所以,我們懂得原理就行,不必深究。

那麼,Direct3D到底幫我們做了哪些複雜的工作呢?不急,我一點一點來說。

1.抽象了複雜的顯示設備

相關焦點

  • Github霸榜:從零開始學3D著色器編程
    主要介紹了通過使用Panda3D遊戲引擎和OpenGL著色語言來為3D遊戲添加紋理,法線貼圖,泛光,環境遮擋等等。教程內容十分豐富,動圖也非常生動。Shader,是運行在GPU上的程序,中文稱為著色器。它的主要用途是對三維物體進行著色處理,對光與影進行計算,以及控制紋理顏色的呈現等,最終,將遊戲引擎中的幾何數據轉化為屏幕上的模型、場景以及特效。
  • 3D遊戲編程:遊戲代碼的整體結構是什麼樣子的?
    為了能讓作為初學者的你學明白3D遊戲編程,我花費了17節的內容來講了一些「廢話」,只是希望你不要忽略這些「廢話」。3D遊戲編程實在是太複雜了,如果可以的話,我還想說一些更深層次的內容。但是我不能這麼做,過深的東西講得太多了,很容易「勸退」的。
  • 遊戲3d建模師好找工作嗎?工資待遇怎麼樣?
    學遊戲3d建模未來好找工作嗎?待遇怎麼樣?今天小編攜遊藝網(game798)的柱子老師來給大家簡單分析一下目前國內遊戲3d建模市場概況以及未來遊戲3d建模師發展前景,希望能給大家提供一些幫助。對於遊戲行業,我們最熟悉的公司莫過於騰訊、網易,光看這兩家公司對遊戲行業的投入就可以知道其發展前景是非常廣闊的,至於遊戲3D建模未來能從事何種工作,柱子老師解釋說是能幹很多的工作的,要知道遊戲3d建模是遊戲研發製作過程中必須經歷的過程,所以遊戲3d建模師是各大遊戲公司中不可缺少的崗位,不管是3D遊戲公司還是其他類型的遊戲公司,都是如此。
  • 3d建模軟體手機版有哪些?這3款好用的手機3d建模軟體你一定要有
    3d建模軟體手機版有哪些?對於一些三維設計師來說,能夠在手機上隨時隨地進行三維建模是一件很方便的事。本期,模型云為您整理了這3款好用的手機3d建模軟體介紹,快來和我們一起看看吧!3款好用的手機3d建模軟體3d建模軟體手機版一:MeshMixerMeshMixer是一款操作簡單的手機3d建模工具,其主要功能包括3D列印改進、製造切片工具、拖放及把原本組合在一起的多個不同的幾何體分成單獨的對象等,且支持PLY二進位格式、3Dconnexion空間滑鼠。
  • 入行遊戲3d建模,能得到多少「麵包」?
    中國的遊戲產業從興起到現在,不久,而現在正處於一個快速發展的關鍵黃金時期。遊戲原畫市場已經漸漸地偏向飽和了,但遊戲3d建模市場尤其是次世代的崗位缺口仍然很大,並且伴隨著次世代技術的不斷發展進步,這個崗位需求還會越來越大。沒有美術基礎,只有興趣愛好不能學?
  • 3D遊戲編程:初始化Direct3D的過程
    通過前面的課程,你已經對遊戲編程有了一個整體上的認識,就算不知道細節,但也足夠你出去「侃大山」了。從這一節內容開始,我們將要深入3D遊戲編程的細節。如果遊戲編程是一個複雜的機器,前面的課程已經幫你窺得全貌了,現在的你,只是機器中的原理和細節不太明白。
  • 3D眩暈症,吃雞遊戲就是噩夢
    不知道其他人也是否一樣,在我小時候第一次接觸第一人稱射擊遊戲的時候,是不知道3d眩暈症這種東西,在玩遊戲的時候也不會產生頭暈噁心的不適感,原因是在玩遊戲的同時,身體會不自覺地跟著遊戲畫面左右移動,雖然這個行為總是被小夥伴們取笑,但是自己根本無法控制。
  • 增材製造其實就是我們俗稱的3d列印技術,是一種新興的製造技術
    增材製造其實就是我們俗稱的3d列印技術,是一種新興的製造技術,是一種建造可伸縮部件的單元製造技術。適用於標準化材料、3d列印多功能複雜產品、高性能的物料構件、多功能關鍵部件、三維可視化零件、快速拼裝等。這要看你的需求是怎樣的,是研究增材製造,還是研究3d列印,研究增材製造的話很多,基本沒人在這方面剛剛入門就給你答案,大多要做研究的人都要到了某個階段再給你推薦。
  • 3D遊戲建模知多少?小白想學遊戲建模,先聽聽十年遊戲建模師的建議
    近來遊戲行業發展迅速。電子競技也逐漸得到大眾認可,遊戲建模自然而然地成為就業香餑餑了,很多想學習3d遊戲建模的小夥伴會來問我一些問題,在這我總結了一些大家最關注的問題和疑惑,希望對想學遊戲建模的你有些許幫助。
  • Own3d.tv是怎麼死的?
  • 3d立體牆貼多久會掉 牆貼的品牌有哪些
    牆面的裝修設計方法有很多,需要根據整體的設計風格來選擇適合的設計方案,牆面裝修現在很多家庭都選擇牆紙或者是牆體,立體的牆貼的優勢還是有很多的,那麼3d立體牆貼多久會掉呢,主要的壽命是多少呢。牆貼的品牌有哪些大家都知道嗎,在選購牆貼的時候這些相關的內容都不要忽視,一起來看看具體的介紹。3d立體牆貼多久會掉若不是人為破壞的話,3d立體牆貼可以使用20年都不會掉。因為這種產品不但具有很好的柔韌性,而且還具有阻燃、防水、防腐、耐老化等特點,因此被廣泛使用於家裝當中。
  • 國外網友3D列印自製《遊戲王》"千年神器" 十分還原.
    (現在想想這玩意好危險啊)、啤酒瓶蓋用錘子敲平了當飛鏢、木頭和螺釘或者彈珠做的陀螺,然後用拖拉機廢皮帶裡抽出來的線做鞭子打陀螺玩等等。如今長大了雖然長久沒有再做過相關的手工,但是對於這類製作總是十分感興趣,比如b站UP主「極客匠」以及那位從來不做有用東西的「手工耿」都是我關注的對象。而長大了後可以了解到的製作技術也越來越多,現在沒有玩過並且最吸引我的就是3d列印技術了。
  • 《仙劍奇俠傳7》cg不如國漫,國內3d人才都跑去做手遊了
    中國是3d大國,每一年電影、動畫和遊戲等行業都需要許多3d建模人才。這三個行業所需要的3d建模師,層次也各不相同。一般進入電影行業的3d建模師工資高能力也強,進入遊戲行業的3d建模師次之,而國漫的3d建模師數量少待遇最差。
  • 【新遊嘗鮮】首款3D動作海賊王遊戲——《航海王熱血航線》
    朝夕光年發布的海賊王3D動作手遊《航海王熱血航線》近日開啟了內測,這是首款可以在手機上玩到的動作類海賊王遊戲,遊戲用3d效果還原了許多動漫中的場景,適合喜歡海賊王的玩家。
  • OpenGL vs Direct3D
    一般來說,支持更加新一代版本API的GPU能夠兼容老版本的API的調用,意思就是說:支持最新的DirectX 11的GPU可以運行DirectX 9的遊戲。那時候Direct3D的編程模型讓很多碼農失望透頂。遊戲編程領域非常出名的卡馬克大碼農就是其中的一個,他還勸說微軟放棄Direct3D而轉投OpenGL陣營。1997年,Chris Hecker在Game Developer雜誌上發表了類似的一則對微軟的公開信。
  • 比DNF更好的3D動作網遊?沒火的原因,卻是因為做的太像單機
    在如今3d技術已經完全普及的情況下,但國內最火的動作網遊依然是2d的dnf。在其他遊戲類型發展得如火如荼時,3d動作網遊卻似乎始終沒有被國內玩家接受。難道國內真的沒有比dnf更好的3d動作網遊嗎?這款由韓國網禪開發的3d動作網遊,幾乎將市面上的動作網遊品質直接拔高了一個檔次。延續知名遊戲《洛奇》的世界背景,借鑑《怪物獵人》的動作精髓,被遊戲圈成為史上最細膩的atc遊戲。加之充滿視覺衝擊力(性感)的畫風,這款遊戲在韓國一上線,便成為年度爆款,奪得遊戲圈各大獎項。
  • 天龍八部榮耀版手遊禮包3D官網H5
    2019年3月15日 - 天龍八部H5最近吸引了大批玩家的關注,有很多玩家都在找天龍八部H5禮包激活碼,想要在遊戲中快人一步,那麼領取豐富的禮包是每個玩家進入遊戲前第一件必...www.9game.cn/tlbbh5/29...
  • 創想三維:有了3D印表機後,可以做哪些事賺錢
    手板加工製作      3d印表機最開始普及運用的行業是手板行業我們日常生活的每一個產品,都需要根據產品設計並打樣的過程。打樣,也就是製做樣板。首板的加工製做最開始是手工製作,因此其名稱漸漸地轉變成了「手板」。之後擁有數控工具機,也就是CNC雕刻機,替代了手工製作。現如今,3D印表機又漸漸地替代了CNC。3D印表機的快速造型能力,能製做CNC沒法製做的許多 複雜結構,手板加工廠成了首批運用3D印表機來做生意的客戶。
  • 2D與3D動畫的融合
    百藝匯聚 · 我們只做專業的大家好,各位期待已久的2d與3d動畫的融合終於來了!
  • 3d高清投影機哪款好 3d高清投影機推薦【圖文】
    導語:家庭影院現在已經成為了一種流行,每個家庭在安裝投影機時都會進行選擇和比較,誰都不會想要去安裝一部對觀影效果有影響的投影機,在選擇投影機時,往往我們會被市場上各種各類的投影機所影響,不知道該如何選擇,下面小編就為大家推薦幾部比較值得信賴的家庭3d高清投影機,以供大家參考選擇。