2014-04-05 2 views
6

Ich habe den folgenden Code:GLFW schlägt fehl, Fenster zu öffnen 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; 
} 

Es funktioniert gut auf meinem Desktop sowohl auf Ubuntu und Windows, aber es funktioniert nicht auf meinem Laptop mit OSX. Ich dachte, es wäre ein Problem mit dem Laptop, der diese Version von OpenGL nicht unterstützt, aber es unterstützt bis zu 4.1 mit der Grafikkarte.

Ich habe gedacht, dass es die integrierte Intel-GPU anstelle der nVidia verwenden kann, aber wie ich aus dem, was ich gesehen habe, verstehen, wird GLFW die richtige GPU zwingen, das Rendern zu tun.

Wenn ich den Kontext auf 2.1 ändere, scheint alles zu funktionieren, aber dann sind die Shader nicht kompatibel.

Irgendwelche Ideen?

UPDATE: Wenn alle Aufrufe glfwWindowHint() entfernt werden, wird das Fenster erstellt, aber die Shader sind inkompatibel. Ich nehme an, wenn diese entfernt werden, wählt GLFW automatisch einen Kontext, der inkompatibel mit Shadern mit version 330 core ist.

+0

Erhalten Sie Fehlermeldungen? – Gurgadurgen

+0

Die einzige Fehlermeldung, die ich bekomme, ist, wenn überprüft das Fenster auf Null und druckt eine Nachricht und kehrt zurück. Wenn ich den Kontext auf 2.1 umstelle oder den Kontext entferne, erhalte ich eine Inkompatibilitätsfehlermeldung, wenn ich versuche, die Shader zu laden. – danielunderwood

+0

Diese Antwort könnte helfen: http://stackoverflow.com/questions/22213874/creating-opengl-3-3-context-with-glfw-in-mac-os-x-10-9 – Gurgadurgen

Antwort

11

Das Problem bestand darin, ein Flag für die Vorwärtskompatibilität in GLFW zu setzen. This answer auf die Antwort führte den folgenden Aufruf machen:

glfwWindowHint(GLFW_OPENGL_FORWARD_COMPAT, GL_TRUE);

Dies spiegelt sich auch in der GLFW FAQ gezeigt.