在Direct 3D 11中,可以使用ID3D11DeviceContext::CreateTexture2D創建空紋理,並使用ID3D11DeviceContext::UpdateSubresource方法更新紋理數據,指定在D3D11_BOX結構中更改所需的紋理水平。雖然這是可能的,但在Direct 3D中創建2D紋理後,是否可以更改其紋理級別的數量?在D3D11中創建紋理後的更新紋理
我知道這個問題乞求「你爲什麼要那樣做?!」迴應,但由於一些移植/測試要求,我不得不這樣做。
在Direct 3D 11中,可以使用ID3D11DeviceContext::CreateTexture2D創建空紋理,並使用ID3D11DeviceContext::UpdateSubresource方法更新紋理數據,指定在D3D11_BOX結構中更改所需的紋理水平。雖然這是可能的,但在Direct 3D中創建2D紋理後,是否可以更改其紋理級別的數量?在D3D11中創建紋理後的更新紋理
我知道這個問題乞求「你爲什麼要那樣做?!」迴應,但由於一些移植/測試要求,我不得不這樣做。
不,您不能在紋理創建後更改mipmap的數量。您只能創建另一個紋理,並使用ID3D11DeviceContext::CopySubresourceRegion複製所需的mipmap(儘管直接在具有正確mipmap級別的紋理上工作會更好)。
我有點期待這個,無論如何,謝謝你的確認。 – legends2k
可選地,可以在創建期間將D3D11_TEXTURE2D_DESC中的MipLevels參數設置爲0,以便根據寬度和高度D3D將mip級別設置爲最大值(同時爲SUB_RESOURCE_DATA ptr傳遞nullptr),然後通過UpdateSubresource填充mipmap級別。 – legends2k