OpenGL:调用 glewInit() 后,glGetError() 返回无效枚举

2024-01-26

我使用 GLEW 和 freeglut。由于某种原因,调用 glewInit() 后,glGetError() 返回错误代码 1280,即使 glewExperimental = GL_FALSE 也是如此。

我无法编译着色器,glGetProgramInfoLog() 返回“在调用 glLinkProgram() 之前未成功编译顶点着色器。链接失败。”我之前能够编译着色器。

重新安装驱动程序没有帮助。

这是我的代码:

int main(int argc, char* argv[])
{
    GLenum GlewInitResult, res;

    InitWindow(argc, argv);

    res = glGetError(); // res = 0

    glewExperimental = GL_TRUE;
    GlewInitResult = glewInit();    

    fprintf(stdout, "ERROR: %s\n", glewGetErrorString(GlewInitResult)); // "No error"
    res = glGetError(); // res = 1280

    glutMainLoop();

    exit(EXIT_SUCCESS);
}

void InitWindow(int argc, char* argv[])
{
    glutInit(&argc, argv);

    glutInitContextVersion(4, 0);
    glutInitContextFlags(GLUT_FORWARD_COMPATIBLE);
    glutInitContextProfile(GLUT_CORE_PROFILE);

    glutSetOption(GLUT_ACTION_ON_WINDOW_CLOSE,
    GLUT_ACTION_GLUTMAINLOOP_RETURNS);

    glutInitWindowPosition(0, 0);
    glutInitWindowSize(CurrentWidth, CurrentHeight);
    glutInitDisplayMode(GLUT_DEPTH | GLUT_DOUBLE | GLUT_RGBA);

    WindowHandle = glutCreateWindow(WINDOW_TITLE);

    GLenum errorCheckValue = glGetError();

    if (WindowHandle < 1)
    {
        fprintf(stderr, "ERROR: Could not create new rendering window.\n");
        exit(EXIT_FAILURE);
    }

    glutReshapeFunc(ResizeFunction);
    glutDisplayFunc(RenderFunction);
    glutIdleFunc(IdleFunction);
    glutTimerFunc(0, TimerFunction, 0);
    glutCloseFunc(Cleanup);
    glutKeyboardFunc(KeyboardFunction);
}

我做错了什么?


您看到此维基页面上的评论了吗?

http://www.opengl.org/wiki/OpenGL_Loading_Library http://www.opengl.org/wiki/OpenGL_Loading_Library

它提到了发生这种情况的原因,并表示“在某些情况下,根据您的 glew 版本指定 glewExperimental 后,您可能仍然会得到 GL_INVALID_ENUM”。

听起来只要您没有看到任何其他问题,就可以安全地忽略它。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

OpenGL:调用 glewInit() 后,glGetError() 返回无效枚举 的相关文章

随机推荐