标签: renderdoc

如何在OpenGL中创建调试标记?

我正在尝试使用RenderDoc调试一些OpenGL 3.3+图形代码,并且我想为RenderDoc可以识别的渲染过程定义一些调试标记。

我使用GLEW,并尝试使用glPushGroupMarkerEXT / glPopGroupMarkerEXT来定义这些标记,但是当我调用glPushGroupMarkerEXT时遇到访问冲突,因此我猜没有提供该功能的扩展名。我还尝试使用glewIsSupported检查扩展名GL_EXT_debug_marker是否可用,但返回false。

是否不支持此功能,或者我使用不正确?还是有其他方法可以实现这一目标?

c++ opengl debugging graphics renderdoc

5
推荐指数
1
解决办法
279
查看次数

RenderDOC 和 SDL2

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

捕获 OpenGL。上下文不是通过 CreateContextAttribs 创建的。捕获已禁用。仅支持 OpenGL 3.2+ 上下文。

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

SDL_GL_SetAttribute(SDL_GL_CONTEXT_PROFILE_MASK, SDL_GL_CONTEXT_PROFILE_CORE);
Run Code Online (Sandbox Code Playgroud)

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

我在这里做错了什么?

- - -编辑 - - -

即使在强制使用 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"; …
Run Code Online (Sandbox Code Playgroud)

opengl sdl renderdoc

1
推荐指数
1
解决办法
3305
查看次数

标签 统计

opengl ×2

renderdoc ×2

c++ ×1

debugging ×1

graphics ×1

sdl ×1