具體來說,OpenGL是一個開放的圖形庫,它規定了每個函數應該如何執行,以及它們的輸出值,但沒有具體實現。它提供了渲染2D和3D圖形的標準或規范。
GLEW,全稱OpenGL Extension Wrangler Library,是一個用于管理OpenGL擴展功能的庫。由于OpenGL只有函數聲明而沒有實現,所以不同的顯卡生產商會提供自己的實現。這就需要在編寫程序時判斷哪些函數是否可用,非常麻煩。而GLEW庫則將這些問題簡化,使得各個版本的OpenGL函數像原生函數一樣可以直接調用。
GLFW庫是專門針對OpenGL的C語言庫,GLFW是一個專門用于處理窗口創建和事件循環的庫,它能夠兼容各種操作系統,提供了一個簡單的API來處理窗口相關的操作,如創建、銷毀、調整大小等。GLFW負責創建窗口、處理窗口相關的事件(如鍵盤和鼠標輸入),并提供一個OpenGL上下文供程序使用。
OpenGL則是一個跨語言、跨平臺的應用程序編程接口,用于渲染2D、3D矢量圖形。OpenGL函數庫相關的API有核心庫(gl),實用庫(glu),輔助庫(aux)、實用工具庫(glut)、窗口庫(glx、agl、wgl)和擴展函數庫等。其中,gl是核心庫,提供了最基本的OpenGL函數;glu是實用庫,對gl的部分功能進行了封裝;而glx、agl、wgl則是針對不同窗口系統的函數。
這三個庫的關系可以這樣理解:首先,GLFW負責創建和管理窗口以及處理用戶的輸入事件;然后,OpenGL則負責渲染2D、3D圖形;最后,GLEW則提供了對OpenGL更高版本函數的支持,使得開發者可以在不改變代碼的情況下使用新版本的OpenGL功能。這三者相互配合,共同完成了圖形應用程序的開發。?