Okey,看起来我是第一个在 UE4 源代码中使用 Create2DArray() func 的人,因为 Visual Code 没有找到任何引用。
我想创建带有 TexCreate_TargetArraySlicesIndependently 标志的 MSAA 纹理的 Texture2DArray,以便能够分别将数组的每个切片绑定为 RT。
所以,我写了这段代码:
FRDGTextureDesc Desc(FRDGTextureDesc::Create2DArray(SceneTextureExtent, PF_B8G8R8A8, FClearValueBinding::White, TexCreate_RenderTargetable | TexCreate_TargetArraySlicesIndependently | TexCreate_ShaderResource, ArraySize));
Desc.NumSamples = SceneDepthTexture->Desc.NumSamples;
Textures = CreateTextureMSAA(GraphBuilder, Desc, TEXT("MyTexture"), GFastVRamConfig.Texture);
但是当我尝试将 i-slice 绑定到 RT 时,我从 D3D11Resources.h 得到断言错误:
if (bCreatedRTVsPerSlice)
{
check(ArraySliceIndex >= 0);
ArrayIndex = MipIndex * RTVArraySize + ArraySliceIndex;
}
else
{
// Catch attempts to use a specific slice without having created the texture to support it
check(ArraySliceIndex == -1 || ArraySliceIndex == 0); <- HERE
}
所以标志不起作用,不为每个切片创建 RTV?可能在 CreateTextureMSAA() 中出现问题。那么我需要使用哪个函数来创建 MSAA 纹理数组?