代码之家  ›  专栏  ›  技术社区  ›  June Hee Lee

如何创建交换链格式DXGI\u format\u 420\u不透明?

  •  0
  • June Hee Lee  · 技术社区  · 8 年前

    之前 swapchain 设置为 RGB32

    所以我改变了 swapChain 格式设置为 DXGI_FORMAT_420_OPAQUE .

    DXGI_SWAP_CHAIN_DESC1 swapChainDesc = { 0 };
    
    swapChainDesc.Width = 0; 
    swapChainDesc.Height = 0;
    swapChainDesc.Format = DXGI_FORMAT_420_OPAQUE;// DXGI_FORMAT_B8G8R8A8_UNORM
    swapChainDesc.Stereo = false;
    swapChainDesc.SampleDesc.Count = 1;
    swapChainDesc.SampleDesc.Quality = 0; 
    swapChainDesc.BufferUsage = DXGI_USAGE_RENDER_TARGET_OUTPUT;
    swapChainDesc.BufferCount = 2; 
    swapChainDesc.Scaling = DXGI_SCALING_STRETCH;
    swapChainDesc.SwapEffect = DXGI_SWAP_EFFECT_DISCARD;
    swapChainDesc.Flags = 0;
    
    
    dxgiFactory->CreateSwapChainForHwnd(_direct3DDevice, _hwnd, &swapChainDesc, nullptr, nullptr, &_DXGISwapChain);
    
    
    IDXGISurface *dxgiBackBuffer;
    _DXGISwapChain->GetBuffer(0, IID_PPV_ARGS(&dxgiBackBuffer));
    

    然后在 dxgiBackBuffer 我得到一个 NullReferenceException

    我认为您不能根据 yv12 format .

    你知道我是不是错了吗?

    1 回复  |  直到 8 年前
        1
  •  2
  •   Chuck Walbourn    8 年前

    支持的交换链格式是DXGI中列为“display out”的格式 hardware feature levels