1

Linux 用の OpenGL 4.2 コンテキストを手動で作成しています。

次のようなコンテキスト属性の配列を作成します。

    int context_attribs[] = {
        GLX_CONTEXT_MAJOR_VERSION_ARB, 4,
        GLX_CONTEXT_MINOR_VERSION_ARB, 2,
        GLX_CONTEXT_FLAGS_ARB, GLX_CONTEXT_DEBUG_BIT_ARB,
        GLX_CONTEXT_PROFILE_MASK_ARB, GLX_CONTEXT_COMPATIBILITY_PROFILE_BIT_ARB,
        None
    };

次に、それをglXCreateContextAttribsARB () に渡します。コンテキストは問題なく作成されますが、属性フラグに関していくつか質問があります。たとえば、ドキュメントに基づくGLX_CONTEXT_FLAGS_ARBの場合、2つのオプションがあります。

    GLX_CONTEXT_DEBUG_BIT_ARB       0x0001
GLX_CONTEXT_FORWARD_COMPATIBLE_BIT_ARB  0x0002

最初のオプションを選択すると、OpenGL がデバッグ モードで実行されるということですか?はいの場合、このフラグを 2 番目のオプションに設定すると、固定機能を使用できなくなるということですか? はいの場合、互換性プロファイル モードで「非デバッグ」コンテキストを設定するにはどうすればよいですか?

4

1 に答える 1

2

すべてのフラグは直交しています。それらはビットフラグです。個別に設定することも、まったく設定しないこともできます。

GLX_CONTEXT_FLAGS_ARB, GLX_CONTEXT_DEBUG_BIT_ARB,

これは、デバッグ コンテキストを作成することを意味します。

    GLX_CONTEXT_FLAGS_ARB, GLX_CONTEXT_DEBUG_BIT_ARB | GLX_CONTEXT_ROBUST_ACCESS_BIT_ARB,

これは、堅牢なアクセスも使用するデバッグ コンテキストを作成することを意味します (前方互換性を使用してはならないため、前方互換性ではなくこの例を使用します)。それらはビットフラグです。あなたはビットごとに、またはそれらを一緒に。

    GLX_CONTEXT_FLAGS_ARB, 0,

これは、フラグがないことを意味します。したがって、デバッグ コンテキストではなく、堅牢なアクセスなどは使用されません。おそらく、それが探しているものです。

また、フラグをまったく渡さないように選択することもできます。

于 2013-04-04T09:18:19.533 に答える