最近系统出现了一个问题:在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. 求数组最大数,该数为数组中某两个数相加
  2. 百度Apollo无人车能力降维释放,打造智能汽车现在可以像拼乐高
  3. KVM — 内存虚拟化
  4. 【算法学习笔记】哈夫曼树的构建和哈夫曼编码的实现代码
  5. 如何在缺乏商业项目经验的前提下成功通过面试,兼说我如何甄别非商业项目经验...
  6. [原创]一个shell小案例
  7. 牛逼!Python分析5万多场英雄联盟比赛,教你轻松预测胜负!
  8. NBSI2内部功能实现大揭谜
  9. matlab表示dbm,[转载]dBm换算成mW
  10. mac1200r 服务器无响应,新版水星(MERCURY)MAC1200R路由器怎么设置?
  11. JAVA学习:基础入门(下)
  12. 漫画 | 程序员大战公务员!到底谁猛?
  13. 漏洞修复:Often Misused: HTTP Method Override
  14. NX二次开发-获得图纸视图的名字UF_OBJ_ask_name
  15. 最详细的Excel模块Openpyxl教程——基础操作
  16. 酷炫多彩的个性化词云可视化
  17. 福昕阅读器 单个标签页单个窗口展示
  18. 汽车行业使用LDO直接连接电池的应用
  19. Oracle之函数concat、lpad
  20. JAVA理论基础题库_干货|JAVA基础题库

热门文章

  1. 【瑕疵检测】瓶盖瑕疵检测【含Matlab源码 730期】
  2. 3d_coordinates 测量世界坐标中的倾斜物体
  3. windows上使用telnet测试端口号通不通
  4. WM SCM630 笔记 Unit 4 Putaway Control (1)
  5. viewpage显示服务器图片,ViewPager + PhotoView--图片查看器,类似今日头条图片查看
  6. 干货:QQ聊天记录数据分析
  7. 在Matlab中调整函数和输出图片的位置关系(print)
  8. 如何编写一个使用Store更新复选框的CheckboxGroup的插件
  9. Python: 正则表达式匹配多行,实现多行匹配模式
  10. 增加tomcat的性能和稳定性