2017-04-09 74 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