1

我正在尝试创建一个具有 CPU 写访问权限的 Texture2D 数组。详细来说,我使用的代码如下所示:

D3D10_TEXTURE2D_DESC texDesc;

texDesc.Width               = 32;
texDesc.Height              = 32;
texDesc.MipLevels           = 1;
texDesc.ArraySize           = 2;
texDesc.SampleDesc.Count    = 1;
texDesc.SampleDesc.Quality  = 0;
texDesc.Usage               = D3D10_USAGE_DYNAMIC;
texDesc.CPUAccessFlags      = CPU_ACCESS_WRITE;
texDesc.Format              = DXGI_FORMAT_R32G32B32_FLOAT;
texDesc.BindFlags           = D3D10_BIND_SHADER_RESOURCE;
texDesc.MiscFlags           = 0;

ID3D10Texture2D* texture2D;
CHECK_SUCCESS(device->CreateTexture2D(&texDesc, NULL, &texture2D));

但是,这会因 E_INVALIDARG 而失败。创建具有相同尺寸(即 32x32x2)和参数的 3D 纹理效果很好,但在这种情况下并不需要。有谁知道为什么这个设置无效?

4

1 回答 1

0

您需要提供一个长度为 texDesc.ArraySize 的 D3D11_SUBRESOURCE_DATA 数组作为 CreateTexture2D() 的第二个参数的输入。

如需更多帮助,请参阅此示例

于 2013-03-07T12:46:30.823 回答