OpenGL代码可以从IDE,CodeXL和GPU PerfStudio完美运行,但如果从Windows

时间:2016-10-15 18:30:51

标签: c++ debugging opengl codeblocks

有些日子以来,我一直在改进自己的OpenGL代码,现在我得到了一个可怕的惊喜:如果从CodeBlocks IDE内部运行(通过Menu-> Build - > Run),我的代码可以正常工作,但是如果我从Windows资源管理器中打开它,程序仍然会在控制台上打开并发出消息,好像它会正常运行一样,但我只是得到一个空白屏幕。

我尝试重新构建代码以查看问题是否从Windows中消失,或者是否也会影响CodeBlocks内部的运行,但结果仍然相同。

前几天(在大部分代码更改之前),我可以从Windows和CodeBlocks启动程序,并在两种情况下都能完美运行,所以现在这对我来说完全出乎意料。

我使用GLFW3和GLEW,我正在链接到以下库:

  • C:\ msys64 \ mingw64 \ lib中\ libglew32.dll.a
  • C:\ msys64 \ mingw64 \ lib中\ libglfw3.a
  • opengl32
  • C:\ msys64 \ mingw64 \ lib \ libsfml-system.dll.a(我使用此库的时钟)
  • GDI32

与此同时我已经卸载并安装了msys64,但是这并没有影响我连接相同库的其他OpenGL项目,所以我认为这不是问题的根源

我将如何继续调试此类问题?我不知道如何开始对此进行故障排除,所以对我应发布的额外信息的任何评论都是受欢迎的。

更新:如果我从GPU PerfStudio和CodeXL打开应用程序,一切正常,但不是我通过Windows资源管理器打开时。

1 个答案:

答案 0 :(得分:1)

  

我将如何继续调试此类问题?

当我处理这样的错误时,我使用了一个名为CodeXL的工具。您可以下载最新版本here。它会自动中断任何OpenGL错误,并显示您的哪些OpenGL函数调用导致它。

它是免费的,它也适用于非AMD GPU。

它不应该花很长时间来学习如何使用它:你只需要创建一个新项目,给它项目文件夹的路径和.exe并点击运行。 (确保选中Debug-> Breakpoints-> Open on OpenGL错误)

//此外,它可以显示您的缓冲区,显示您加载的纹理等。如果您打算在将来编写更多Windows + OpenGL,请务必检查它。