加载gl扩展时出错

时间:2013-12-01 19:32:10

标签: opengl

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文件夹。

1 个答案:

答案 0 :(得分:2)

您需要一个有效的GL上下文来查询扩展(由代码中的glutCreateWindow创建)。在您创建(并使当前,但GLUT为您完成此操作)上下文后,移动glewInit()和所有其他闪烁填充程序。您还应检查glewInit()的错误以发现此类问题。