RenderDOC和SDL2

时间:2017-09-27 12:42:49

标签: opengl sdl renderdoc

我想用renderdoc调试我的程序。我用SDL_GL标准函数创建了我的上下文。使用render doc运行应用程序时出现此错误。

"的OpenGL。不通过CreateCont创建的上下文仅支持OpenGL 3.2+上下文"

我在创建上下文之前添加了这个参数:

SDL_GL_SetAttribute(SDL_GL_CONTEXT_PROFILE_MASK, SDL_GL_CONTEXT_PROFILE_CORE);

这应该强制核心配置文件,但错误仍然存​​在。

我在这里做错了什么?

- - - - - - - - 编辑

即使在强制使用3.2版本(确切版本要求)后,事情仍然存在。

这是我的窗口类的init块:

//System init


if(!SDL_WasInit(SDL_INIT_EVERYTHING))
    SDL_Init(SDL_INIT_EVERYTHING);

this->SDL_window = SDL_CreateWindow(title,10,10,w,h,SDL_WINDOW_OPENGL);
if(this->SDL_window!=NULL)
{
    SDL_GL_SetAttribute(SDL_GL_CONTEXT_MAJOR_VERSION, 3);

    SDL_GL_SetAttribute(SDL_GL_CONTEXT_PROFILE_MASK, SDL_GL_CONTEXT_PROFILE_CORE);

    this->context = SDL_GL_CreateContext(SDL_window);
    if(!this->context)
    {
        SDL_DestroyWindow(SDL_window);
        COUT<<"FAILED TO CREATE CONTEXT. PRINTING ERROR AND THROWING EXCEPTION"<<ENDL;
        COUT<<SDL_GetError()<<ENDL;
        throw "ENGINE::WINDOW::GLCONTEXTERR";
    }
        glewExperimental = GL_TRUE;
        glewInit();
}
else
{
    COUT<<"FAILED TO CREATE WINDOW. PRINTING ERROR AND THROWING EXCEPTION"<<ENDL;
    COUT<<SDL_GetError()<<ENDL;
    throw "ENGINE::WINDOW::SDLWINDOWERR";
}

1 个答案:

答案 0 :(得分:3)

错误信息非常明确:您的程序不使用OpenGL 3.2+上下文。

由于您只请求特定的主要版本而不是次要版本,因此您最有可能获得3.0上下文。要解决问题,请添加

SDL_GL_SetAttribute(SDL_GL_CONTEXT_MINOR_VERSION, 2);