Uso GLEW e freeglut. Per qualche ragione, dopo una chiamata a glewInit(), glGetError() restituisce il codice di errore 1280, anche con glewExperimental = GL_FALSE.OpenGL: glGetError() restituisce enum non valido dopo la chiamata a glewInit()
Non riesco a compilare gli shader, glGetProgramInfoLog() restituisce "Vertex shader (s) non è stato compilato correttamente prima della chiamata a glLinkProgram(). Link failed." Sono stato in grado di compilare gli shader prima.
La reinstallazione dei driver non è stata di aiuto.
Ecco il mio codice:
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);
}
Quello che sto facendo male?
Stai facendo qualcosa con GlewInitResult? Forse dovresti chiamare glewGetErrorString invece di glGetError (per rilevare problemi glew) – Tim
Non faccio nulla con GlewInitResult. glewGetErrorString restituisce "Nessun errore". – Martin