Nvidia Nsight 4.0 无法在 OpenGL 4.3 中分析代码
Posted
技术标签:
【中文标题】Nvidia Nsight 4.0 无法在 OpenGL 4.3 中分析代码【英文标题】:Nvidia Nsight 4.0 cannot profile code in OpenGL 4.3 【发布时间】:2014-08-30 10:33:04 【问题描述】:我正在使用带有 Nvidia NSights 4.0 的 Visual Studio 13。在我的应用程序中,我混合了不同类型的渲染,但为了测试 proiler,我做了一个简单的场景渲染。我打开了图形调试器,当我打开 GUI 并按空格键捕获帧时,我收到此错误:
无法进入帧调试器。 Nsight 只支持帧调试 D3D9、D3D10、D3D11 和 OpenGL 4.2。 原因:glEnd
我使用的是 GT540m,我检查了我的 OpenGL 版本,它是 4.3 如果我尝试使用性能分析工具并跟踪 OpenGL(按照说明),我总是会得到一定百分比的 CPU 帧和 0 个 GPU 帧。
我不知道我做错了什么。是否有任何解决方案或替代方法来分析 OpenGL?
【问题讨论】:
【参考方案1】:您是否使用即时模式绘图? IE。 glBegin(..); glVertex ; glEnd()
来自Nsight User Guide's Supported OpenGL Functions page:
NVIDIA® Nsight™ Visual Studio Edition 4.0 帧调试支持由 OpenGL 4.2 核心配置文件定义的 OpenGL 操作集。请注意,无需创建核心配置文件上下文即可使用帧调试器。使用兼容性配置文件上下文但将自身限制为使用 OpenGL 4.2 核心子集的应用程序也可以工作。还支持一些 OpenGL 4.2 兼容性配置文件功能,例如支持 alpha 测试和默认顶点数组对象。
因此,将立即模式渲染替换为更新的绘图函数,如顶点数组对象的 glDrawArrays 和 glDrawElements。
更好的是,创建一个核心配置文件上下文,以确保您没有使用已弃用的功能。
我的建议:远离过时的在线教程,阅读最新版的红皮书(OpenGL 编程指南),它仅涵盖现代 OpenGL。
您还可以尝试在Win 8 SDK 中找到的更基本的GPUView 工具
更新:
至于为什么检索到0个GPU帧,你确定你的GPU在list of supported hardware。我遇到了同样的问题,NSight 大部分时间都在工作(能够分析其他方面),但收集了 0 个 GPU 帧。后来意识到我的卡没有官方支持。
【讨论】:
我正在使用 glDrawElements 但我从其他教程中复制了一些代码,因此我可能会进行深入检查。谢谢(我已经发现我正在使用 glBegin 和 glend 渲染四边形)顺便说一句,核心配置文件仅适用于着色器还是我可以在主机中使用它?因为我在我的着色器上启用了 ARB_compatibility。 现在它似乎工作了,即使它给了我一个警告“Insufficient OpenGL version”,版本:未知。我安装了 4.3,也许 NSight 没有检测到什么? 性能分析工具呢?我仍然得到 0 个 GPU 帧 据我所知,上下文版本和配置文件独立于着色器 GLSL 版本和配置文件。上下文配置文件规范将取决于窗口工具包(检查有关创建和初始化窗口的文档部分)。对于 GLUT,使用 glutInitContextProfile(GLUT_CORE_PROFILE);【参考方案2】:现已推出 Nsight 4.5 RC1,可与 cuda sdk 7 RC 配合使用,并且在其功能中,现在支持 openGL 4.3!
【讨论】:
以上是关于Nvidia Nsight 4.0 无法在 OpenGL 4.3 中分析代码的主要内容,如果未能解决你的问题,请参考以下文章
Nvidia Nsight 与 localhost 的连接失败