什么是OpenGL?什么是direct x?單機游戲運行為什么與它們有關?

大家好 , 歡迎來到霍夫日記 , 我是霍夫 。 今天我來說說什么是directx?什么是OpenGL?為什么玩單機游戲的時候 , 經常彈窗提示缺少這些程序組件無法運行游戲呢?
某天 , 你剛下好的三A大作正版游戲終于下載完畢了 , 心里想著可以開玩了 , 趕緊點擊EXE程序運行 。
于是出現以下畫面
什么是OpenGL?什么是direct x?單機游戲運行為什么與它們有關?
文章圖片
什么是OpenGL?什么是direct x?單機游戲運行為什么與它們有關?
文章圖片
怎么打不開不了啊?計算機中提示缺少d3directx9.dll是怎么回事?
我們玩游戲天天都得接觸directx和OpenGL , 沒有這些程序游戲就玩不了了 。 可是你有沒有想過它們究竟是干嘛用的呢?這個OpenGL又是什么鬼呢?
什么是OpenGL?什么是direct x?單機游戲運行為什么與它們有關?
文章圖片
什么是OpenGL?什么是direct x?單機游戲運行為什么與它們有關?
文章圖片
在很早很早以前 , 軟件開發缺乏標準編程 , 可以說是一對一的 。 我這串代碼就對應著一種硬件一種系統 , 這樣一來呢 , 開發的過程就極其的繁瑣 , 畢竟你這軟件可是一對一高端定制 , 你想讓全世界的設備都用上你的軟件 , 那對不起 , 你得一個個去找軟硬件廠商 , 一個個去做適配吧 。
什么是OpenGL?什么是direct x?單機游戲運行為什么與它們有關?
文章圖片
那這個時候我們就需要一個中間層 , 在不同的軟件 , 不同的硬件之間進行溝通 , 這就是api應用編程接口 。
什么是OpenGL?什么是direct x?單機游戲運行為什么與它們有關?
文章圖片
api就相當于是一系列函數的集合,程序可以直接通過這些函數進行構建 , 不需要訪問更底層的東西 。 這樣一來 , 軟件開發的門檻就降低了 。
api的意義在于簡化編程的操作 。
打個比方 , 你現在想和法國人交流 , 如果沒有翻譯的話 , 你就只能自學法語 。 可這也太麻煩了吧 , 我就想搭個話 , 喝兩口法國紅酒 , 我還得再學一門外語才行嗎?
當然不必這么麻煩 , 你找個翻譯不就行了吧 。 這api就是你的翻譯 , 盡管翻譯會造成延遲 , 會降低一點交流的效率 , 你得額外花點時間等翻譯說完 , 但至少你可以聽懂法國佬說話了 , 可以正常交流正常喝酒了 , 這才是最重要的 。
說到這里你也應該猜到了 , 我們親愛的directx和OpenGL正是api 。
什么是OpenGL?什么是direct x?單機游戲運行為什么與它們有關?
文章圖片
確切的說呢 , OpenGL是一種圖形api , 而directx則是許多各種各樣api的集合體 。 其中當然也包括圖形api--direct3D 。
什么是OpenGL?什么是direct x?單機游戲運行為什么與它們有關?
文章圖片
圖形api , 猜猜這個名字都知道這是為圖形計算設計的 , 那么玩游戲說的最多也是圖形api , 這里我們用direct3D來舉例子 , 在游戲中它的作用差不多是這個樣子 。
什么是OpenGL?什么是direct x?單機游戲運行為什么與它們有關?
文章圖片
承上啟下嘛 , 它就相當于是游戲引擎和顯卡驅動、系統層之間的橋梁 , 是同時精通上層下層各種語言的翻譯官 。
OpenGL其實也是類似的一個工作流程 , 但是它相比direct3D更加開放一些 。 因為OpenGL是由非盈利性的行業聯盟khronosgroup牽頭的 , 它是跨平臺的 , 對于系統沒有限制 , 你不僅可以在windows上用 , 也可以在macos、linux上使用 , 甚至還可以在安卓和ios上使用它們的閹割版本OpenGLes 。
相比之下呢 , direct3D就只允許在微軟自家的windows和xbox上使用了 。 此外 , OpenGL的學習門檻也更低 , 開發人員更容易上手 。 但是它的缺點就是效率往往不如direct3D , 新特性的更新往往也比較慢一些 。 說白了就是不如direct3D先進吧 。 但這兩種圖形api地位是一樣重要的 。

相關經驗推薦