c++ - GLFW 无法在 OSX 中打开窗口

标签 c++ opengl glfw

我有以下代码:

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/

相关文章:

python - OpenGL正确的矩阵变换顺序以在定点旋转对象

c++ - 带映射迭代器的 For 循环退出条件

c++ - 制作 : nothing can be done for 'all' error

java - 渲染非立方体沙盒游戏的最佳方式?

c++ - 选择从 Windows 将文件拖放到 GLFW 应用程序中

c++ - 奇怪的 OpenGL 纹理显示

c++ - GLFW GLAD 纹理未绘制,黑色正方形

c++ - OpenCV,捕获的视频比原始相机视频运行得更快!

c++ - 在差异区域周围绘制矩形

c++ - 为什么这个三角形条只画了屏幕的三分之一?