我正在尝试使用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纹理效果很好,但在这种情况下不需要。 有谁知道为什么这个设置无效?
答案 0 :(得分:0)
您需要提供长度为texDesc.ArraySize的D3D11_SUBRESOURCE_DATA数组作为CreateTexture2D()的第二个参数的输入。
如需更多帮助,请参阅此example。