2012-05-19 42 views
-2

我很困惑。我一直在嘗試着從OpenGL開始,並且我一直沒有取得任何成功。對於瞭解OpenGL的人

細節: 我似乎一直試圖使用Mesa 3D,它甚至不是嚴格意義上的官方OpenGL實現。 Mesa 3D甚至使用gpu嗎?我有版本4.0(這就像一個OpenGL版本1.3實現)。我不知道如何獲得另一個實現庫;我甚至不知道其他人是什麼。 (我的dev-cpp編譯器提供了Mesa 3D)

實際上,我並不完全理解OpenGL是什麼。

此外,我無法使freeglut或glut或glu工作。他們正在調用gluOrtho和gluPerspective等不存在的功能。這是由於使用Mesa 3D嗎?有什麼方法可以讓這些整個圖書館實際工作嗎?

+3

請在這裏發表_specific_問題,每...問題一個問題。那裏有一些東西。如果您收到鏈接器錯誤,請閱讀docs_和_關注您找到的教程和示例。至於「什麼是OpenGL」,請使用搜索引擎,那裏有大量的信息。 – Mat

+0

我試過使用聊天功能!但沒人聽。 – Codesmith

回答

3

事實上,我並不完全瞭解OpenGL是什麼。

OpenGL in和本身就是一個API的規範:你可以調用一組函數,特殊值和標記以及每個調用的效果是什麼。然後,實現遵循這個規範來提供一個可用的OpenGL。

OpenGL是柵格化繪圖API,爲繪製3D空間中的圖元而優化。即您提供3D座標流和繪圖模式(即繪製點,線或三角形),然後OpenGL將3D數據轉換爲2D屏幕空間並在畫布上繪製平面圖元。後來的OpenGL版本不再是嚴格的3D到2D版本,而是需要所謂的着色器,它是描述將任意維度幾何轉換爲2D屏幕空間的小程序。

附加功能是在繪圖時作爲附加數據源的圖像數據(紋理)的採樣和插值。


細節:我似乎一直在嘗試使用3D梅薩這甚至不是嚴格意義上的官方OpenGL實現反正。

爲什麼?如果你在Windows上,那麼你應該使用GPU驅動提供的OpenGL實現,而不是一些隨機庫(儘管Mesa3D並不是完全隨機的)。

OpenGL實際上並不是你安裝的一些庫,它是GPU驅動程序提供的一組函數。對於GPU驅動程序不提供OpenGL的情況,您可以使用軟件光柵化器實現。

Mesa 3D甚至使用gpu嗎?

取決於。在Windows上Mesa3D只是一個軟件光柵器。但是對於X.org(Linux,FreeBSD等)來說,Mesa3D是GPU驅動程序的開源OpenGL前端,因此如果X.org配置爲使用Mesa3D可以使用的驅動程序,那麼您可以通過檯面獲得GPU加速。

我不知道如何獲得另一個實現庫;我甚至不知道其他人是什麼。(我的dev-cpp編譯器提供了Mesa 3D)

通常,您將OpenGL作爲GPU驅動程序的一部分。在Linux上安裝開源GPU驅動程序時,會自動安裝Mesa3D。但也有閉源驅動程序和那些使用完全不同的代碼庫。

這是非常重要的:你並不需要一個專門的OpenGL庫做OpenGL開發。

通常,您的編譯器附帶一個「opengl32.lib」(如果在Windows上 - 在其他平臺上,您只是告訴鏈接器與系統OpenGL鏈接)。然而,這只是鏈接器的內容列表,實際的OpenGL實現將提供什麼。

在Windows系統OPENGL32.DLL出口僅OpenGL的1.1。對於任何以上的功能,都有所謂的擴展機制來加載更高版本的功能。通常你做到這一點通過庫(在這種情況下,一個真正的圖書館)一樣GLEW

+0

感謝您的回答;我想因爲沒有人像你一樣彬彬有禮,我不能回答我的問題。 – Codesmith

+0

@AUTO:我只是擴大了我的答案 – datenwolf