2017-09-21 11 views
0

以前は、swapchainの設定はRGB32の形式でしたが正常でした。スワップチェーン形式の作成方法DXGI_FORMAT_420_OPAQUE?

yv12データを受信して​​レンダリングします。

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

サポートされているスワップチェーン形式は、DXGI hardware feature levels形式の表に「表示」としてリストされています。 Direct3Dのハードウェア機能レベルでは、YUVフォーマットをサポートしていません。あなたはどこかのシェーダでYUVからRGBへの色空間変換を実行する必要があります。

関連する問題