Шейдеры GLEW не поддерживаются

Это странно. Я хотел реализовать шейдеры в моей программе gl. Но GLEW сообщает мне, что шейдеры не поддерживаются в моей системе:

//glut init and glew init ...

if (GLEW_ARB_vertex_shader && GLEW_ARB_fragment_shader)
    printf("Ready for GLSL\n");
else
{
    printf("Not totally ready :( \n");
    printf( "VENDOR = %s\n", glGetString( GL_VENDOR ) ) ;
    printf( "RENDERER = %s\n", glGetString( GL_RENDERER ) ) ;
    printf( "VERSION = %s\n", glGetString( GL_VERSION ) ) ;

    exit(1);
}

Также GLEW не может дать мне никакой информации о моей графической карте. Приведенный выше код производит следующее:

VENDOR = (null)
RENDERER = (null)
VERSION = (null)

Я использую ноутбук с Intel HD 3000 и выделенным Nvidia gtm 525, которые оба способны использовать шейдеры. Я включил все необходимые заголовки (gl, glut и glew) в правильном порядке (сначала glew) и связал все соответствующие библиотеки (в правильном порядке). (Это не первый раз, когда я использую OpenGL и GLSL).

Я также пробовал другие игры OpenGL из Центра программного обеспечения, и они работали. Так что драйвера должны работать нормально.

(Как вы, наверное, уже догадались) Я использую freeglut, GL extensions wrangler, Ubuntu 14.04, codeblocks и g++.

В чем может быть проблема? Где искать эту ошибку?

Заранее спасибо.


person Scindix    schedule 14.06.2014    source источник
comment
Вы не можете запрашивать эти строки, пока у вас не будет активного контекста GLX;)   -  person Andon M. Coleman    schedule 14.06.2014


Ответы (1)


Вам нужно создать контекст OpenGL и сделать его активным. glGetString возврат нулевого указателя означает, что у вас нет активного контекста OpenGL.

person datenwolf    schedule 14.06.2014
comment
А, спасибо. Теперь я получаю вывод информации о поставщике. Но главная проблема все равно остается. Все равно пишет, что шейдеры не поддерживаются. Также использование glCreateProgram() дает мне ошибку SIGSEV - person Scindix; 15.06.2014
comment
К сожалению, я также вызвал glewInit() перед созданием контекста. Теперь все работает нормально. Спасибо. - person Scindix; 15.06.2014