2

今日の時点でOpenGL 4.1までをサポートするOSX MavericksでOpenGLを学ぼうとしています。

私はそれを基本的に保ち、gcc (g++) を使用してコンパイルしていますが、Freeglut OSX を介してオープン GL コンテキストをロードすると、レガシー OpenGL プロファイルがロードされます。

私はこれを試しました: FreeGLUT を使用した OSX 上の OpenGL 3.3 ですが、運が悪かったため、glGetString 呼び出しは次の値を返します。

NVIDIA GeForce GT 750M OpenGL Engine
2.1 NVIDIA-8.24.9 310.40.25f01

誰にもアイデアはありますか?

次のコンテキスト呼び出しで FreeGlut を呼び出しています。

glutInitContextVersion(3,2);
glutInitContextProfile(GLUT_CORE_PROFILE);

編集:OSXではなくWindowsで同じアプリケーションを試してみたところ、次のエラーが発生しました:

2.1 コンテキストが要求されましたが、wglCreateContextAttribsARB は利用できません。従来のコンテキスト作成にフォールバックする

これが私のアプリケーションエントリポイントです

    int main (int argc, char * argv[])
{
try{
    glutInit(&argc, argv);


    glutInitDisplayMode(GLUT_RGBA);

    glutInitWindowSize(512,512);

    glutInitContextVersion(4,2);

    glutInitContextFlags(GLUT_FORWARD_COMPATIBLE);
    glutInitContextProfile(GLUT_CORE_PROFILE);

    cout << "Called GLUT with 'GLUT_FORWARD_COMPATIBLE' \n";
    //cout << VAO_IDs::NumVAOs;

    glutCreateWindow("Triangles!");

    cout << "Calling GLEW. " << endl;
    glewExperimental = GL_TRUE;
    if(glewInit())
    {
        cerr << "unable to initialise GLEW.. Exiting " << endl;
    }
    cout << "calling init " << endl;
    init();
    cout << "Setting display function " << endl;
    glutDisplayFunc(display);
    cout << "Entering loop " << endl;
    glutMainLoop();
    }
    catch (exception)
    {
        cerr << "ERROR! " <<endl;
    }

    }

わかりました。

Windows PC で再コンパイルしましたが、問題はありませんでした。おそらく、OSX または OSX 自体、またはその組み合わせでの FreeGLUT の問題です。

少なくとも今は、OSX をテストできるコードを持っています...

4

1 に答える 1

5

OSX Mavericksは をサポートしていませんOpenGL 4.2。したがって、4.2 コンテキストを作成することはできません。サポートされている最後のバージョンは4.1+ で Core に組み込まれた一部の拡張機能4.2です。

今日発送したい場合、唯一のオプションはOpenGL 4.1拡張機能を使用することです.

のコードは次のGLFW3とおりです。

glfwWindowHint( GLFW_CONTEXT_VERSION_MAJOR, 4 );
glfwWindowHint( GLFW_CONTEXT_VERSION_MINOR, 1 );
glfwWindowHint( GLFW_OPENGL_FORWARD_COMPAT, GL_TRUE );
glfwWindowHint( GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE );
于 2014-04-10T14:24:52.750 に答える