我有以下代码:
glfwWindowHint(GLFW_SAMPLES, 4); // 4x antialiasing
glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3);
glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 3);
glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);
// Open window and create OpenGL context
GLFWwindow * window;
window = glfwCreateWindow(1024, 768, "OpenGL Testing", NULL, NULL);
if(window == NULL)
{
fprintf(stderr, "Failed to open GLFW Window.\n");
glfwTerminate();
return -1;
}
它在我的 Ubuntu 和 Windows 桌面上都运行良好,但在我运行 OSX 的笔记本电脑上却失败了。我认为这是笔记本电脑不支持此版本 OpenGL 的问题,但它支持高达 4.1 的视频卡。
我认为它可能使用集成的英特尔 GPU 而不是 nVidia GPU,但据我所知,GLFW 将强制正确的 GPU 进行渲染。
如果我将上下文更改为 2.1,似乎一切正常,但着色器不兼容。
有什么想法吗?
更新:如果删除了所有 glfwWindowHint()
调用,则会创建窗口,但着色器不兼容。我假设如果这些被删除,GLFW 会自动选择一个上下文,它恰好与具有 330 版核心
的着色器不兼容。
最佳答案
问题归结为在 GLFW 中设置向前兼容标志。 This answer导致做出以下调用的答案:
glfwWindowHint(GLFW_OPENGL_FORWARD_COMPAT, GL_TRUE);
这也显示在 GLFW FAQ 中.
关于c++ - GLFW 无法在 OSX 中打开窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22887922/