我有以下代码:
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上的 table 面上都可以正常运行,但在运行OSX的笔记本电脑上却无法运行。我认为这是笔记本电脑不支持此版本OpenGL的问题,但它最多支持视频卡4.1。
我以为它可能使用的是集成的英特尔GPU,而不是nVidia,但是据我了解,GLFW将强制使用正确的GPU进行渲染。
如果将上下文更改为2.1,则似乎一切正常,但是着色器不兼容。
有任何想法吗?
更新:如果删除了所有
glfwWindowHint()
调用,则会创建窗口,但着色器不兼容。我假设如果删除了这些,GLFW会自动选择一个上下文,该上下文恰巧与带有version 330 core
的着色器不兼容。 最佳答案
问题归结为在GLFW中设置了前向兼容性标志。 This answer导致进行以下调用的答案:glfwWindowHint(GLFW_OPENGL_FORWARD_COMPAT, GL_TRUE);
这也显示在GLFW FAQ中。