我正在使用带有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的方法?
答案 0 :(得分:2)
您使用的是即时模式绘图吗? IE浏览器。在glBegin(..); glVertex<> ; glEnd()
来自Nsight User Guide's Supported OpenGL Functions page:
NVIDIA®Nsight™Visual Studio Edition 4.0帧调试支持OpenGL操作集,这些操作由OpenGL 4.2核心配置文件定义。请注意,没有必要创建核心配置文件上下文来使用帧调试器。使用兼容性配置文件上下文但限制使用OpenGL 4.2核心子集的应用程序也可以使用。还支持一些OpenGL 4.2兼容性配置文件功能,例如支持alpha测试和默认顶点数组对象。
因此,用更新的绘图函数替换立即模式渲染,如glDrawArrays和glDrawElements顶点数组对象。
更好的是,创建一个核心配置文件上下文,以确保您不使用已弃用的功能。
我的建议:远离过时的在线教程并阅读最新版的红皮书(OpenGL编程指南),该版本仅涵盖现代OpenGL。
您还可以尝试GPUView
中可以找到的更基本的Win 8 SDK工具<强>更新强>
至于为什么要检索0个GPU帧,你确定你的GPU在list of supported hardware上。我遇到了同样的问题,其中NSight主要工作(能够分析其他方面),但收集了0个GPU帧。后来意识到我的卡没有得到官方支持。
答案 1 :(得分:0)
现在可用Nsight 4.5 RC1,与cuda sdk 7 RC一起使用,其功能之一,现在支持openGL 4.3!