c++ - Xcode 上的 OpenGL 版本 - glfw 与 sfml

标签 c++ xcode opengl sfml glfw

我正在使用 glfwsfml 在我的 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。

关于c++ - Xcode 上的 OpenGL 版本 - glfw 与 sfml,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43302521/

相关文章:

xcode - 错误 : Can't run/Applications/Xcode. app/Contents/Developer/Platforms/MacOSX.platform/Developer/usr/bin/ibtool(没有这样的文件)

xcode - Xcode/Simulator 占用 15gb 空间是否正常?

OpenGL FBO 不发送深度缓冲区

opengl - 如何将 "add"深度信息发送到主帧缓冲区

c++ - 进行非常小的(或大的)指数计算

C++跨平台查找数据目录的解决方案

C++ 不使用 pow 或循环计算数字的幂

C++ 列表初始化允许多个用户定义的转换

ios - UIButton图像已按下和未按下

opengl - 片段着色器眼空间未缩放深度坐标