Mengapa OpenGl diturunkan versinya ketika saya menginstal Mountain Lion?

Sunting: Terpecahkan. Ini adalah masalah GLFW, tidak terkait dengan Mountain Lion atau OpenGL.

Saya sebelumnya menggunakan Lion di Macbook Pro 2009 saya. Di XCode, yang berikut ini berfungsi tanpa masalah:

 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);

Dan kemudian dicetak OpenGL version received: 3.2. Setelah saya mengupgrade ke Mountain Lion, kode di atas tidak akan berfungsi (hang di ALLEGE karena glfwOpenWindow mengembalikan false). Menghapus semua petunjuk jendela GLFW, misalnya:

 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);

memungkinkan OS untuk memilih versi OpenGL mana yang akan digunakan. Kode di atas dikompilasi dan dijalankan, tetapi mencetak OpenGL version received: 2.1 ke konsol.

Saya berkata, "apa?" dan melihat ke aplikasi Informasi Sistem untuk informasi lebih lanjut. Bagian Frameworks memberi tahu saya bahwa framework OpenGl yang saya miliki adalah 1.8.6.

Sekarang saya bingung dan agak kesal jika kerangka OpenGL saya memang diturunkan versinya. Saya tahu tidak ada cara untuk memutakhirkan kerangka kerja saya secara manual. Adakah yang bisa membantu saya memahami apa yang terjadi?

Edit1: Menggunakan OpenGL Extensions Viewer.app memberi tahu saya bahwa versi OpenGl saya adalah 2.1 NVIDIA-8.0.61

Sunting2: masalahnya tampaknya terkait dengan proyek saya yang tidak menggunakan profil yang benar (kompatibilitas, bukan inti), tetapi ketika saya menggunakan petunjuk glfw untuk menentukan inti, misalnya.

 glfwOpenWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);

panggilan berikutnya ke glfwOpenWindow() gagal. Saya tidak tahu cara mendiagnosis masalah ini karena glGetError tidak akan berfungsi sampai jendela berhasil dibuka.


person cjcurrie    schedule 20.01.2013    source sumber
comment
Mountain Lion tidak menurunkan versi OpenGL. Kemungkinan besar ini adalah masalah ketika glfw mencari versi di tempat yang salah.   -  person Kurt Revis    schedule 21.01.2013
comment
Lihat juga terkait ini pertanyaan tentang cara melihat fitur OpenGL 3.2 menggunakan glfw.   -  person Kurt Revis    schedule 21.01.2013
comment
Terima kasih @KurtRevis, tetapi pertanyaan terkait mengalami masalah karena tidak menentukan profil OpenGL mana yang akan digunakan. Baris yang saya gunakan di atas, ` glfwOpenWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);`, didokumentasikan di sini untuk termasuk profil inti. Cara ini berhasil di Lion tetapi sekarang gagal. Saya tidak dapat mendiagnosis masalah menggunakan glGetError() karena akses yang buruk (saya berasumsi konteksnya tidak dibuat ketika OpenWindow gagal).   -  person cjcurrie    schedule 21.01.2013


Jawaban (1)


Mengkompilasi ulang GLFW dari sumber dan menggunakannya dengan tautan statis hanya menyelesaikan masalah saya. Beberapa kesalahan internal menyebabkan glfwOpenWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE); tidak berfungsi dengan benar.

person cjcurrie    schedule 20.01.2013