เหตุใด OpenGl จึงดาวน์เกรดเมื่อฉันติดตั้ง Mountain Lion

แก้ไข: แก้ไขแล้ว นี่เป็นปัญหาของ 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 จะไม่ทำงานจนกว่าจะเปิดหน้าต่างได้สำเร็จ


person cjcurrie    schedule 20.01.2013    source แหล่งที่มา
comment
Mountain Lion ไม่ได้ดาวน์เกรด OpenGL เป็นไปได้มากว่านี่คือปัญหาที่ glfw ค้นหาเวอร์ชันที่ไม่ถูกต้อง   -  person Kurt Revis    schedule 21.01.2013
comment
ดู ที่เกี่ยวข้องด้วย คำถามเพื่อดูคุณลักษณะของ OpenGL 3.2 โดยใช้ glfw   -  person Kurt Revis    schedule 21.01.2013
comment
ขอบคุณ @KurtRevis แต่คำถามที่เกี่ยวข้องมีปัญหาในการไม่ระบุโปรไฟล์ OpenGL ที่จะใช้ บรรทัดที่ฉันใช้ด้านบน ` glfwOpenWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);` ได้รับการบันทึกไว้ที่นี่เพื่อ รวมถึงโปรไฟล์หลักด้วย วิธีนี้สำเร็จใน Lion แต่ตอนนี้ล้มเหลว ฉันไม่สามารถวินิจฉัยปัญหาโดยใช้ glGetError() ได้เนื่องจากการเข้าถึงที่ไม่ดี (ฉันถือว่าบริบทไม่ได้ถูกสร้างขึ้นเมื่อ OpenWindow ล้มเหลว)   -  person cjcurrie    schedule 21.01.2013


คำตอบ (1)


การคอมไพล์ GLFW ใหม่จากแหล่งที่มาและใช้กับการเชื่อมโยงแบบคงที่ช่วยแก้ปัญหาของฉันเท่านั้น ข้อผิดพลาดภายในบางอย่างทำให้ glfwOpenWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE); ทำงานไม่ถูกต้อง

person cjcurrie    schedule 20.01.2013