首页 文章

freeglut window init glew 3.0上下文创建不起作用[关闭]

提问于
浏览
-1

我正在尝试使用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 回答

  • 2

    你遇到问题:

    glutInitDisplayMode(GLUT_RGBA || GLUT_DOUBLE || GLUT_DEPTH);

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

相关问题