2014-04-05 16 views
6

Tôi có đoạn mã sau:GLFW Thất bại để mở cửa sổ trong 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; 
} 

Nó hoạt động tốt trên máy tính để bàn của tôi trên cả Ubuntu và Windows, nhưng nó không thành công trên máy tính xách tay của tôi chạy OSX. Tôi nghĩ rằng đó là một vấn đề với máy tính xách tay không hỗ trợ phiên bản OpenGL này, nhưng nó hỗ trợ lên đến 4,1 với card màn hình. Tôi đã nghĩ rằng nó có thể được sử dụng GPU tích hợp intel thay vì nVidia một, nhưng như tôi hiểu từ những gì tôi đã thấy, GLFW sẽ buộc các GPU chính xác để làm rendering.

Nếu tôi thay đổi ngữ cảnh thành 2.1, mọi thứ dường như hoạt động, nhưng sau đó trình đổ bóng không tương thích.

Bất kỳ ý tưởng nào?

CẬP NHẬT: Nếu tất cả cuộc gọi glfwWindowHint() bị xóa, cửa sổ được tạo, nhưng trình đổ bóng không tương thích. Tôi giả sử nếu chúng được loại bỏ, GLFW sẽ tự động chọn một ngữ cảnh, điều này xảy ra không tương thích với các trình đổ bóng với version 330 core.

+0

Bạn có nhận được bất kỳ thông báo lỗi nào không? – Gurgadurgen

+0

Thông báo lỗi duy nhất mà tôi nhận được là khi kiểm tra cửa sổ là rỗng và in một tin nhắn và trả về. Nếu tôi chuyển ngữ cảnh thành 2.1 hoặc xóa bối cảnh thiết lập, tôi nhận được thông báo lỗi không tương thích khi cố gắng tải các trình đổ bóng. – danielunderwood

+0

Câu trả lời này có thể giúp: http://stackoverflow.com/questions/22213874/creating-opengl-3-3-context-with-glfw-in-mac-os-x-10-9 – Gurgadurgen

Trả lời

11

Sự cố đã xảy ra để đặt cờ tương thích về phía trước trong GLFW. This answer dẫn đến câu trả lời của thực hiện cuộc gọi sau đây:

glfwWindowHint(GLFW_OPENGL_FORWARD_COMPAT, GL_TRUE);

Điều này cũng được thể hiện trong GLFW FAQ.

Các vấn đề liên quan