OpenGL和DirectX是什麼?

前言

學習3d遊戲開發,避免不了和圖形學打交道,在電腦上安裝一些大型遊戲時,也經常會報缺少一些東西,而導致遊戲無法運行,其中出現的單詞就有DirectX,但他是什麼呢?OpenGL又是什麼呢?
unity3d遊戲開發中逼真的遊戲場景和特效又是和誰打交道呢?讓我們開始瞭解OpenGL和DirectX吧!

OpenGL是什麼

OpenGL(全寫Open Graphics Library)是個定義了一個跨編程語言、跨平臺的編程接口規格的專業的圖形程序接口。它用於三維圖象(二維的亦可),是一個功能強大,調用方便的底層圖形庫。

OpenGL是個與硬件無關的軟件接口,可以在不同的平臺如Windows 95、Windows NT、Unix、Linux、MacOS、OS/2之間進行移植。因此,支持OpenGL的軟件具有很好的移植性,可以獲得非常廣泛的應用。由於OpenGL是圖形的底層圖形庫,沒有提供幾何實體圖元,不能直接用以描述場景。但是,通過一些轉換程序,可以很方便地將AutoCAD[2] 、3DS/3DSMAX[3] 等3D圖形設計軟件製作的DXF和3DS模型文件轉換成OpenGL的頂點數組。

市場調研機構Jon Peddie Research預測,OpenGL 3.1規範圖形硬件的安裝規模將超過1億。AMD、NVIDIA、S3 Graphics的顯卡驅動目前都已經支持OpenGL 3.0。

OpenGL-ES是什麼

OpenGL ES (OpenGL for Embedded Systems) 是 OpenGL 三維圖形 API 的子集,針對手機、PDA和遊戲主機等嵌入式設備而設計。
OpenGL- ES 是免授權費的,跨平臺的,功能完善的2D和3D圖形應用程序接口API,主要針對多種嵌入式系統專門設計 - 包括控制檯、移動電話、手持設備、家電設備和汽車。它由精心定義的桌面OpenGL子集組成,創造了軟件與圖形加速間靈活強大的底層交互接口,就是目前手機遊戲主要使用的圖形底層支持。

DirectX是什麼

1995年至1996年,微軟實行了一項新計劃,以支持在Windows95上運行遊戲,目標是把市場擴展到被任天堂和世嘉控制的遊戲領域。然而,微軟不想用已經在NT上提供的OpenGL技術。微軟收購了Rendermorphics,Ltd.並得到他的被稱作RealityLab的3D API。經重新整理,微軟發佈了新的3D API——Direct3D。
微軟,推行Direct3D,凍結OpenGL!進行API之戰。(微軟就是這麼吊~)這就是DirectX由來歷史!
DirectX,(Direct eXtension,簡稱DX)是由微軟公司創建的多媒體編程接口。由C++編程語言實現,遵循COM。被廣泛使用於Microsoft Windows、Microsoft XBOX、Microsoft XBOX 360和Microsoft XBOX ONE電子遊戲開發,並且只能支持這些平臺。
DirectX加強3D圖形和聲音效果,並提供設計人員一個共同的硬件驅動標準,讓遊戲開發者不必爲每一品牌的硬件來寫不同的驅動程序,也降低了用戶安裝及設置硬件的複雜度。從字面意義上說,Direct就是直接的意思,而後邊的X則代表了很多的意思,從這一點上可以看出DirectX的出現就是爲了爲衆多軟件提供直接服務的。
DirectX並不是一個單純的圖形API,它是由微軟公司開發的用途廣泛的API,按照性質分類,可以分爲四大部分,顯示部分、聲音部分、輸入部分和網絡部分。已然成爲了一個應用平臺,目前遊戲開發,DirectX所佔市場要大一些。

OpenGL和DirectX的區別

1在技術方面,OpenGL具有較強的可移植性,而DirectX只能用於windows操作系統,它是基於windows操作系統平臺的應用程序接口。OpenGL只是圖形函數庫,是專業的3D程序接口,OpenGL被設計爲只有輸出,因此只提供渲染功能。核心API沒有窗口系統,音頻,打印等其他輸入設備的概念。也正是因爲這樣的設計,允許它渲染的代碼完全獨立於運行的操作系統,允許跨平臺開發。
DirectX是微軟公司開發的用途廣泛的API,它提供了一整套多媒體接口方案,尤其在3D圖形方面的表現突出。
在硬件通信方面,DirectX是程序能夠輕鬆確定計算機的硬件性能,然後設置與之匹配的程序參數。該程序使得多媒體軟件程序能夠在基於windows的具有DirectX兼容硬件與驅動程序的計算機上運行,同時確保多媒體程序能夠充分急用高性能硬件。
OpenGL是一個與硬件無關的軟件接口,可在任何平臺上運行,與DirectX能設置與硬件匹配的程序參數相比,要遜色一些。目前,硬件開發商正在加強對它的支持。
2在應用方面,在專業高端繪圖領域,OpenGL仍然是不能被取代的主角,在包含CAD,內容創作,能源,娛樂,遊戲開發,及虛擬現實等行業領域中,OpenGL得到廣泛的應用。DirectX適合於多媒體,娛樂,及時3D動畫等廣泛和實用的3D圖形計算,在基於windows平臺上的遊戲開發中,它佔領了大部分的市場。

Unity Shader編程是什麼

回到unity引擎上,着色器(shader)編程是什麼呢?我們看到個人電腦上圖形處理器的性能日益增強。而且它使得遊戲執行速度運行得更加的快,但其並不能證明圖形處理器就擁有高質量的圖像表現力。這就是迄今PC圖形處理器發展的主要侷限性 — 固定函數。固定函數意味着芯片設計者需要把特定圖形算法的硬件代碼加入到圖形芯片中,並且它也限制了遊戲與應用程序開發者只能在這些特定的固定算法裏徘徊。
3D應用編程接口(OpenGL及DirectX)一直沿着圖形硬件在不斷地發展進步。DirectX Graphics中最重要的一個特徵就是增加了可編程管道,提供彙編語言接口處理變形與光照的硬件(頂點着色)及象素管道(象素着色)。可編程管道爲開發者們提供了極大的自主權,以用其去實現以前從未見過的實時應用程序。
直白一點的講,着色器是一段運行在GPU上的程序,可以取代渲染的固定功能流水線中部分功能。我們利用可編程管道渲染,達到比用固定管道渲染更豐富的畫面顯示效果。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章