2013-03-25 34 views
36

我最近開始學習OpenGL(> 3.3)&我已經注意到很多示例&教程同時使用freeglut & glew,但沒有真正解釋差異。我發現的最好的描述,用google搜索廣告nauseum &後,這個OpenGL Related toolkits and APIs,但發現它缺乏。我甚至讀過SO上的標籤信息。
freeglut vs glew的區別?

作爲一個非常新的OpenGL,我仍然試圖掌握不同的概念。我已經到了創建一個使用glew的基本程序的階段,創建上下文(在windows上,VS2010),&繪製真正的基本形狀,所有這些都不需要明確包含freeglut。所以我不明白爲什麼我需要它。

所以我的問題然後,有什麼區別
-freeglut
-glew
- (& GLFW)
什麼可以做一個是其他不能

+3

但就是這樣,正如我已經說過的,所有的例子和我已經閱讀過的教程等,不要讓它真正清楚**初學者**他們實際上做了什麼,因此我的困惑。所有的例子都使用函數等,但實際上並沒有說明一個人可以做什麼,另一個不能以任何明確的方式。 – ReturnVoid 2013-03-25 12:12:25

回答

44

OpenGL擴展牧馬人(GLEW)用於訪問現代OpenGL API函數(版本3.2到最新版本)。如果我們使用古老版本的OpenGL,那麼我們可以訪問OpenGL函數,只需包括#include <GL/gl.h>。但在現代OpenGL中,API函數是在運行時確定的,而不是編譯時間。 GLEW將處理的OpenGL API.About GLEW的運行時間裝載看到here

GLFWfreeglut將使我們能夠創建一個窗口,並接收鼠標和鍵盤輸入在跨平臺的方式。 OpenGL不處理窗口創建或輸入,所以我們必須使用這些庫來處理窗口,鍵盤,鼠標,操縱桿,輸入和其他目的。

GLFWfreeglut是我們的替代根據我們的需要,我們可以選擇任何一個,但GLEW是與它們不同,其使用了OpenGL API的運行時加載。

+1

@MichhaelIV我編輯了我的答案 – 2013-03-26 03:52:26

2

我在他們大學的一些工作中使用他們。

GLEW是一個「跨平臺的開源C/C++擴展加載庫」(來自其網站),而freeglut是一個窗口管理器,它取代了默認的OpenGL Utility Toolkit(GLUT)庫。

所以,正如你所看到的,兩種不同的目的都有不同。使用freeglut的一點是,它仍然保持着,而默認GLUT不是,所以如果你想bug修復和新功能,你應該使用它:)

+0

所以基本上,人們可以決定自己使用freeglut?還是自己呢?沒有任何一個。因此,其中任何一個都具有其他所需的所有功能,爲什麼包括這兩者?再一次,我不明白。對不起,如果這聽起來真的很厚,但我不知道,事實上我看到的所有例子都包括兩個或一些類似的變體沒有幫助。 – ReturnVoid 2013-03-25 12:08:56

+0

掛起,所以GLEW是C/C++特有的?鑑於,Glut/freeglut不是?這是否意味着運行C#或.net或不是C/C++的人不能使用GLEW,他們必須使用glut或其他東西? – ReturnVoid 2013-03-25 12:15:44

+1

您不需要使用GLEW,因爲它是一個版本管理器(它可以確保您的操作系統具有適當的版本),但它很有幫助。如果你想使用默認的GLUT,你也可以刪除freeglut,但是你會使用舊軟件,因爲它似乎被放棄了... – mrcasals 2013-03-25 13:10:30