Xcode 上的 OpenGL 版本 - glfw 与 sfml
OpenGL version on Xcode - glfw vs sfml
我正在使用 glfw
和 sfml
在 mac 上学习 opengl
,但在 OpenGL
版本上遇到了一些障碍。
当我运行代码:
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
于 sfml
Renderer: Intel(R) Iris(TM) Graphics 6100
OpenGL version supported: 2.1 INTEL-10.22.25
glsl: 1.20
这是我在 xcode
项目上的设置还是默认的框架设置?有没有办法可以更改 sfml
以使用 OpenGL
4.1,这样我也可以获得 glsl
4.1?
glfw
有这样的设置:
glfwWindowHint (GLFW_CONTEXT_VERSION_MAJOR, 4);
glfwWindowHint (GLFW_CONTEXT_VERSION_MINOR, 1);
sfml
有类似的东西吗?
对于 SFML,您可以使用 sf::ContextSettings
指定 OpenGL 版本。
sf::ContextSettings settings;
settings.depthBits = 24;
settings.stencilBits = 8;
settings.majorVersion = 4;
settings.minorVersion = 1;
settings.attributeFlags = sf::ContextSettings::Default;
然后在创建时将其传递给 sf:Window
:
sf::Window window(sf::VideoMode(800, 600), "OpenGL", sf::Style::Default, settings);
底线是 SFML 需要向后兼容上下文。因为 SFML 在内部依赖于一些遗留的 OpenGL 功能。
因此,如果您没有将 SFML 用于任何特定于 SFML 的内容。那我推荐继续使用GLFW
我正在使用 glfw
和 sfml
在 mac 上学习 opengl
,但在 OpenGL
版本上遇到了一些障碍。
当我运行代码:
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
于 sfml
Renderer: Intel(R) Iris(TM) Graphics 6100
OpenGL version supported: 2.1 INTEL-10.22.25
glsl: 1.20
这是我在 xcode
项目上的设置还是默认的框架设置?有没有办法可以更改 sfml
以使用 OpenGL
4.1,这样我也可以获得 glsl
4.1?
glfw
有这样的设置:
glfwWindowHint (GLFW_CONTEXT_VERSION_MAJOR, 4);
glfwWindowHint (GLFW_CONTEXT_VERSION_MINOR, 1);
sfml
有类似的东西吗?
对于 SFML,您可以使用 sf::ContextSettings
指定 OpenGL 版本。
sf::ContextSettings settings;
settings.depthBits = 24;
settings.stencilBits = 8;
settings.majorVersion = 4;
settings.minorVersion = 1;
settings.attributeFlags = sf::ContextSettings::Default;
然后在创建时将其传递给 sf:Window
:
sf::Window window(sf::VideoMode(800, 600), "OpenGL", sf::Style::Default, settings);
底线是 SFML 需要向后兼容上下文。因为 SFML 在内部依赖于一些遗留的 OpenGL 功能。
因此,如果您没有将 SFML 用于任何特定于 SFML 的内容。那我推荐继续使用GLFW