代码之家  ›  专栏  ›  技术社区  ›  MiJyn

SDL2-检查是否创建了OpenGL上下文

  •  6
  • MiJyn  · 技术社区  · 12 年前

    我正在使用SDL2&OpenGL,它在3台不同的计算机上运行良好。但在另一台计算机(更新的arch-linux)上,它没有,并因以下错误而崩溃:

    OpenGL context already created
    

    所以我的问题是:如何检查OpenGL上下文是否已经创建?然后,如果它已经创建,我如何获得它的句柄?

    如果我不能做到这一点,我该如何绕过这个问题?

    1 回复  |  直到 11 年前
        1
  •  5
  •   MiJyn    12 年前

    SDL2确实如此 事实上,创建OpenGL上下文时无需要求创建。然而,如果你要求它在OpenGL根本不工作的情况下创建OpenGL上下文,SDL2喜欢, ,自由泳一点。(实际原因是它在错误检查方面做得不好,所以如果X未能创建OpenGL上下文,它会认为这是因为已经创建了上下文)

    所以,要回答第三个问题(“我如何绕过这个问题”),你必须在尝试使用OpenGL之前修复它?

    回答第一个和第二个问题,好吧,据我所知,没有API调用。。。但你可以用一种稍微不同的方式:

    SDL_Window* window = NULL;
    SDL_GLContext* context = NULL; // NOTE: This is a pointer!
    
    ...
    
    int main(int argc, char** argv) {
        // Stuff here, initialize 'window'
    
        *context = SDL_GL_CreateContext(window);
    
        // More stuff here
    
        if (context) {
            // context is initialized!! yay!
        }
    
        return 2; // Just to confuse people a bit =P
    }
    
    推荐文章