所以我見過很多圍繞這一主題的,我想在這裏將是一個迴應的好地方。我與英特爾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方法。
安裝了許多不同的驅動程序,包後,我設法升級到'OpenGL版本字符串:3.0 Mesa 8.0.4和OpenGL着色語言版本字符串:1.30'。任何人都能成功至少OpenGL 3.3? – muxisar