私はGLEWとfreeglutを使用しています。何らかの理由で、glewInit()を呼び出した後、glewExperimental = GL_FALSEの場合でも、glGetError()はエラーコード1280を返します。
シェーダーをコンパイルできません。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
これが発生する理由が記載されており、「glewのバージョンによっては、glewExperimentalを指定した後でもGL_INVALID_ENUMが表示される場合があります」と記載されています。
他に問題がない限り、無視しても安全かもしれません。