2012-02-16 35 views
2

一個OpenGL的研究與開發環境,據我在這裏讀到:http://www.linuxquestions.org/questions/linux-software-2/opengl-vs-mesa-whats-the-diff-351037/如何設置,但不梅薩

梅薩是軟件渲染,而OpenGL的驅動程序是硬件渲染。

我過來的每一個教程都只展示瞭如何安裝Mesa。我怎樣才能建立一個真正的(硬件加速)openGL?安裝驅動程序是否安裝標題?如果是這樣,哪個頭?如果我有一個與mesa compat的程序,我是否必須重新編譯它以利用硬件加速?如果安裝驅動程序安裝所需的庫和頭文件,mesa會發生什麼情況?

從指定網站上的最後一篇文章:「這是否意味着如果我安裝了NVidia驅動程序,我應該刪除mesa軟件包?」

而且,現在的openGL現在是版本4和5,但我找不到,說明如何創建上下文的版本中,只有版本3 Max中的任何教程...

就像你所看到的,即時通訊不太確定這是如何工作的。

最後一件事,這本書:http://glprogramming.com/red/是哪個版本的openGL?指南版本是1.1,但它不會說它是爲哪個版本編寫的。

+0

這裏有很多問題。你應該把它縮小到一個主題。 – 2012-02-16 03:08:54

+0

我無法幫助您解決所有這些問題,但這些鏈接可能會幫助您入門。 http://developer.nvidia.com/nvidia-graphics-sdk-11 http://developer.amd.com/sdks/Pages/default.aspx當然,https://www.opengl.org/sdk/ – spaaarky21 2012-02-16 03:32:08

+1

順便說一句,沒有OpenGL版本5這樣的東西。目前的GL版本是4.2 – 2012-02-16 04:11:28

回答

7

Mesa是軟件渲染,而驅動程序OpenGL是硬件渲染。

編號Mesa是OpenGL API的開源實現,並且還提供了軟件光柵化器回退。但是梅薩也是爲英特爾RADEONradeonhdnoveau開源GPU驅動程序的基礎。

我過來的每一個教程都只顯示如何安裝Mesa。我怎樣才能建立一個真正的(硬件加速)openGL?

OpenGL只是一個API。這意味着你用於開發的OpenGL的哪個實現無關緊要。您可以使用Mesa進行開發,但您的程序也可以在專有驅動程序中正常運行。

安裝驅動程序安裝標頭嗎?

有時。但是大多數Linux發行版阻止了這一點,並將Mesa頭文件作爲規範開發資源。

如果我有一個程序與mesa compilled,我必須重新編譯它以利用硬件加速?

不。如果你做的一切都正確,即動態地將你的可執行文件與libGL.so鏈接起來,你的程序可以與任何OpenGL實現一起工作。

如果安裝驅動程序安裝所需的庫和標題,mesa會發生什麼?

取決於分配。一些發行版有供應商驅動程序替換libGL.so,但不是Mesa開發文件。一些發行版替換libGL.so和頭文件。有些發行版將OpenGL實現放在/ usr/lib/opengl中,並提供了一種設置符號鏈接(Gentoo)的工具。在實踐中,這並不重要。

從指出網站上的最後一篇文章:「這是否意味着如果我安裝了NVidia驅動程序,我應該刪除mesa軟件包?」

如果需要,您的發行版軟件包管理器將發出警告。但就像我說的那樣:除了Mesa實現僅支持OpenGL-2.1之外,它不應該打擾您。但這並不意味着您無法編譯OpenGL-3及其以上的程序。他們將無法創建一個OpenGL-3上下文並以錯誤消息中止或回退到OpenGL-2

+0

Mesa實現僅支持OpenGL-2.1。但這並不意味着您無法編譯OpenGL-3及其以上的程序。他們將無法創建一個OpenGL-3上下文並放棄錯誤信息或回退到OpenGL-2 .....你能解釋一下嗎?即時通訊不知道我明白,我如何使用opengl 3沒有opengl 3上下文? – user1115057 2012-02-16 22:02:45

+0

@ user1115057:通過所謂的「擴展」機制訪問OpenGL-3。如果支持,擴展允許程序從OpenGL實現動態加載其他功能。擴展API自OpenGL-1.1以來一直得到修復,並且從那時起並沒有改變。所以你可以使用Mesa編譯一個程序,利用擴展。如果Mesa是OpenGL運行時實現,它將簡單地報告OpenGL-3函數不可用,並且程序錯誤會回退到OpenGL-2。如果運行時存在支持OpenGL-3的實現,則可以訪問它。 – datenwolf 2012-02-17 00:54:10

+0

如果Mesa是OpenGL運行時實現,它只會報告OpenGL-3函數不可用,並且您的程序錯誤會回退到OpenGL-2 ...您的意思是Mesa = no opengl-3,或者您的意思是mesa +沒有擴展名=沒有opengl-3?我在哪裏可以得到這些擴展名? – user1115057 2012-02-17 02:20:46

相關問題