入力コールバックなどを管理するために何か必要なので、ウィンドウと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を使用する方法を理解したいと思います。
これでどのプラットフォームが発生していますか? –
私は解決したと思います。私はopengl32.libをeglとglesのlibsの前にリンクしていました。私はそれを削除し、それは働き始めました。 –