編集:解決しました。これは GLFW の問題であり、Mountain Lion や OpenGL とは関係ありません。
以前は 2009 Macbook Pro で Lion を使用していました。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 にアップグレードした後、上記のコードは機能しません (glfwOpenWindow が false を返すため、ALLEGE でハングアップします)。すべての 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 のバージョンを OS が選択できるようにします。上記のコードはコンパイルおよび実行されますOpenGL version received: 2.1
が、コンソールに出力されます。
私は「え?」と言いました。詳細については、システム情報アプリを参照してください。フレームワーク セクションは、私が持っている OpenGl フレームワークが 1.8.6 であることを知らせてくれます。
私の OpenGL フレームワークが実際にダウングレードされた場合、私はあらゆる種類の混乱とかなり動揺しています。フレームワークを手動でアップグレードする方法がわかりません。何が起こっているのか理解するのを手伝ってくれる人はいますか?
Edit1 : OpenGL Extensions Viewer.app を使用すると、OpenGl のバージョンが2.1 NVIDIA-8.0.61
Edit2:問題は、プロジェクトが正しいプロファイル(コアではなく互換性)を使用していないことに関連しているように見えますが、glfwのヒントを使用してコアを指定すると、たとえば
glfwOpenWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);
への後続の呼び出しはglfwOpenWindow()
失敗します。ウィンドウが正常に開かれるまで glGetError が機能しないため、この問題を診断する方法がわかりません。