int main(int argc,char ** argv){
glutInit(&argc, argv);
glewInit();
if (GL_TRUE != glewGetExtension((const char*) "GL_ARB_fragment_shader"))
printf("GL_ARB_fragment_shader extension is not available!\n");
if (GL_TRUE != glewGetExtension((const char*) "GL_ARB_vertex_shader"))
printf("GL_ARB_vertex_shader extension is not available!\n");
if (GL_TRUE != glewGetExtension((const char*) "GL_ARB_shader_objects"))
printf("GL_ARB_shader_objects extension is not available!\n");
glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGBA | GLUT_DEPTH); //set up the double buffering
glutInitWindowSize(500, 500);
glutInitWindowPosition(100, 100);
glutCreateWindow("A basic OpenGL Window");
glutDisplayFunc(display);
glutIdleFunc(display);
glutReshapeFunc(reshape);
init();
glutMainLoop();
return 0;
当我运行该程序时,我得到以下内容 GL_ARB_fragment_shader扩展程序不可用! GL_ARB_vertex_shader扩展程序不可用! GL_ARB_shader_objects扩展名不可用!
有谁能告诉我为什么这些扩展无法使用? 我已将glew32.lib复制到C:\ Program Files \ Microsoft SDKs \ Windows \ v7.0A \ Lib 和glew32.dll到我的项目的Debug文件夹。
答案 0 :(得分:2)
您需要一个有效的GL上下文来查询扩展(由代码中的glutCreateWindow
创建)。在您创建(并使当前,但GLUT为您完成此操作)上下文后,移动glewInit()
和所有其他闪烁填充程序。您还应检查glewInit()
的错误以发现此类问题。