在OSX上加载OpenGL 4.1上下文



我正在OSX Mavericks上学习OpenGL,从今天起,它支持高达OpenGL 4.1。

我保持它的基本性并使用gcc(g++)进行编译,但当通过Freeglut OSX加载开放的GL上下文时,会加载传统的OpenGL配置文件。

我已经尝试过:使用FreeGLUT在OSX上运行OpenGL 3.3,但没有成功,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;
    }
    }

OK所以…

在Windows PC上重新编译,没有问题,可能是OSX上的FreeGLUT或OSX本身或两者的问题。

至少现在我有了可以测试OSX的代码。。。

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

如果您想今天发货,唯一的选择是使用带扩展的OpenGL 4.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 );

相关内容

  • 没有找到相关文章