2013-01-02 35 views
18

我運行的配置:的OpenGL和GLSL 3.3的高清顯卡4000在Ubuntu下12.04

  • 的Ubuntu 12.04
  • 英特爾高清顯卡4000

glxinfo給我的參數:

OpenGL renderer string: Mesa X11 
OpenGL version string: 2.1 Mesa 8.0.4 
OpenGL shading language version string: 1.20 
OpenGL extensions: 

我的目標是運行OpenGL 3.3(以及GLSL 3.3)。如果我很容易遇到開發問題,我會迷失在硬件和驅動程序中,所以有人知道通過我的配置實現這一目標的方法嗎?

+0

安裝了許多不同的驅動程序,包後,我設法升級到'OpenGL版本字符串:3.0 Mesa 8.0.4和OpenGL着色語言版本字符串:1.30'。任何人都能成功至少OpenGL 3.3? – muxisar

回答

1

不幸的是在這一刻看起來這是不可能的,因爲英特爾提供的開源驅動是唯一可用的。有一個比你更新的版本(Mesa 9.0.1),但它仍然支持OpenGL 3.0和GLSL 1.30,你可以在Intel Open Source website的發行說明中閱讀。

的問題是,開源驅動被卡住梅薩,在這個時刻只支持GLSL 1.40,你可以在這裏看到:http://www.mesa3d.org/shading.html#support

我怕,如果你需要使用一個OpenGL 3.3環境,你需要獲得一個帶有二進制驅動程序的專用GPU(nvidia或ati卡)。

30

好消息!!!

梅薩10已經結束,意味着支持Opengl 3.3GLSL 3.3

這是在我的第4代Core i5移動處理器上使用HD 4400圖形芯片組進行測試的。

現代OpenGL開發現在可以在Linux集成英特爾芯片組!這是一個巨大的進步。 Note that ubuntu 15.04 ship with Mesa 10.5

這裏是我使用GLSL 3.3着色器:)

渲染三角形

glsl 3.3 shader

確定,所以爲了得到實驗的驅動,使這項工作在Ubuntu 13.10 你要需要做幾件事情:

# Note this will take awhile! 
1.) Add the PPA Repository 
    $ sudo add-apt-repository ppa:oibaf/graphics-drivers 
2.) Update sources 
    $ sudo apt-get update 
3.) Dist-upgrade (rebuilds many packages) 
    $ sudo apt-get dist-upgrade 
4.) Reboot! 

In your code make sure you request a Opengl 3.3 context! 

運行此命令glxinfo | grep OpenGL 你應該得到的東西像...

OpenGL vendor string: Intel Open Source Technology Center 
OpenGL renderer string: Mesa DRI Intel(R) Haswell Mobile 
OpenGL core profile version string: 3.3 (Core Profile) Mesa 10.1.0-devel (git-f9cfe5c  saucy-oibaf-ppa) 
OpenGL core profile shading language version string: 3.30 
OpenGL core profile context flags: (none) 
OpenGL core profile profile mask: core profile 

來源的文章

http://www.phoronix.com/scan.php?page=news_item&px=MTQ5OTk

https://launchpad.net/~oibaf/+archive/graphics-drivers/

+1

感謝您的文章,這真的很有幫助!奇怪的是,儘管'glxinfo'確實爲我報道了Mesa 10.1,但仍然只有OpenGL 3.0可用。你有什麼想法,爲什麼這可能是?我在這裏發佈的問題:http://stackoverflow.com/questions/21565680/how-to-enable-opengl-3-3-using-mesa-10-1-on-ubuntu謝謝! –

+0

http://stackoverflow.com/questions/25936165/ubuntu-opengl-3-inside-vmware - 你能幫我解決這個問題嗎?我必須強制使用軟件渲染器,因爲我的Ubuntu在VmWare中運行 –

+0

這似乎還沒有在14.04(現在是6月份)工作。 glxinfo報告的核心配置文件,但隨後相同的字符串: OpenGL的版本字符串:3.0梅薩10.7.0-devel的(GIT-f97166e 2015年6月1日的信賴,oibaf-PPA) OpenGL着色語言版本字符串1.30 當我創建與谷歌請求版本3.3的上下文我仍然得到3.0版本的上下文。 – cheshirekow

5

所以我見過很多圍繞這一主題的,我想在這裏將是一個迴應的好地方。我與英特爾ivybridge運行Ubuntu 15.04。使用「英特爾圖形安裝程序的Linux」申請後,glxinfo給出關於OpenGL的以下信息:

OpenGL core profile version string: 3.3 (Core Profile) Mesa 10.6.0 
OpenGL core profile shading language version string: 3.30 
OpenGL version string: 3.0 Mesa 10.6.0 
OpenGL shading language version string: 1.30 
從這裏就可以看出, 核心輪廓和GLSL版本是3.3,但

現在兼容OpenGL是唯一3.0因此,如果你想讓你的代碼運行在3.3你需要同時指定一個opengl核心配置文件和一個glsl核心配置文件

  • 的GLSL的#Version應指定所需的核心配置:

#version 330 core

  • 指定你想要的OpenGL 3.3應按以下步驟,如果你使用的freeglut和GLEW工作:

glutInitContextVersion (3, 3);

  • 最後定glewExperimental真glewInit()之前:

glewExperimental = GL_TRUE;

編輯:

東西我忘了提及這似乎是相關的最*使用freeglut的nix用戶是關於深度測試的,我應該從一個特定的角度描述網格的內容(以及不應該):

要使用Linux上的深度測試,你不僅需要通過

(glEnable(GL_DEPTH_TEST);

,使深度測試,但你還需要創建過剩背景下的深度緩衝(窗口似乎通常有一個默認情況下深度緩衝區,Linux不)。

使用freeglut意味着您需要在glutInitDisplayMode中包含GLUT_DEPTH,以便它創建具有深度緩衝區的上下文,例如,

glutInitDisplayMode(GLUT_DOUBLE|GLUT_RGB|GLUT_DEPTH);

附:我只使用freeglut,因爲我帶的大學模塊給了我們演示代碼來運行它。從那以後,我肯定會推薦切換到glfw。我的答案的第一部分仍然非常適用,只是使用glfw方法。