【问题标题】:nsight - OpenGL 4.2 debugging incompatibilitynsight - OpenGL 4.2 调试不兼容
【发布时间】:2014-12-19 01:05:04
【问题描述】:

每当我尝试在 nvidia nsight 中调试着色器时,我的nvcompatlog 中都会出现以下不兼容问题。

glDisable (cap = 0x00008620)
        glMatrixMode
        glPushMatrix
        glLoadIdentity
        glOrtho
        glBegin
        glColor4f
        glVertex2f
        glEnd
        glPopMatrix

这很令人困惑,因为我使用的是 4.2 核心配置文件,而没有使用任何已弃用或固定的函数调用。在这个阶段,我只是在屏幕上绘制一个简单的 2D 正方形,并且可以确保上面列出的功能都没有被使用。

我真正担心的是刚接触 SDL 和 GLEW 我不确定他们在幕后使用了哪些功能。我一直在网上搜索,发现其他人正在使用 SDL、GLEW 和 Nvidia nsight。这让我相信我忽略了一些东西。下面是我如何初始化 SDL 和 GLW 的简短版本。

SDL_Init(SDL_INIT_EVERYTHING);
SDL_GL_SetAttribute(SDL_GL_CONTEXT_MAJOR_VERSION, 4);
SDL_GL_SetAttribute(SDL_GL_CONTEXT_MINOR_VERSION, 2);
SDL_GL_SetAttribute(SDL_GL_CONTEXT_PROFILE_MASK, SDL_GL_CONTEXT_PROFILE_CORE);
SDL_GL_SetAttribute(SDL_GL_ACCELERATED_VISUAL, 1);

SDL_Window *_window;
_window = SDL_CreateWindow("Red Square", SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED  , 200, 200, SDL_WINDOW_OPENGL);

SDL_GLContext glContext = SDL_GL_CreateContext(_window);
glewExperimental = GL_TRUE;
GLenum status = glewInit();
SDL_GL_SetAttribute(SDL_GL_DOUBLEBUFFER, 1);

在实现中,我几乎在每次调用后都会进行错误检查。我将它从示例中排除以减少混乱的数量。以上所有都不会产生错误并返回有效对象。

初始化后glewGetString(GLEW_VERSION)返回4.2.0 NVIDIA 344.75glewGetString(GLEW_VERSION)返回1.11.0GLEW_VERSION_4_2返回true.

知道如何使用 SDL 和 GLEW 并且不让这些框架调用已弃用的函数吗?

** 编辑 ** 我一直在体验 Dependency Walker here。查看通过 Opengl32.dll 的调用,列出的所有内容均未显示为被调用模块。

【问题讨论】:

    标签: sdl nvidia glew opengl-4


    【解决方案1】:

    对于任何感兴趣的人,Nsight 都会捕获所有发送到 OpenGL 服务器的命令。不仅是通过您的申请发布的那些。如果您启用了任何 FPS 或录制软件,它们往往会使用已弃用的方法绘制到帧缓冲区。在我的例子中,它是 Riva Tuner,它可以在屏幕上显示任何正在运行的游戏的 FPS。禁用它解决了我的问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-12-04
      • 2012-01-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多