Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Macos 在osx 10.9(Mavericks)上获得glsl 330上下文_Macos_Opengl_Glsl_Glew_Glfw - Fatal编程技术网

Macos 在osx 10.9(Mavericks)上获得glsl 330上下文

Macos 在osx 10.9(Mavericks)上获得glsl 330上下文,macos,opengl,glsl,glew,glfw,Macos,Opengl,Glsl,Glew,Glfw,我在这里看到了一个类似的问题:,但这个人似乎依赖于过剩,所以解决方案不适用 我在OSX 10.9(小牛),拥有NVidia GeForce 650,在C++中开发,使用GLEW和GLFW 我不是使用xcode,而是使用一个非常基本的makefile来保持简单 总之,我有以下5行代码: window = glfwCreateWindow(640,480,"hello world",NULL,NULL); glfwMakeContextCurrent(window); glewExperimenta

我在这里看到了一个类似的问题:,但这个人似乎依赖于过剩,所以解决方案不适用

我在OSX 10.9(小牛),拥有NVidia GeForce 650,在C++中开发,使用GLEWGLFW

我不是使用xcode,而是使用一个非常基本的makefile来保持简单

总之,我有以下5行代码:

window = glfwCreateWindow(640,480,"hello world",NULL,NULL);
glfwMakeContextCurrent(window);
glewExperimental = GL_TRUE;
glewInit();

printf("shader lang: %s\n",glGetString(GL_SHADING_LANGUAGE_VERSION));
然后打印出来

shader lang: 1.2
我假设设置glewExperimental应该正确处理获取核心上下文的问题?(/另一个家伙在另一个帖子里谈论的东西)

我还需要做什么才能启用最新的着色器版本?


Ps-我的完整代码在这里,包括makefile:,但我不确定它有多有用。

我以前从未使用过GLFW,但根据API文档和我对低级OS X GL上下文管理的丰富经验,以下代码应该可以解决您的问题:

glfwInit       ();

glfwWindowHint (GLFW_CONTEXT_VERSION_MAJOR, 3);
glfwWindowHint (GLFW_CONTEXT_VERSION_MINOR, 2);
glfwWindowHint (GLFW_OPENGL_PROFILE,        GLFW_OPENGL_CORE_PROFILE);

确保您在调用这些东西之前将它们调用到
glfwCreateWindow(…)

,以供其他试图使其工作的人使用-上述答案是正确的。您需要添加前面提到的所有GLFWWindow提示。但是,在调用glfwInit()之后和glfwCreateWindow()之前移动提示之前,这并没有立即对我起作用。谢谢大家的帮助。

您使用的glfw窗口提示是什么?您需要主版本3,次版本2,核心,在OS X上向前兼容。@AndonM.Coleman非常感谢!出于好奇-您在哪里/如何找到此信息?我到处寻找……GLFW没有记录我所知道的这一点。我知道这些信息是因为我在工作中使用了低级OpenGL上下文管理API(CGL/NSOpenGL)。苹果在不同的地方记录它,比如你还需要行
glfwWindowHint(GLFW_OPENGL_PROFILE,GLFW_OPENGL_CORE_PROFILE)。请看Oops。我一定没有注意到,因为间隔太大了。