如何在 DirectX 中创建纹理 mipmap?这是我的代码,我尝试这样做,但它不起作用:
D3D11_TEXTURE2D_DESC desc{};
desc.Width = dims.X;!
desc.Height = dims.Y;
desc.ArraySize = 1;
desc.SampleDesc.Count = 1;
desc.Format = DXGI_FORMAT_B8G8R8A8_UNORM;
desc.BindFlags = D3D11_BIND_SHADER_RESOURCE | D3D11_BIND_RENDER_TARGET;
desc.MiscFlags = D3D11_RESOURCE_MISC_GENERATE_MIPS;
D3D11_SUBRESOURCE_DATA initData{};
initData.pSysMem = pixels;
initData.SysMemPitch = sizeof(unsigned char) * dims.X * 4;
D3D11_SHADER_RESOURCE_VIEW_DESC srvDesc{};
srvDesc.Format = desc.Format;
srvDesc.ViewDimension = D3D11_SRV_DIMENSION_TEXTURE2D;
srvDesc.Texture2D.MipLevels = 1;
Device->CreateTexture2D(&desc, nullptr, Texture.GetAddressOf());
Device->CreateShaderResourceView(Texture.Get(), &srvDesc, ShaderResource.GetAddressOf());
DeviceContext->UpdateSubresource(Texture.Get(), 0, 0, pixels, initData.SysMemPitch, 0);
DeviceContext->GenerateMips(ShaderResource.Get());
最佳答案
好的,我将 srvDesc.Texture2D.MipLevels 更改为 -1,现在它可以工作了。谢谢。
关于directx-11 - DirectX 11 mipmap,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31226292/