แก้ไข: แก้ไขแล้ว นี่เป็นปัญหาของ GLFW ซึ่งไม่เกี่ยวข้องกับ Mountain Lion หรือ OpenGL
ก่อนหน้านี้ฉันเคยใช้ Lion บน Macbook Pro ปี 2009 ของฉัน ใน XCode สิ่งต่อไปนี้ใช้งานได้โดยไม่มีปัญหา:
glfwOpenWindowHint(GLFW_OPENGL_VERSION_MAJOR, 3);
glfwOpenWindowHint(GLFW_OPENGL_VERSION_MINOR, 2);
glfwOpenWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);
glfwOpenWindowHint(GLFW_WINDOW_NO_RESIZE, GL_TRUE);
glfwOpenWindowHint(GLFW_OPENGL_FORWARD_COMPAT, GL_TRUE);
ALLEGE(glfwOpenWindow(SCREEN_SIZE.x, SCREEN_SIZE.y, 8, 8, 8, 8, 0, 0, GLFW_WINDOW) != GL_FALSE); // msg = "glfwOpenWindow failed. Can your hardware handle OpenGL 3.2?"
int major, minor, rev;
glfwGetGLVersion(&major, &minor, &rev);
fprintf(stderr, "OpenGL version recieved: %d.%d.%d\n", major, minor, rev);
แล้วพิมพ์ OpenGL version received: 3.2
หลังจากที่ฉันอัปเกรดเป็น Mountain Lion โค้ดด้านบนจะไม่ทำงาน (วางสายบน ALLEGE เนื่องจาก glfwOpenWindow คืนค่า false) การแยกคำแนะนำหน้าต่าง GLFW ทั้งหมดออกเช่น:
ALLEGE(glfwOpenWindow(SCREEN_SIZE.x, SCREEN_SIZE.y, 8, 8, 8, 8, 0, 0, GLFW_WINDOW) != GL_FALSE); // msg = "glfwOpenWindow failed. Can your hardware handle OpenGL 3.2?"
int major, minor, rev;
glfwGetGLVersion(&major, &minor, &rev);
fprintf(stderr, "OpenGL version recieved: %d.%d.%d\n", major, minor, rev);
อนุญาตให้ระบบปฏิบัติการเลือกเวอร์ชันของ OpenGL ที่จะใช้ โค้ดด้านบนคอมไพล์และรัน แต่พิมพ์ OpenGL version received: 2.1
ไปยังคอนโซล
ฉันพูดว่า "แล้วเหรอ?" และมองไปที่แอปข้อมูลระบบเพื่อดูข้อมูลเพิ่มเติม ส่วนกรอบงานแจ้งให้ฉันทราบว่ากรอบงาน OpenGl ที่ฉันมีคือ 1.8.6
ตอนนี้ฉันค่อนข้างสับสนและค่อนข้างไม่พอใจหากเฟรมเวิร์ก OpenGL ของฉันถูกลดระดับลงจริงๆ ฉันไม่มีทางที่จะอัพเกรดเฟรมเวิร์กของฉันด้วยตนเองได้ ใครก็ได้ช่วยฉันเข้าใจว่าเกิดอะไรขึ้น
แก้ไข1: การใช้ OpenGL Extensions Viewer.app แจ้งให้ฉันทราบว่าเวอร์ชัน OpenGl ของฉันคือ 2.1 NVIDIA-8.0.61
แก้ไข 2: ดูเหมือนว่าปัญหาจะเกี่ยวข้องกับโครงการของฉันที่ไม่ได้ใช้โปรไฟล์ที่ถูกต้อง (ความเข้ากันได้มากกว่าคอร์) แต่เมื่อฉันใช้คำแนะนำของ glfw เพื่อระบุคอร์เช่น
glfwOpenWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);
การเรียก glfwOpenWindow()
ครั้งต่อไปล้มเหลว ฉันไม่รู้วิธีวินิจฉัยปัญหานี้ เนื่องจาก glGetError จะไม่ทำงานจนกว่าจะเปิดหน้าต่างได้สำเร็จ