我正在尝试在OSX Mavericks上学习OpenGL,它支持截至今天的OpenGL 4.1。
我保持基本和使用gcc(g ++)进行编译,但是当通过Freeglut OSX加载开放GL上下文时加载传统的OpenGL配置文件。
我试过这个:OpenGL 3.3 on OSX with FreeGLUT但没有运气,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;
}
}
好的......
在Windows PC上重新编译,没有问题,可能是OSX或OSX本身或组合上的FreeGLUT问题。
至少现在我有代码我可以用...测试OSX。
答案 0 :(得分:3)
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 );