freeglut窗口init + glew 3.0上下文创建不起作用

时间:2013-05-24 18:28:11

标签: c++ opengl glew freeglut openglcontext

我正在尝试使用freeglut创建一个窗口,然后使用glew创建一个3.2上下文,以便使用现代OpenGL函数(使用c ++和Windows pc)。我的问题是上下文创建(我尝试在freeglut init之前和之后都做了)似乎没有用,每次我尝试使用像glCreateShader这样的函数时我都会遇到访问冲突。

我使用的代码看起来像这样(它位于int main(int argc,char ** argv)方法的开头):

glutInit(&argc, argv);
glutInitWindowPosition(-1, -1);
glutInitWindowSize(640, 480);
glutInitDisplayMode(GLUT_RGBA || GLUT_DOUBLE || GLUT_DEPTH);

glutCreateWindow("some title");


glewExperimental = GL_TRUE;
GLenum err = glewInit();

 if (GLEW_OK != err)
 {
   fprintf(stderr, "Error: %s\n", glewGetErrorString(err));
 }
 fprintf(stdout, "Status: Using GLEW %s\n", glewGetString(GLEW_VERSION));
 if (GLEW_VERSION_3_2)
 {
    fprintf(stdout, "OpenGL 3.2 ready", glewGetString(GLEW_VERSION));
 }
...
vertexShader;
vertexShader = glCreateShader(GL_VERTEX_SHADER); //<-- Access Violation

此外,glew init代码从其网站以1:1复制。 我希望我的错误不是太明显,而且有人找时间来帮助我。

1 个答案:

答案 0 :(得分:2)

你遇到了问题:

glutInitDisplayMode(GLUT_RGBA || GLUT_DOUBLE || GLUT_DEPTH);

布尔值OR ||与位OR |不同。你想要 OR位掩码|,而不是布尔值或它们。除此之外,通过这种方式,您将获得OpenGL-3兼容性配置文件上下文,而不是核心上下文。