Mac OSX El Capitan上的OpenGL 3.3和LWJGL

时间:2016-07-02 22:16:18

标签: java opengl lwjgl glfw

我目前正试图在2014年中期的Macbook Pro上用LWJGL 3创建一个OpenGL 3.3上下文。我初始化窗口的源代码如下:

if (!glfwInit()) {
    Logger.addError("GLFW", "init failed");
}

glfwDefaultWindowHints();

glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3);           
glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 3);
glfwWindowHint(GLFW_OPENGL_CORE_PROFILE, GL_TRUE);
glfwWindowHint(GLFW_OPENGL_FORWARD_COMPAT, GL_TRUE);

// glfwWindowHint(GLFW_SAMPLES, 2);

ID = glfwCreateWindow(width, height, title, 0, 0);
if (ID == 0) {
    Logger.addError("GLFW", "window creation failed");
}

可悲的是,GLFW无法为任何高于2.1的版本创建窗口,当省略窗口提示时,版本glGetString(GL_VERSION)会返回...
我仔细阅读了所有"复制品#34;问题,但正如您所见,我已经请求核心配置文件和向前兼容性。此外,我安装了XCode并拥有最新版本的操作系统。你们有任何其他建议或者我理解任何可怕的错误吗? 提前谢谢......

请注意,LWJGL 3中没有"GLFW_OPENGL_PROFILE"标志,因此我无法从官方GLFW入门页1:1复制代码。将"GLFW_OPENGL_CORE_PROFILE"标志设置为true可以在Windows上工作,因此这不能解决错误......

1 个答案:

答案 0 :(得分:4)

您设置核心配置文件窗口提示的方式不正确。而是使用:

glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);

来自GLFW documentation

  

GLFW_OPENGL_PROFILE指定要为其创建上下文的OpenGL配置文件。可能的值是GLFW_OPENGL_CORE_PROFILEGLFW_OPENGL_COMPAT_PROFILE之一,或GLFW_OPENGL_ANY_PROFILE,以便不请求特定的配置文件。如果请求的OpenGL版本低于3.2,则必须使用GLFW_OPENGL_ANY_PROFILE。如果请求OpenGL ES,则忽略此提示。