FreeGlut OpenGL上下文版

时间:2014-12-20 05:40:49

标签: c++ opengl graphics glew freeglut

在尝试使用Freeglut创建OpenGL 4.1上下文时,我发现了一些不一致的地方:

我正在使用带有最新驱动程序的AMD显卡。在AMD网站上它说

  

OpenGL 4.2支持

当我正常运行我的应用程序(控制台窗口和glut-gui)时(参见下面的源代码),我在控制台中得到以下输出:freeglut (C:\Users\(Username)\Documents\Visual Studio 2012\Projects\Tests\OGLTest\Debug\OGLTest.exe): OpenGL >2.1 context requested but wglCreateContextAttribsARB is not available! Falling back to legacy context creation
我假设使用了我的内部图形芯片,并将我的电脑设置为使用amd卡进行我的程序。之后,上面的错误消失了,但是由glew创建的另一个控制台输出仍然显示Error: Missing GL version 那么,为什么这样,我能确定选择加入4.1环境有效吗?

来源:

glewExperimental = GL_TRUE;
GLenum err = glewInit();
if (GLEW_OK != err) {
    std::cerr<<"Error: "<<glewGetErrorString(err)<<std::endl;
} else {
    if (GLEW_VERSION_4_1)
    {
        std::cout<<"Driver supports OpenGL 4.1\nDetails:"<<std::endl;
    }
}
glutInit(&__argc,__argv);
glutInitDisplayMode(GLUT_SINGLE);
glutInitContextVersion(4,1);
glutInitWindowSize(500,500);
glutInitWindowPosition(100, 100);
glutCreateWindow("OpenGL Test");
glutDisplayFunc(display);
glutMainLoop();

1 个答案:

答案 0 :(得分:1)

我自己修理过:只有我的代码顺序错了。在调用glutCreateWindow("Window Title")后,实际选择加入OpenGL 4(或在此特定情况下为4.1),令人惊讶的是在glutInitContextVersion(major, minor)之后。但是输入代码:

glewExperimental = GL_TRUE;
GLenum err = glewInit();
if (GLEW_OK != err) {
    std::cerr<<"Error: "<<glewGetErrorString(err)<<std::endl;
} else {
    if (GLEW_VERSION_4_1)
    {
        std::cout<<"Driver supports OpenGL 4.1\nDetails:"<<std::endl;
    }
}
glutCreateWindow("OpenGL Test");后面的

使整个过程工作并创建“Driver支持OpenGL 4.1”作为输出。