最近系统出现了一个问题:在VS2010中debug模式下纹理混合正常显示,在release模式下显示黑屏(无报错),单独运行release模式的程序仅能显示1层纹理(也无报错)。这真是个奇妙的世界啊!

经过一段时间调试,问题解决了,出在HLSL文件上。

总结一下DirectX10/11 出现这种情况的调试步骤:

  1. 首先在绘制层面对程序debug(即对HLSL(.fx文件)进行debug)。

工具自然是用PIX了,PIX(英语:Performance Investigator for Xbox)是微软的性能分析工具,它可以协助软件开发人员把Direct3D应用程序调整至最佳状态,换句话说,它是一套Direct3D 除错工具。这套工具原本是给Xbox电子游戏机使用的,后来微软把它移植到Windows操作系统上,类似于XNA,用来协助游戏开发人员。(来源:http://zh.wikipedia.org/wiki/PIX_(%E5%BE%AE%E8%BB%9F))

不过最好懂点HLSL的汇编语言,毕竟通过PIX对release版本的程序只能看到调用汇编语言的过程。如果debug版本运行正常的话,可以调整同样的参数进行参考。

参考文章:1. Direct3D程序调试利器 PIX Win 简介 http://www.cnblogs.com/Tue/archive/2009/06/08/Tools.html

2. [原创]使用Pix For Windows调试Shader傻瓜教程 http://hi.baidu.com/dbfr2011818/item/4432f9e93a74a3c1baf37d00

3. A painless introduction to PIX for Windows http://blogs.msdn.com/b/manders/archive/2006/12/15/a-painless-introduction-to-pix-for-windows.aspx

4. Asm Shader Reference(着色器汇编语言参考)http://msdn.microsoft.com/en-us/library/windows/desktop/bb219840(v=vs.85).aspx

2、如果确定HLSL文件无问题,考察D3D设备初始化、编译fx文件状态设置

重点考察以下几个结构:

  1. D3D_DRIVER_TYPE
  2. D3D_FEATURE_LEVEL
  3. D3DCOMPILE

3、最后的步骤就是常用的项目调试经验,一般的来说,Debug 和 Release 只是一组编译选项的差别,实际上并没有什么定义能区分二者。如果debug项目运行正常,release不正常而代码又挑不出来什么错的话,那十有八九是某一个项目设置的问题。

参考文章:release与debug http://blog.csdn.net/kuangfengwu/article/details/7355639

终于写完了(我能说我已经憋了三天了么),因为是用word2013写的,不知道排版怎么样,待发布后看看。

转载于:https://www.cnblogs.com/colorzc/p/3282360.html

DirectX11 程序 Release版本非正常显示解决方案及调试相关推荐

  1. 记一次Debug版本正常运行,Release版本崩溃的解决方案.

    今天碰到一个特坑爹的问题. 在使用自己写的一个channelScrollView库的时候.在每次进入下面这个循环的时候.就会崩溃 - (void)setTitleArray:(NSArray<N ...

  2. 安卓编译Release版本

    背景: 一般在Android Studio里编译出来的是Debug,那如何编译Release版本呢? 解决方案: 访问菜单"Build">"Select Build ...

  3. Linux环境Release版本的符号表剥离及调试方法

    Linux环境Release版本符号表剥离及调试方法 目录 Linux环境Release版本符号表剥离及调试方法 前言 1 Release版本剥离符号表 1.1 编译时,进行so库调试信息的剥离 1. ...

  4. Linux下的十个好用的命令工具:查看系统版本,显示目录的大小,查看硬盘HDD/SSD,硬盘测速,ssh时自动输入密码,查看程序的内存使用情况,查看I/O的速度,查看ssh密码错误日志,查找文件

    文章目录 1.查看系统版本 2.显示目录的大小 3.查看硬盘是HDD还是SSD 4.硬盘测速 5.在ssh的时候自动输入密码 6.查看程序的内存使用情况 7.查看I/O的速度 8.查看ssh密码错误日 ...

  5. 软件Release版本异常捕获程序(BugReport)

    软件Release版本异常捕获程序(BugReport) http://wangzai9931.blog.51cto.com/168627/164084 2009-06-08 23:09:43 标签: ...

  6. 让VC编译的Release版本程序在其他机器上顺利运行

    让VC编译的Release版本程序在其他机器上顺利运行 Posted on 2011-07-29 15:06 单鱼游弋 阅读(939) 评论(0) 编辑 收藏 链接的时候分静态链接和动态链接两种. 静 ...

  7. 小程序swiper-item内容过多显示不全的解决方案

    小程序swiper-item内容过多显示不全的解决方案 参考文章: (1)小程序swiper-item内容过多显示不全的解决方案 (2)https://www.cnblogs.com/bin521/p ...

  8. 【GDB调试-4】调试Release版本程序

    文章目录 一.Debug和Release 1.1 Debug版本 1.2 Release版本 1.3 区别 二.使用GDB调试Release 版本程序 一.Debug和Release 1.1 Debu ...

  9. GNU 工具链调试信息分离和挂载:支持 GDB 调试 RELEASE 版本程序

    GNU 工具链调试信息分离和挂载:支持 GDB 调试 RELEASE 版本程序 一般地,release 版本的程序都不带调试信息,无法使用 gdb 调试. GNU 编译工具链和二进制工具链做法如下: ...

最新文章

  1. 《Adobe InDesign CS6中文版经典教程》—第2课2.1节概述
  2. JPEG算法概述及实现
  3. Form 中FND_Message的用法总结
  4. python udp_如何用python方法检测UDP端口
  5. 浦东新区2019年下半年部分街镇社区工作者和部分单位编外人员公开招聘考试大纲...
  6. JS基础:求一组数中的最大最小值,以及所在位置
  7. PostgreSQL备份之omniPITR
  8. Linux 日志定时轮询流程详解
  9. MacOS入门技巧分享
  10. 区块链、无人驾驶、量子计算、感知智能……2050 年的技术什么样?
  11. 模拟太阳系的html,three.js模拟实现太阳系行星体系功能
  12. java swing 图片gif_Java swing显示gif
  13. CenterNet代码解析-ctdet目标检测
  14. 虚拟机无法ping通物理机解决方案
  15. 移动端web设计尺寸_移动端H5页面的设计稿尺寸大小规范
  16. 艾司博讯:在拼多多开店都有什么步骤
  17. 计算机中的位,字节,字,字长的概念
  18. java循环购物车结算系统,购物车js代码_JS实现购物车商品列表结算功能代码
  19. Failed to execute goal org.apache.maven.plugins:maven-resources-plugin:3.1.0:resources (default-reso
  20. 微博引流到公众号继续阅读,需要跳转链接到微信打开继续付费阅读,如何设置这个跳转链接呢?

热门文章

  1. Windows 右键“打开文件位置”找不到应用程序
  2. 孩子被欺负了,父母该如何做才是上策
  3. 如何在 ggplot2 中删除网格线(附示例)
  4. OS X自带数码测色计的使用
  5. 当我有一天走了,不再烦你了,你会想我吗?
  6. 铨顺宏RFID:超高频率RFID电子标签类型及运用
  7. 复制(克隆)节点node . cloneNode ( )深拷贝浅拷贝
  8. 青龙面板-康师傅畅饮社
  9. 谁不需要赚钱 -- 想,还要敢想
  10. 查看PI日志保留时间