RenderDOC и SDL2
Я хочу отладить свою программу с помощью renderdoc. Я создал свой контекст с помощью стандартной функции SDL_GL. Я получаю эту ошибку при запуске приложения с помощью Render Doc.
"OpenGL. Контекст не создается с помощью CreateCont Only. Поддерживаются контексты 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 ответ
Сообщение об ошибке очень ясно: ваша программа не использует контекст OpenGL 3.2+.
Поскольку вы запрашиваете только определенную основную версию, но не вспомогательную версию, вы, скорее всего, получите контекст 3.0. Для решения проблемы добавьте
SDL_GL_SetAttribute(SDL_GL_CONTEXT_MINOR_VERSION, 2);