OPENGL架構


第2章 OpenGL 簡介

每台計算機都有專門處理圖形的硬件,它們控制着屏幕上顯示的內容。OpenGL向這種硬件發出命令,告訴它們執行什么操作。計算機游戲或者其他任意軟件借助制造商提供的設備驅動程序,使用OpenGL向圖形硬件發出命令,如圖2-1所示。

 
圖2-1  OpenGL的典型應用

OpenGL(Open Graphics Library,開放圖形庫)是游戲開發商使用最早、最流行的圖形庫之一。OpenGL是Silicon Graphics公司(SGI)在1992年開發的,但是直到1997的GLQuake中采用了這種圖形庫以后,游戲開發商才真正對它產生了興趣。GameCube、Wii、PlayStation 3和iPhone都把OpenGL作為它們的圖形庫的基礎。

除了OpenGL之外,還有一個選擇是Microsoft的DirectX。DirectX由更多的庫組成,包括聲音和輸入,所以把OpenGL與DirectX中的Direct3D庫進行比較更加合適。DirectX的最新版本是DirectX 11。Xbox 360使用的是DirectX 9.0。DirectX 10和DirectX 11只能在安裝了Windows Vista或Windows 7操作系統的計算機上使用。

Direct3D和OpenGL的功能集基本相同。現在游戲引擎(例如Unreal)通常構建一個抽象層,允許用戶根據情況在OpenGL和Direct3D之間切換,如圖2-2所示。當開發跨平台的游戲,例如需要把游戲發布到PlayStation 3和Xbox 360上時,必須提供這種抽象。Xbox 360必須使用Direct3D調用,而PS3必須使用OpenGL調用。

 
圖2-2  使用抽象層

DirectX和OpenGL都是非常優秀的圖形庫。DirectX工作在Microsoft平台上,而OpenGL可以應用到更加廣泛的平台上。DirectX更新得更快,意味着它可以利用最新的圖形功能。OpenGL的更新較慢,最新的圖形功能只能通過一個不太方便的擴展機制使用。OpenGL這種緩慢的更新有一個明顯的好處,即接口很少發生改變,所以多年前編寫的代碼仍然可以使用最新的OpenGL版本。DirectX的每個新版本都會改變接口,所以無法維持兼容性,必須調整和修改較老的代碼才能使它們利用DirectX的新版本。

通過Managed DirectX庫,可以在C#中使用DirectX,但遺憾的是,官方不再支持或更新這些庫。Managed DirectX已經被Microsoft的XNA游戲創建庫替代。XNA使用DirectX,但它是一個更高層的框架,用於快速創建游戲原型和開發游戲。SlimDX是一個針對DirectX開發的獨立的C# API,可以作為Managed Directx的一個不錯的替代品。

2.1  OpenGL的架構

OpenGL是一個C風格的圖形庫。C風格是指OpenGL中沒有類或對象,而只有大量的函數。OpenGL在內部就是一個狀態機。函數調用會修改OpenGL的內部狀態,這又會影響OpenGL的行為和在屏幕上渲染多邊形的方式。OpenGL是狀態機這個事實會帶來一些問題,例如在代碼中無意間修改了其他某個部分的狀態,從而導致出現bug。因此,留意哪些狀態發生改變十分重要。


免責聲明!

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



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