2017-04-09 67 views
0

我在我的Mac同時使用glfwsfml並滿足對OpenGL版本的一些障礙學習opengl的OpenGL版本 - GLFW VS SFML

當我運行代碼:上sfml

Renderer: Intel(R) Iris(TM) Graphics 6100 
OpenGL version supported: 2.1 INTEL-10.22.25 
glsl: 1.20 

這是我在xcode項目設置,或者是默認框架設置

printf ("Renderer: %s\n", glGetString (GL_RENDERER)); 
printf ("OpenGL version supported: %s\n", glGetString (GL_VERSION)); 
printf("glsl: %s\n", glGetString(GL_SHADING_LANGUAGE_VERSION)); 

glfw

Renderer: Intel(R) Iris(TM) Graphics 6100 
OpenGL version supported: 4.1 INTEL-10.22.25 
glsl: 4.10 

?有沒有辦法可以改變sfmlOpenGL 4.1一起使用,這樣我也可以得到glsl 4.1?

glfw有這樣的設置:

glfwWindowHint (GLFW_CONTEXT_VERSION_MAJOR, 4); 
glfwWindowHint (GLFW_CONTEXT_VERSION_MINOR, 1); 

sfml有相似的地方?

回答

2

使用SFML,您可以使用sf::ContextSettings指定OpenGL版本。

sf::Window window(sf::VideoMode(800, 600), "OpenGL", sf::Style::Default, settings); 

底線是SFML需要向後兼容性方面:

sf::ContextSettings settings; 
settings.depthBits = 24; 
settings.stencilBits = 8; 
settings.majorVersion = 4; 
settings.minorVersion = 1; 
settings.attributeFlags = sf::ContextSettings::Default; 

然後你,你創建它傳遞給sf:Window。因爲內部的SFML依賴於一些傳統的OpenGL功能。

所以,如果你沒有使用SFML SFML特定的東西。然後我建議繼續使用GLFW。

+0

通過將'settings'放入'window'中可以發揮魔力。我使用'sfml'作爲界面圖形,至少在這一刻我發現很難在'glfw'中處理這個問題。 – sooon

+0

您可以將SFML與任何OpenGL上下文版本一起使用,但SFML圖形模塊的2.x版本僅使用固定功能管道(將隨着即將發佈的3.0版發生變化)。所以只要你做自己的繪畫,你不應該有問題。 – Mario