Używam GLEW i freeglut. Z jakiegoś powodu, po wywołaniu glewInit(), glGetError() zwraca kod błędu 1280, nawet z glewExperimental = GL_FALSE.OpenGL: glGetError() zwraca nieprawidłowe wyliczenie po wywołaniu glewInit()
Nie mogę skompilować modułów cieniujących, glGetProgramInfoLog() zwraca "Vertex shader (s) nie zostały pomyślnie skompilowane przed wywołaniem funkcji glLinkProgram(). Połączenie nie powiodło się." Udało mi się wcześniej skompilować shadery.
Ponowna instalacja sterowników nie pomogła.
Oto mój kod:
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);
}
Co robię źle?
Czy robisz cokolwiek z GlewInitResult? Może powinieneś wywoływać glewGetErrorString zamiast glGetError (dla wykrywania problemów z glewami) – Tim
Nic nie robię z GlewInitResult. glewGetErrorString zwraca "Brak błędu". – Martin