引言?

在與計算機圖形的接觸中,我一定聽說過兩個主要的編程接口:OpenGL和DirectX,它們一直在競爭并促進各自的開發(fā)。API戰(zhàn)爭真的很有趣。讓我們看看這兩個大老板是什么,他們的實力是什么。

?OpenGL是什么?

OpenGL是一個專業(yè)的圖形程序接口,它定義了一種跨編程語言和跨平臺編程接口規(guī)范。它用于三維圖像(或二維圖像),是一個功能強大、易于調(diào)用的底層圖形庫。OpenGL是一個獨立于硬件的軟件接口,可以在不同的平臺之間移植,如Windows 95、Windows NT、Unix、Linux、MacOS、OS/2。因此,支持OpenGL的軟件具有良好的可移植性和廣泛的應(yīng)用前景。由于OpenGL是圖形的底層圖形庫,它不提供幾何實體原語,不能直接用于描述場景。但是,通過一些轉(zhuǎn)換程序,可以很容易地將三維圖形設(shè)計軟件(如AutoCAD[2])生成的DXF和3DS模型文件轉(zhuǎn)換為OpenGL的頂點數(shù)組。市場研究機構(gòu)JonPeddie Research預(yù)測OpenGL3.1將安裝超過1億個圖形硬件。AMD、Nvidia和S3圖形圖形驅(qū)動程序都支持OpenGL 3.0。

?OpenGL-ES是什么?

OpenGL(OpenGL用于嵌入式系統(tǒng))是OpenGL三維圖形API的一個子集。它是為移動電話、PDA和游戲主機等嵌入式設(shè)備而設(shè)計的。Opengles是一個免費的、跨平臺的、功能良好的圖形應(yīng)用程序接口API,用于二維和三維應(yīng)用程序。專業(yè)設(shè)計各種嵌入式系統(tǒng),包括控制臺、手機、手持設(shè)備、家用電器和汽車。它由一個定義良好的桌面OpenGL子集組成,在軟件和圖形加速之間創(chuàng)建了一個靈活而強大的底層接口,這是目前在移動游戲中使用的底層圖形支持。?

DirectX是什么?

從1995年到1996年,微軟推出了一個新的程序來支持在Windows95上運行的游戲,旨在將市場擴展到任天堂和世嘉控制的游戲。然而,微軟不想使用已經(jīng)在NT上可用的OpenGL技術(shù)。微軟收購了rendermophics,ltd.并收購了3dapi所稱的現(xiàn)實實驗室。重組后,微軟發(fā)布了一個新的3dapi,direct3d.microsoft,它實現(xiàn)了direct3d并凍結(jié)了OpenGL!發(fā)動API戰(zhàn)爭。這是DirectX的歷史!直接擴展(DX)是由微軟創(chuàng)建的多媒體編程接口。它用C語言編程,滿足COM的要求。廣泛應(yīng)用于Microsoft Windows、Microsoft Xbox、Microsoft Xbox 360和Microsoft Xbox One視頻游戲開發(fā),只能支持這些平臺。DirectX增強了3D圖形和聲音的效果,并為設(shè)計師提供了通用的硬件驅(qū)動程序標準,這樣游戲開發(fā)者就不必為每個品牌的硬件編寫不同的驅(qū)動程序,同時也降低了用戶安裝和硬件設(shè)置的復(fù)雜性。在字面意義上,直接的x是一個直接的意思,后面的x代表許多意思。從這個角度來看,我們可以看到DirectX是為許多軟件提供直接服務(wù)的。DirectX不是一個簡單的圖形API。它是微軟開發(fā)的一個廣泛使用的API。根據(jù)其性質(zhì),可分為四個部分:顯示部分、語音部分、輸入部分和網(wǎng)絡(luò)部分。DirectX已成為一個應(yīng)用程序平臺。目前,DirectX在游戲開發(fā)中占有較大的市場份額。

OpenGL和DirectX的工作?

?兩者都是用于渲染二維或三維圖形的圖像應(yīng)用程序編程接口??梢哉f,這些接口連接上應(yīng)用程序和下GPU。應(yīng)用程序向這些接口發(fā)送渲染命令,而這些接口又向圖形卡驅(qū)動程序發(fā)送渲染命令。這些圖形卡驅(qū)動程序真的知道如何與GPU通信。正是他們將OpenGL或DirectX函數(shù)調(diào)用轉(zhuǎn)換為GPU可理解的語言,他們還負責紋理等。數(shù)據(jù)轉(zhuǎn)換為GPU支持的格式。

?OpenGL和DirectX的區(qū)別?

1 在技術(shù)方面?

?OpenGL具有很強的可移植性,而DirectX只能在Windows操作系統(tǒng)中使用。它是基于Windows操作系統(tǒng)平臺的應(yīng)用程序接口。OpenGL只是一個圖形庫。它是一個專業(yè)的三維程序界面。OpenGL被設(shè)計為只輸出,所以它只提供渲染。核心API沒有窗口系統(tǒng)、音頻、打印和其他輸入設(shè)備的概念。正是因為這種設(shè)計允許它呈現(xiàn)完全獨立于操作系統(tǒng)的代碼,從而允許跨平臺開發(fā)。DirectX是微軟開發(fā)的一種廣泛使用的API。它提供了一套多媒體接口解決方案,尤其是在3D圖形中。在硬件通信方面,DirectX是一個程序,它可以很容易地確定計算機的硬件性能,然后設(shè)置與之匹配的程序參數(shù)。此程序使多媒體軟件程序能夠在具有與DirectX兼容的硬件和驅(qū)動程序的基于Windows的計算機上運行,同時確保多媒體程序可以緊急使用高性能硬件。OpenGL是一個獨立于硬件的軟件接口,可以在任何平臺上運行。它在設(shè)置與硬件匹配的程序參數(shù)方面不如DirectX。目前,硬件開發(fā)人員正在加強對IT的支持。

2 在應(yīng)用方面?

?OpenGL仍然是專業(yè)高端圖形領(lǐng)域不可替代的主角。OpenGL已廣泛應(yīng)用于CAD、內(nèi)容創(chuàng)作、能源、娛樂、游戲開發(fā)和虛擬現(xiàn)實等行業(yè)。DirectX適用于多媒體、娛樂、實時三維動畫等廣泛實用的三維圖形計算。在基于Windows平臺的游戲開發(fā)中,它占據(jù)了大部分市場。

參考?

https://blog.csdn.net/yupu56/article/details/81355090 《Unity Shader 入門精要》