【DirectX 12】使用Graphics Tools和VS 2015分析应用
来源:互联网 发布:码头仓库总店 淘宝 编辑:程序博客网 时间:2024/06/06 20:45
DirectX 12图形应用分析
准备工具
- Windows 10 10122技术预览版
- NVIDIA 正式的DirectX 12驱动(官网上可下载)
- Visual Studio 2015 Community RC
- Graphics Tools
以上工具可以参考
【DirectX 12】开发初体验(10074技术预览版)
和在Win10 10074上开启DirectX 12的调试功能
进行安装。
调试界面
上图是图形调试界面,可以分析每一个Frame的DrawCall以及Rendering Resources。
如上图所示,选择 Start Diagnostics 就能开始调试D3D图形应用了,在应用运行的过程中按打印屏幕键就能捕获当前的帧并保存下来以供后续分析。
在代码中添加图形绘制事件信息
在DX应用中可以使用Pix库添加绘制事件(PixEvent)
#include <pix.h>
下面这段代码说明了如何使用PixEvent对DrawCalls进行分组标记。
//在这里添加绘制事件标记 PIXBeginEvent(m_commandList.Get(), 0, L"Draw the cube"); { m_commandList->SetGraphicsRootSignature(m_rootSignature.Get()); ID3D12DescriptorHeap* ppHeaps[] = { m_cbvHeap.Get() }; m_commandList->SetDescriptorHeaps(_countof(ppHeaps), ppHeaps); m_commandList->RSSetViewports(1, &m_deviceResources->GetScreenViewport()); m_commandList->RSSetScissorRects(1, &m_scissorRect); m_commandList->ResourceBarrier(1, &CD3DX12_RESOURCE_BARRIER::Transition(m_deviceResources->GetRenderTarget(), D3D12_RESOURCE_STATE_PRESENT, D3D12_RESOURCE_STATE_RENDER_TARGET)); m_commandList->ClearRenderTargetView(m_deviceResources->GetRenderTargetView(), DirectX::Colors::CornflowerBlue, 0, nullptr); m_commandList->OMSetRenderTargets(1, &m_deviceResources->GetRenderTargetView(), false, nullptr); m_commandList->ExecuteBundle(m_cubeBundle.Get()); m_commandList->ResourceBarrier(1, &CD3DX12_RESOURCE_BARRIER::Transition(m_deviceResources->GetRenderTarget(), D3D12_RESOURCE_STATE_RENDER_TARGET, D3D12_RESOURCE_STATE_PRESENT)); } PIXEndEvent(m_commandList.Get()); //结束绘制事件的记录
PixEvent的作用
通常一个游戏应用运行一帧的过程中会产生大量的DrawCalls,巧妙地使用PixEvent对大量的DrawCalls分组,能够帮助你快速定位到绘制过程中的错误,同时也有利于发现并分析应用运行过程中的性能瓶颈。
0 0
- 【DirectX 12】使用Graphics Tools和VS 2015分析应用
- DirectX Graphics 入门
- Debugging DirectX Graphics
- DirectX SDK Tools Catalog
- PopUp和Graphics的使用
- DirectX 8 Graphics常见错误
- VS tools
- DirectX Width vs. Pitch
- VS 配置Directx
- 使用VS和Microsoft Azure快速部署Web应用
- DirectX 9.0c游戏开发手记之RPG编程自学日志之12: Drawing with DirectX Graphics (用DirectX图形绘图)(第5节)
- DirectX 9.0c游戏开发手记之RPG编程自学日志之16: Drawing with DirectX Graphics (用DirectX图形绘图)(第10-12节)
- (DirectX系列09)DirectShow EDS应用编码分析
- Graphics类和GraphicsPath类的使用
- iOS7 使用Core Graphics 和 Core Image
- DirectX FAQ 翻译(Graphics 部分)
- DirectX 3D Graphics Programming Bible
- DirectX FAQ 翻译(Graphics 部分)(转)
- hihocoder #1052 : 基因工程
- 第11周项目 程序阅读(2)
- 你不知道的JSON的高效率用法
- 网页常用分享代码大全
- 原生javascript实现异步的7种方式
- 【DirectX 12】使用Graphics Tools和VS 2015分析应用
- android:windowSoftInputMode
- JAVA NIO 实例
- 进程间通信、线程间通信
- c#控制台用数字6和9显示“I ❤ YOU”
- java线程的几种转态(Thread类的内部类)
- Redis配置文件参数说明
- tcpdump入门实践
- android listview添加headview