2014-04-05 11 views
6

Ho il seguente codice:GLFW non riesce per aprire la finestra in OSX

glfwWindowHint(GLFW_SAMPLES, 4); // 4x antialiasing 
glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3); 
glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 3); 
glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE); 

// Open window and create OpenGL context 
GLFWwindow * window; 
window = glfwCreateWindow(1024, 768, "OpenGL Testing", NULL, NULL); 
if(window == NULL) 
{ 
    fprintf(stderr, "Failed to open GLFW Window.\n"); 
    glfwTerminate(); 
    return -1; 
} 

Funziona benissimo sul mio desktop sia su Ubuntu e Windows, ma non riesce sul mio portatile in esecuzione OSX. Ho pensato che fosse un problema con il laptop che non supportava questa versione di OpenGL, ma supporta fino a 4.1 con la scheda video.

Ho pensato che potrebbe utilizzare la GPU Intel intel anziché quella nVidia, ma come ho capito da quello che ho visto, GLFW costringerà la GPU corretta a eseguire il rendering.

Se cambio il contesto in 2.1, tutto sembra funzionare, ma gli shader non sono compatibili.

Qualche idea?

UPDATE: Se tutte le chiamate glfwWindowHint() vengono rimosse, viene creata la finestra, ma gli shader non sono compatibili. Presumo che se questi vengono rimossi, GLFW sceglie automaticamente un contesto, che risulta essere incompatibile con gli shader con version 330 core.

+0

Vengono visualizzati messaggi di errore? – Gurgadurgen

+0

L'unico messaggio di errore che sto ricevendo è quando controlla che la finestra sia nullo e stampa un messaggio e restituisce. Se cambio il contesto in 2.1 o rimuovi le impostazioni del contesto, ricevo un messaggio di errore di incompatibilità quando provo a caricare gli shader. – danielunderwood

+0

Questa risposta può aiutare: http://stackoverflow.com/questions/22213874/creating-opengl-3-3-context-with-glfw-in-mac-os-x-10-9 – Gurgadurgen

risposta

11

Il problema è venuto giù per impostare un flag di compatibilità in avanti in GLFW. This answer ha portato alla risposta di rendere il seguente invito:

glfwWindowHint(GLFW_OPENGL_FORWARD_COMPAT, GL_TRUE);

Ciò è dimostrato anche nella GLFW FAQ.

Problemi correlati