Macos 在OSX上加载OpenGL 4.1上下文

Macos 在OSX上加载OpenGL 4.1上下文,macos,opengl,glut,freeglut,opengl-4,Macos,Opengl,Glut,Freeglut,Opengl 4,我试图在OSX小牛上学习OpenGL,从今天起,OSX小牛支持OpenGL 4.1 我保持它的基本功能,并使用gcc(g++)进行编译,但是当通过Freeglut加载OpenGL上下文时,OSX会加载遗留的OpenGL概要文件 我尝试过这样做:但是运气不好,glGetString调用返回以下值: NVIDIA GeForce GT 750M OpenGL Engine 2.1 NVIDIA-8.24.9 310.40.25f01 有人有什么想法吗 我通过以下上下文调用调用FreeGlut: g

我试图在OSX小牛上学习OpenGL,从今天起,OSX小牛支持OpenGL 4.1

我保持它的基本功能,并使用gcc(g++)进行编译,但是当通过Freeglut加载OpenGL上下文时,OSX会加载遗留的OpenGL概要文件

我尝试过这样做:但是运气不好,glGetString调用返回以下值:

NVIDIA GeForce GT 750M OpenGL Engine
2.1 NVIDIA-8.24.9 310.40.25f01
有人有什么想法吗

我通过以下上下文调用调用FreeGlut:

glutInitContextVersion(3,2);
glutInitContextProfile(GLUT_CORE_PROFILE);
编辑: 只是在Windows而不是OSX中尝试了相同的应用程序,但出现以下错误:

2.1请求了上下文,但wglCreateContextAttribsARB不可用。退回到遗留上下文创建

这是我的应用程序入口点

    int main (int argc, char * argv[])
{
try{
    glutInit(&argc, argv);


    glutInitDisplayMode(GLUT_RGBA);

    glutInitWindowSize(512,512);

    glutInitContextVersion(4,2);

    glutInitContextFlags(GLUT_FORWARD_COMPATIBLE);
    glutInitContextProfile(GLUT_CORE_PROFILE);

    cout << "Called GLUT with 'GLUT_FORWARD_COMPATIBLE' \n";
    //cout << VAO_IDs::NumVAOs;

    glutCreateWindow("Triangles!");

    cout << "Calling GLEW. " << endl;
    glewExperimental = GL_TRUE;
    if(glewInit())
    {
        cerr << "unable to initialise GLEW.. Exiting " << endl;
    }
    cout << "calling init " << endl;
    init();
    cout << "Setting display function " << endl;
    glutDisplayFunc(display);
    cout << "Entering loop " << endl;
    glutMainLoop();
    }
    catch (exception)
    {
        cerr << "ERROR! " <<endl;
    }

    }
intmain(intargc,char*argv[])
{
试一试{
glutInit(&argc,argv);
glutInitDisplayMode(GLUT_RGBA);
glutInitWindowSize(512512);
glutInitContextVersion(4,2);
glutInitContextFlags(GLUT_向前_兼容);
glutInitContextProfile(GLUT_核心_配置文件);

cout
OSX Mavericks
不支持
OpenGL 4.2
。因此,不可能创建4.2上下文。最后支持的版本是
4.1
+一些在
4.2
中制作成核心的扩展

如果您想今天发货,唯一的选择是使用带有扩展的
opengl4.1

以下是GLFW3的代码:

glfwWindowHint( GLFW_CONTEXT_VERSION_MAJOR, 4 );
glfwWindowHint( GLFW_CONTEXT_VERSION_MINOR, 1 );
glfwWindowHint( GLFW_OPENGL_FORWARD_COMPAT, GL_TRUE );
glfwWindowHint( GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE );

您必须在OSX上创建与forwad兼容的上下文,我该怎么做?
glutInitContextFlags(GLUT\U FORWARD\U兼容)
可能会做一些棘手的事情,我会尝试一下。只是把它放进去,不幸的是没有用。你知道在哪里可以得到glutInitContextProfile的选项列表吗?那会很有用。嗨,即使在请求4.1上下文时,我也会遇到GLEW或Gl3w无法检索函数指针的问题。@VariableDeclared:我必须exp对GLEW有经验,但GLFW3运行平稳。我在答案中添加了一些代码。