opengl в Linux: невозможно использовать правильную версию

Я попытался собрать программу с помощью glfw + glew на Fedora 25. Часть ее:

int main()
{
    glfwInit();
    glfwWindowHint(GLFW_OPENGL_PROFILE,GLFW_OPENGL_ANY_PROFILE);
    //glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR,3);
    //glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR,3);
    mainWindow = glfwCreateWindow(1024,768,"NONE",nullptr,nullptr);
    if(mainWindow == nullptr)
    {
        std::cout<<"Creating window ERROR.\n"<<std::endl;
        glfwTerminate();
        return 1;
    }
    .....
}

Если я использую glfwWindowHint(GLFW_OPENGL_PROFILE,GLFW_OPENGL_CORE_PROFILE); для получения версии 3.3, он не сможет создать окно.

Мое оборудование поддерживает openGL 4.1.

upd: получил ответ....


person Apliex-Ddr    schedule 26.01.2017    source источник
comment
Для Mesa вы должны запросить профиль ядра, иначе вы получите OpenGL 3.0. Это похоже на поведение в macOS. Не беспокойтесь о бите прямой совместимости, он устарел и на самом деле ничего не делает. Я бы запустил glxinfo | grep version, чтобы убедиться, что заведомо исправная программа может создать контекст нужной версии. Посмотрите на строку версии основного профиля.   -  person Dietrich Epp    schedule 26.01.2017


Ответы (1)


Просто раскомментируйте там glfwWindowHint(GLFW_CONTEXT_VERSION_*,*).
При использовании основного профиля с glfwWindowHint(GLFW_OPENGL_PROFILE,GLFW_OPENGL_CORE_PROFILE)
необходимо запрашивать явную версию.

Благодаря комментарию Дитриха Эппа.

Кстати, кто-нибудь может подсказать, как получить такую ​​информацию?

person Apliex-Ddr    schedule 26.01.2017