2016-12-13 4 views
0

MacBook Pro 2015 mid(Intel Iris Pro Graphics)でOpenGL 3.0またはOpenGL ESを実行したい。glfw3でMacbok Pro 2015 midでOpenGL 3.0を実行することはできませんか?

以下にglfwWindowHintと指定するとエラーが発生し、実行を停止します。

// Initialise GLFW 
if(!glfwInit()) { 
    fprintf(stderr, "Failed to initialize GLFW\n"); 
    getchar(); 
    return -1; 
} 

glfwWindowHint(GLFW_SAMPLES, 4); 
glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3); 
glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 0); 
glfwWindowHint(GLFW_OPENGL_FORWARD_COMPAT, GL_TRUE); // To make MacOS happy; should not be needed 
glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE); 

エラーは次のとおりです。

Failed to open GLFW window. If you have an Intel GPU, they are not 3.3 compatible. Try the 2.1 version of the tutorials. 

はあなたがglfw3でのOpenGL 3.0を実行する方法を知っていますか?

答えて

2

を私は受け入れ答えにビットを拡張したい、と試してみましたあなたの実際の質問に答えてください:

glfw3でOpenGL 3.0を実行する方法を知っていますか?

お客様にできません。 OSXは単にそれを実装していないからです。

OSXが実装しているのは、がOpenGL 3.2でを発明した最新のOpenGLのコアプロファイルです。さらに、OSXはOpenGL 2.1をのレガシー OpenGLとして実装し、既存のアプリケーションとの互換性を保証します。

OpenGL 3.2コアプロファイルの変更には下位互換性がないため、アプリケーションが特定のGLバージョンとプロファイルを要求できるようにメカニズムが追加されました。そのプロファイルと、現代のGLの互換性のない変更について何も知らないレガシーアプリケーションは、いつものようにGLコンテキストを要求し、最大でGL 2.1をOSXで終了させます。

OSX上で最新のGLを使用する場合は、(順方向互換性のある)コアプロファイルを明示的に要求する必要があります(仕様に従って、実装者はコアプロファイルを実装する必要があります。 OSXはGL仕様に準拠しています)。 GLFWはあなたのためにこれを行うことができますが、

glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3); 
glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 0); 
glfwWindowHint(GLFW_OPENGL_FORWARD_COMPAT, GL_TRUE); // To make MacOS happy; should not be needed 
glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE); 

は意味のある方法ではうまく動作しません。 OpenGL 3.0コアプロファイルが存在しない場合でも、を要求しています。プロファイルが導入される前にGLバージョンを要求するとき。プロファイルリクエストは無視され、要求されたバージョン以上のGLコンテキストが得られます。と互換性のあるがあります。 OSXのレガシーGLは3.0までフルフィルできないので、現代の3.2コアは3.0と互換性がないので、GLコンテキストはまったく得られません...

レガシーコンテキストを取得するには、何かを< =または、OSX上で最新のOpenGLを入手するには、少なくとも3.2コア(+ forwad互換性)を要求する必要があります。

2

対象の特定のバージョンである可能性があります。 3.3を対象としない理由は何ですか?

私はこれらのウィンドウのヒントを使用して、私のMacBook Pro(2014年後半、プロもアイリス)にうまくGLFW3を実行している:

glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3); 
glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 3); 
glfwWindowHint(GLFW_OPENGL_FORWARD_COMPAT, GL_TRUE); 
glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE); 
+0

あなたの答えをありがとう!仰るとおりです。 MacBook ProでOpenGL 3.3を実行することもできます。しかし、私はちょうどバージョン3.0またはGL ES 3.0を実行したいです。私はOpenGL ES 3.0に移植するつもりなので... – morizotter

+1

GLFWに問題があるかもしれません。 [github](https://github.com/glfw/glfw/issues)に投稿することを検討する必要があります。彼らは答えを持っているかもしれません。 – jhauberg

+1

ありがとうございます。私は関連するコミットを見つけました。それがMac上3.1および下位バージョンを実行することはできませんなぜ私にはわからない https://github.com/glfw/glfw/commit/fd127d59fa71a4b38b8d5b4e9f2ef804443fa2b1 ... – morizotter

関連する問題