2016-08-13 7 views
0

入力コールバックなどを管理するために何か必要なので、ウィンドウとOpenGL ES 2.0コンテキストを作成するためにGLFWを設定しようとしています。 問題はこれです次の設定を使用します。GLFWがすべてのGL ES 2.0関数をロードできない

GLバージョン:OpenGL ESの3.2 NVIDIA 368.69 GLベンダー:NVIDIAコーポレーションGLGLFW_CONTEXT_CREATION_APIヒントのGLFW_NATIVE_CONTEXT_APIを使用して

glfwWindowHint(GLFW_CLIENT_API, GLFW_OPENGL_ES_API); 
    glfwWindowHint(GLFW_CONTEXT_CREATION_API, GLFW_NATIVE_CONTEXT_API); 
    glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 2); 
    glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 0); 

    glfwindow = glfwCreateWindow(width, height, "Window Title", NULL, NULL); 
    if (!glfwindow) 
    { 
     glfwTerminate(); 
     exit(1); 
    } 

    glfwMakeContextCurrent(glfwindow); 

は私のベンダーに次の情報を提供しますレンダラ:のGeForce GTX 960M /のPCIe/SSE2のGLSLバージョン:OpenGL ESのGLSL ESが 3.20

そして、それはシェーダを作成するためにも、失敗した(glCreateShaderは())は0

を返しますが、そのヒント代わりに、もしフラグ私はGLFW_EGL_CONTEXT_APIを使用して、シェーダの読み込み、プログラムのコンパイルとリンク、GL VBOのセットアップなどのようなGLルーチンのほとんどを処理することができます。しかし、glDrawElements()では失敗します。

そして、私はこの設定で、ベンダーの情報を印刷する場合、私は、この見ることができます:

GLバージョン:4.5.0 NVIDIA 368.69 GLベンダー:NVIDIAコーポレーションGL レンダラ:のGeForce GTX 960M /のPCIe/SSE2のGLSLをバージョン:4.50 NVIDIA

したがって、私は、EGLをサポートしていないと、コンテキスト作成の基礎となるAPIではないと思っています。デスクトップのOpenGLが設定されています。

また、glDrawElementsの関数ポインタを手動で取得しようとすると、nullが返されます。

PFNGLDRAWELEMENTSPROC func = reinterpret_cast<PFNGLDRAWELEMENTSPROC> 
(eglGetProcAddress("glDrawElements")); 

私はこの問題になる可能性があり、GL ESWのコンテキスト作成に正しい方法でGLFWを使用する方法を理解したいと思います。

+0

これでどのプラットフォームが発生していますか? –

+0

私は解決したと思います。私はopengl32.libをeglとglesのlibsの前にリンクしていました。私はそれを削除し、それは働き始めました。 –

答えて

0

誰もが自分の質問に答えていない、と私は長い時間前に、問題の根本を考え出していたので、ここでの説明があるので:

GLFWはGLESコンテキストのためだけ正常に動作しますinitialization.The問題がです私はのPowerVR SDKとそのES2とES3 libs.Thereforeを使用Windows.In私の場合にはGLESをエミュレートするときlinked.Oneがopengl32.libとリンクしてはならないのライブラリ、次のlibsは必須です。

glfw3.lib

libEGL.lib

libGLESv2.libデフォルトでは、私はデスクトップのOpenGLを使用していたので、私も他のGL libs.Make前に、おそらく優先度を持っていたopengl32.lib、とリンクして、私のリンカで

、デスクトッププラットフォームでGLESを実行しているときは除外してください。

関連する問題