“我欢欣雀跃地打开《3D programming with Directx12》,准备接受D3D的洗礼,然后就卡在了 chapter 0 。”——Liez
100%纯小白的chapter 0(就是连第一章都没到的开头那个BoxApp示例= - =)错误总集。
错误一:
运行dxd12程序时出现HR failed问题
找到原因在于win10需要自行添加图形工具(Graphics Tool)。
但是在我的win10系统中添加可选工具是一片空白,问题原因,【服务】中“windows update”被禁用。(所以系统更新也会报错,错误编号0x80240442)
解决方法:
【运行】(win+R)→输入service.msc回车打开服务窗口→右侧找到“Windows Update”检查是否禁用,如果是,你就是遇到和我一样的问题,启用该服务。
如图,已经可以下载安装图形工具了
微软的官方客服能提出的最靠谱的答案就是让用户去打客服电话了呵呵。 相关问题 (已添加回答)
错误二:
找到原因——书上有说需要copy文件BoxApp.cpp和Shader文件夹,于是我就把它们直接拖到正打开的vs工程里了,正确做法是copy这两样然后粘贴到工程文件夹里,然后再在打开的工程中添加现有项。所以这两个操作不是重复(我以为是重复= - =)
网上还有一个类似的问题,也是d3dutil.cpp报错,line101,那个是因为在创建项目时没有uncheck右下方的第一个选项“创建解决目录”导致,这点书上提到了的,仔细看书。
错误三:
运行后报错"error X3501: 'main': entrypoint not found"。
原因在于渲染文件.hlsl,右键点开hlsl文件的属性窗口,
“entrypoint”就是“入口点名称”,原始情况如上图,为main函数,然而打开hlsl文件看一看,压根没有main()嘛,只有一个VS函数,那就决定是你了= - =
着色器类型一栏,可以保持上图的默认,也没问题,但是如果要选的话就要根据shader代码内容来选了,这里明显是顶点渲染(Vertex shader,这里要用点shader常识),如果选了其他的着色器就会报错,更改如下就可以顺利运行了。
运行成功:
(当然你要是不走运继续出问题。。。那可真是大快人心啊)
以上。