在尝试使用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();
答案 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”作为输出。