首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何创建交换链格式DXGI_FORMAT_420_OPAQUE?

如何创建交换链格式DXGI_FORMAT_420_OPAQUE?
EN

Stack Overflow用户
提问于 2017-09-21 08:12:04
回答 1查看 575关注 0票数 0

以前,swapchain设置是RGB32格式,运行良好。

我想接收yv12数据并呈现它。

因此,我将swapChain格式改为DXGI_FORMAT_420_OPAQUE格式。

代码语言:javascript
复制
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创建back缓冲区。

你知道我是不是错了吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-09-22 06:39:20

支持的交换链格式是在DXGI 硬件特征级格式表中被列为“display”的格式。没有Direct3D硬件功能级别支持YUV格式的显示。您必须执行一个YUV到RGB颜色空间转换在一个着色器某处。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46338729

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档