2017-01-26 1 views
1

J'ai essayé de construire un programme à l'aide glfw + glew sur Fedora 25. partie est:opengl sur Linux: impossible d'utiliser une version correcte

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; 
    } 
    ..... 
} 

Si je glfwWindowHint(GLFW_OPENGL_PROFILE,GLFW_OPENGL_CORE_PROFILE); pour obtenir la version 3.3, il sera incapable de créer une fenêtre si.

Mon matériel prend en charge OpenGL 4.1.

màj: a obtenu la réponse ....

+0

Pour Mesa, vous devriez demander un profil de base, sinon vous obtiendrez OpenGL 3.0. C'est similaire au comportement sur macOS. Ne vous embêtez pas avec le bit de compatibilité directe, il est obsolète et ne fait vraiment rien. Je courrais 'glxinfo | grep version' pour s'assurer qu'un bon programme connu peut créer un contexte de la version désirée. Regardez la chaîne de la version du profil de base. –

Répondre

1

Juste décommenter glfwWindowHint(GLFW_CONTEXT_VERSION_*,*) là.
Lors de l'utilisation du profil de base avec glfwWindowHint(GLFW_OPENGL_PROFILE,GLFW_OPENGL_CORE_PROFILE),
la version explicite doit être demandée.

Merci au commentaire de Dietrich Epp. Par ailleurs, quelqu'un peut-il me dire comment obtenir de telles informations?