RenderDOC 和 SDL2
RenderDOC and SDL2
我想用 renderdoc 调试我的程序。我使用 SDL_GL 标准函数创建了上下文。 运行 应用程序使用 render doc 时出现此错误。
"OpenGL. Context not created via CreateCont Only OpenGL 3.2+ contexts are supported"
我在创建上下文之前添加了这个参数:
SDL_GL_SetAttribute(SDL_GL_CONTEXT_PROFILE_MASK, SDL_GL_CONTEXT_PROFILE_CORE);
这应该会强制执行核心配置文件,但错误仍然存在。
我做错了什么?
-----编辑-----
即使强制使用 3.2 版(需要准确的版本),问题仍然存在。
这是我的 window class:
的初始化块
//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";
}
错误信息非常明确:您的程序没有使用 OpenGL 3.2+ 上下文。
由于您只请求特定的主要版本而不是次要版本,因此您很可能获得 3.0 上下文。解决问题添加
SDL_GL_SetAttribute(SDL_GL_CONTEXT_MINOR_VERSION, 2);
我想用 renderdoc 调试我的程序。我使用 SDL_GL 标准函数创建了上下文。 运行 应用程序使用 render doc 时出现此错误。
"OpenGL. Context not created via CreateCont Only OpenGL 3.2+ contexts are supported"
我在创建上下文之前添加了这个参数:
SDL_GL_SetAttribute(SDL_GL_CONTEXT_PROFILE_MASK, SDL_GL_CONTEXT_PROFILE_CORE);
这应该会强制执行核心配置文件,但错误仍然存在。
我做错了什么?
-----编辑-----
即使强制使用 3.2 版(需要准确的版本),问题仍然存在。
这是我的 window class:
的初始化块//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";
}
错误信息非常明确:您的程序没有使用 OpenGL 3.2+ 上下文。
由于您只请求特定的主要版本而不是次要版本,因此您很可能获得 3.0 上下文。解决问题添加
SDL_GL_SetAttribute(SDL_GL_CONTEXT_MINOR_VERSION, 2);