2017-09-27 89 views
0

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

“通过CreateCont只有OpenGL的3.2+环境不会创建OpenGL上下文都支持”

我加入这个说法我创建了上下文之前:

SDL_GL_SetAttribute(SDL_GL_CONTEXT_PROFILE_MASK, SDL_GL_CONTEXT_PROFILE_CORE); 

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

我在这里做错了什么?

----- -----编辑

即使强迫版本3.2(需要准确的版本)的东西还是投诉后。

这里是我的窗口类的初始化块:

//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"; 
} 
+0

显示完整的上下文初始化代码。你使用哪个版本? – BDL

+0

@BDL我添加了整个init块和一些额外的信息 – MoustacheSpy

+0

你忘了设置次要版本。最有可能你是一个3.0环境 – BDL

回答

3

的错误信息是非常明确的:你的程序不使用的OpenGL 3.2+环境。

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

SDL_GL_SetAttribute(SDL_GL_CONTEXT_MINOR_VERSION, 2); 
+0

非常好的答案和非常好的人!解决了我的问题! – MoustacheSpy