directx-11 - DirectX 11 mipmap

标签 directx-11

如何在 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());

Texture now looks like this

最佳答案

好的,我将 srvDesc.Texture2D.MipLevels 更改为 -1,现在它可以工作了。谢谢。

关于directx-11 - DirectX 11 mipmap,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31226292/

相关文章:

c++ - 在 DirectX Windows 8 应用程序中播放声音

directx - 如何在 MinGW 中编译 DirectX 11 应用程序

c++ - 捕获 NTSC 模拟板时 DirectShow 像素乱序

c++ - DX11 DirectInput8Create 导致 LNK2019 错误

c# - 使用C#和EasyHook在DX11游戏(CryEngine)中绘制叠加图

c++ - 纹理显示为黑色

c++ - DirectX 11 帧缓冲区捕获(C++,无 Win32 或 D3DX)

c++ - Directx 11,将多个纹理发送到着色器

directx - DX11 中的多纹理如何工作?

c# - 以 Win8.1 + Metro 为目标时使用 SharpDX 保存 Texture2D?