如何在桌面上创建 OpenGL ES 2 上下文?

How to create OpenGL ES 2 context on Desktop?

是否可以在桌面 linux 上创建 OpenGL ES 2 上下文?

我的上下文相关代码是这样的:

int context_attribs[] =
      {
        GLX_CONTEXT_MAJOR_VERSION_ARB, 4,
        GLX_CONTEXT_MINOR_VERSION_ARB, 5,
        GLX_CONTEXT_PROFILE_MASK_ARB, GLX_CONTEXT_ES2_PROFILE_BIT_EXT,
        None
      };

    ctx = glXCreateContextAttribsARB( display, bestFbc, 0,
                                      True, context_attribs );

但是失败了。

然而这成功了:

int context_attribs[] =
          {
            GLX_CONTEXT_MAJOR_VERSION_ARB, 4,
            GLX_CONTEXT_MINOR_VERSION_ARB, 5,
            GLX_CONTEXT_PROFILE_MASK_ARB, GLX_CONTEXT_COMPATIBILITY_PROFILE_BIT_ARB,
            None
          };

我做错了什么?

我正尝试在 Fedora 22 x86_64 上使用 NVIDIA GTX 750 Ti GPU 执行此操作。

更新

这是根据以下答案创建 OpenGL ES 2.0 上下文的工作代码:

https://github.com/manmohanbishnoi/my-experiments/blob/master/OpenGL%20ES%20context%20on%20Desktop/opengl_es2.c

您正在请求不存在的 OpenGL ES 4.5 版上下文。来自 GLX_EXT_create_context_es2_profile extension spec:

If the version requested is a valid and supported OpenGL-ES version, and the GLX_CONTEXT_ES_PROFILE_BIT_EXT bit is set in the GLX_CONTEXT_PROFILE_MASK_ARB attribute (see below), then the context returned will implement the OpenGL ES version requested.

GLX_CONTEXT_ES2_PROFILE_BIT_EXT 实际上是一种转移注意力的东西:

Version 3, 2012/03/28

  • Add support for any OpenGL-ES version, not just version 2.0. Alias GLX_CONTEXT_ES2_PROFILE_BIT_EXT with GLX_CONTEXT_ES_PROFILE_BIT_EXT and the extension name GLX_EXT_create_context_es2_profile with GLX_EXT_create_context_es_profile.

所以它 select 配置文件中根本没有版本,版本和配置文件正交工作...