1
我試圖創建一個具有CPU寫入權限的Texture2D數組。具體來說,我使用的代碼如下所示:創建一個具有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紋理效果很好,但在這種情況下不需要。 有誰知道爲什麼這個設置不會有效?
我知道,並與ArraySize等於1這將工作。然而,在這種情況下,我需要一個具有寫訪問權限的紋理數組(即多個片)。 – user2139157 2013-03-07 15:04:07
對不起,我誤解了,希望我的編輯能幫助你。 – alanw 2013-03-08 02:37:06
在編輯中提到的示例中,提供子資源指針在他嘗試創建不可變的紋理數組時是有意義的。但是,我想創建一個動態緩衝區,因爲我希望能夠多次更新紋理的內容。總之,我不需要一個不可變的緩衝區,因此不需要提供數據。然而,我測試了它,並仍然得到相同的錯誤(即使提供所描述的數據)。 – user2139157 2013-03-08 07:57:06