下面,我们来介绍一下怎么使用DX SDK自带的工具pix for windows来调试Shader。这里只做简要的介绍,具体的情参看PIX的文档哈。如何找到文档呢?打开DX SDK开始菜单下面的DirectX Documentation for C++,我的版本是09年8月版本的,到目前为止好像是最新版,呵呵。然后依次:DirectX Software Development Kit/Tools/DirectX Performance Tools/PIX。

好了开始吧。首先,让我们选择一个例子吧,就用微软自带的BasicHLSL这个Demo吧。首先呢,我们要用可调式Shader的方式编译和链接我们的程序。对于这个Demo来说,就是简单的把下面这两句解注释就OK了:

#define DEBUG_VS   // Uncomment this line to debug vertex shaders 
         #define DEBUG_PS   // Uncomment this line to debug pixel shaders

好了,现在我们应该会生成一个可执行文件了。我的这个可执行文件的地址是:E:/Documents/Visual Studio 2008/Projects/DirectXSamples/BasicHLSL/Debug/BasicHLSL.exe 记住它哦。

然后我们去开始菜单DXSDK下面打开PIX for Windows.如果不出意外的话,你应该能看到这个界面:

好了,让我们新建一个Experiment吧。方法是File>New Experiment(PS:Ctrl+N或者直接点工具栏都可以)。然后你会看到下面一个界面:

如上所示,这样选择好,点Start Experiment就可以启动应用程序了。

注意,由于开启了Pixel Shader调试,因此会切换到参考设备,所以会出现一个警告,且运行期间会很卡,但是,忍住吧,呵呵。造成这个的罪魁祸首在此:

// Debugging vertex shaders requires either REF or software vertex processing 
    // and debugging pixel shaders requires REF. 
#ifdef DEBUG_VS
    if( pDeviceSettings->d3d9.DeviceType != D3DDEVTYPE_REF )
    {
        pDeviceSettings->d3d9.BehaviorFlags &= ~D3DCREATE_HARDWARE_VERTEXPROCESSING;
        pDeviceSettings->d3d9.BehaviorFlags &= ~D3DCREATE_PUREDEVICE;
        pDeviceSettings->d3d9.BehaviorFlags |= D3DCREATE_SOFTWARE_VERTEXPROCESSING;
    }
#endif
#ifdef DEBUG_PS
    pDeviceSettings->d3d9.DeviceType = D3DDEVTYPE_REF;
#endif

当程序运行之后,让我们在想调试的Frame按下F12键。(也可以是其它键,这取决于你的设置,你可以去上面那个界面的More Option里修改。) 然后咱们就退出吧,同时也退出新建Experiment的向导对话框吧,然后出现了一个这个界面:

OK,这就是我们要分析的第六帧哦。在Detail窗口中选择Render,事件中选择Frame6.然后应该能看到这个界面:

接下来选择一个我们要调试的像素,右键之后选Debug This Pixel。

看到左边的链接了吗?(如上图所示的Debug Vertex0等)点击它们试试吧。

是不是很简单呢?这是一个轻量级的工具不怎么占资源也挺好用的。

呵呵。Pixel也是同样的道理哦:

我也是刚刚接触到PIX,到处找资料都找不到,所以只好自己自学了,希望这一点点东西对大家能有帮助。另外PIX是很强大的一个工具,它能做的不仅仅是这点,它还可以用来查Bug用来检查性能消耗,起Nvidia PerfHUD的作用哦~~ 向导窗口下面的四个选项选第一个试试看~~

就此了,有其它好的方法和用法欢迎大家共享,谢谢。

个人注解:

此处的VS和PS在编译时必须指定D3DXSHADER_DEBUG(/Zi)和D3DXSHADER_SKIPOPTIMIZATION(/Od),否则就只能在反汇编模式下调试了,哈哈!

使用Pix For Windows调试Shader傻瓜教程相关推荐

  1. Windows操作系统装机傻瓜教程

    Windows操作系统装机傻瓜教程 概览 与旧系统说拜拜 磁盘分驱规划 准备U盘安装介质 进入BIOS设置U盘启动 Windows安装向导 概览 开始之前首先捋一下思路.整个系统安装过程分成两个部分: ...

  2. 为新手准备的 Codea 着色器(Shader)教程

    为新手准备的 Codea 着色器(Shader) 教程 原文标题:<Shaders for dummies>  作者:Ignatz  译者:FreeBlues  译文链接:http://m ...

  3. 下载和安装MySQL(傻瓜)教程

    下载和安装MySQL傻瓜教程 1.下载MySQL 2.安装 安装mysql时一直卡在starting the server这一位置,解决办法 3.检查是否安装成功 4.安装成功后进行登录 1.下载My ...

  4. Windows驱动编程基础教程

    前言     本书非常适合熟悉Windows应用编程的读者转向驱动开发.所有的内容都从最基础的编程方法入手.介绍相关的内核API,然后举出示范的例子.这本书只有不到70页,是一本非常精简的小册子.所以 ...

  5. Windows驱动编程基础教程 (转)

     Windows驱动编程基础教程(转) 我经常在网上遇到心如火燎的提问者.他们碰到很多工作中的技术问题,是关于驱动开发的.其实绝大部分他们碰到的"巨大困难"是被老牛们看成初级得 ...

  6. Windows网络编程案例教程-董相志 学习记录 第一个网络程序hostent

    <Windows网络编程案例教程>-董相志 学习记录 第一个网络程序hostent 第一章 网络编程概述 1.3.5第一个网络程序--hostent 对主机的名称和地址解析 WinSock ...

  7. C# SuperSocket 手把手教你入门 傻瓜教程---3(Telnet服务器和客户端请求处理)

    C# SuperSocket 手把手教你入门 傻瓜教程系列教程 C# SuperSocket 手把手教你入门 傻瓜教程---1(服务器单向接收客户端发送数据) C# SuperSocket 手把手教你 ...

  8. C# SuperSocket 手把手教你入门 傻瓜教程---1(服务器单向接收客户端发送数据)

    C# SuperSocket 手把手教你入门 傻瓜教程系列教程 C# SuperSocket 手把手教你入门 傻瓜教程---1(服务器单向接收客户端发送数据) C# SuperSocket 手把手教你 ...

  9. 楚狂人Windows驱动编程基础教程

    版权声明     本书是免费电子书.作者保留一切权利.但在保证本书完整性(包括版权声明.前言.正文内容.后记.以及作者的信息),并不增删.改变其中任何文字内容的前提下,欢迎任何读者以任何形式(包括各种 ...

最新文章

  1. SpringMVC-Mybatis学习总结整理(下)
  2. IIS与COM组件权限的问题
  3. 一枚菜狗子的2016总结
  4. python:类的空间问题 类与类之间的关系
  5. 查看Linux下网卡状态或 是否连接(转)
  6. hbase集群无法重启的可能原因之一及解决办法
  7. poj 3264 Balanced Lineup RMQ问题 线段树
  8. java知识回顾_Java7 –回顾
  9. jdk1.7 String switch的实现
  10. python中,(x for y in z for x in y)这个结构怎么理解?
  11. 安捷伦mso8104a示波器电源烧毁故障维修【图文】
  12. 中国剩余定理编程实现
  13. 乐鑫ESP32-S3双核处理器,专为 AIoT 市场打造
  14. 以后再有人问你selenium是什么,你就把这篇文章给他
  15. 使用腾讯云sms短信服务
  16. XR872 移植 u-boot-v2021.07
  17. ML01 -- KNN算法
  18. 迁移学习和模型的微调
  19. 分享一个无需账号完全免费的 ChatGPT-4 的方法
  20. Dell戴尔笔记本电脑G5 15 5590原装出厂Windows10系统1903恢复原厂oem系统

热门文章

  1. 7的整除特征 三位一截_茅台酒的合格证有哪些特征和鉴别要点?
  2. kubeadm一键搭建kubernetes1.14.1高可用集群
  3. 《机器学习实战》KNN算法实现
  4. FL Studio剪辑菜单的使用方法
  5. 6章:常用工具类以及函数
  6. 微软私有云分享(R2)21 BMC提升B格
  7. Access数据库列名的命名规则
  8. android ichartjs 曲线图,C#中利用LightningChart绘制曲线图表
  9. php 怎么查看文件类型信息,php获取文件类型和文件信息的方法
  10. 学校年检计算机台账,学校年检整改报告.docx