E_INVALIDARG One or more arguments are invalid.
这个报错是最常见的报错了,一般是调用D3D的函数时的参数设置不对
,或者参数设置无效
,或者是当前系统环境不支持你所设置的参数
,使用Visual studio进行学习开发的话,多注意Output窗口,一般会在报错提示的前后有更详细的提示
Invalid resource barrier type. [ RESOURCE_MANIPULATION ERROR #519: RESOURCE_BARRIER_INVALID_TYPE]
这个报错提示还是很清楚的,我出错的原因是
D3D12_RESOURCE_BARRIER resourceBarrier;
resourceBarrier.Transition.pResource = mRenderTargets[mFrameIndex].Get();
resourceBarrier.Transition.StateBefore = D3D12_RESOURCE_STATES::D3D12_RESOURCE_STATE_PRESENT;
resourceBarrier.Transition.StateAfter = D3D12_RESOURCE_STATES::D3D12_RESOURCE_STATE_RENDER_TARGET;
resourceBarrier.Transition.Subresource = D3D12_RESOURCE_BARRIER_ALL_SUBRESOURCES;
resourceBarrier.Flags = D3D12_RESOURCE_BARRIER_FLAGS::D3D12_RESOURCE_BARRIER_FLAG_NONE;
//这一句没有写的话就会报这个错误,加上就好了,当然,这个Type可以选择合法的其他Type
resourceBarrier.Type = D3D12_RESOURCE_BARRIER_TYPE::D3D12_RESOURCE_BARRIER_TYPE_TRANSITION;
mCommandList->ResourceBarrier(1, &resourceBarrier);
编译报错: Severity Code Description Project File Line Suppression State Error X3501 ‘main’: entrypoint not found D3D12Guide E:\D3D12Guide\D3D12Guide\FXC 1
这个报错是因为写的shader文件没有main函数,有几种做法:
- 若你使用的是
D3DCompileFromFile
编译,首先检查你传递的路径对不对 - 若你的shader文件中可以添加main函数,加上就好了
- 或你使用的是
D3DCompileFromFile
进行shader编译的话有下面两种做法可以选择-
在build的时候不编译该shader文件
, 在Visual studio的 solution Explorer中找到你的shader文件,右键,
将属性中的配置改为图中所示即可 -
告诉Visual studio你是用的是自己的编译器(也就是在运行时编译)
,还是在shader文件上鼠标右键
改为如图所示即可
部分内容参考自*
-