在 Direct 3D 11 中,可以使用ID3D11DeviceContext::CreateTexture2D创建一个空纹理并使用ID3D11DeviceContext::UpdateSubresource方法更新纹理数据,指定所需的 mip 级别以在 D3D11_BOX 结构中进行更改。虽然这是可能的,但是否可以在 Direct 3D 中创建 2D 纹理后更改其 mip 级别的数量?
我知道这个问题引出了一个“你为什么要那样做?!” 响应,但由于一些移植/测试要求,我不得不这样做。
在 Direct 3D 11 中,可以使用ID3D11DeviceContext::CreateTexture2D创建一个空纹理并使用ID3D11DeviceContext::UpdateSubresource方法更新纹理数据,指定所需的 mip 级别以在 D3D11_BOX 结构中进行更改。虽然这是可能的,但是否可以在 Direct 3D 中创建 2D 纹理后更改其 mip 级别的数量?
我知道这个问题引出了一个“你为什么要那样做?!” 响应,但由于一些移植/测试要求,我不得不这样做。
不,您不能在创建纹理后更改 mipmap 的数量。您只能创建另一个纹理并使用ID3D11DeviceContext::CopySubresourceRegion来复制所需的 mipmap(尽管最好直接在具有正确 mipmap 级别的纹理上工作......)。