【发布时间】:2014-06-04 18:16:27
【问题描述】:
我在从 I420 数据创建 DirectX 纹理时遇到问题。当我尝试添加纹理时,我的程序崩溃了。我正在 WinRT Metro 应用程序上使用 Windows 8.0。你能帮我吗?我的代码如下:
D3D11_TEXTURE2D_DESC texDesc = {};
texDesc.Width = 352;
texDesc.Height = 288;
texDesc.MipLevels = 1;
byte *bitmapData;
int datasize = read_whole_file_into_array(&bitmapData , "1.i420"); //bitmapData contains the I420 frame
D3D11_SUBRESOURCE_DATA frameData;
frameData.pSysMem = bitmapData;
frameData.SysMemSlicePitch = 0;
//frameData.SysMemPitch = texDesc.Width; //Unsure about it
texDesc.ArraySize = 1;
texDesc.Format = DXGI_FORMAT_420_OPAQUE;
texDesc.SampleDesc.Count = 1;
texDesc.SampleDesc.Quality = 0;
texDesc.BindFlags = D3D11_BIND_DECODER;
texDesc.MiscFlags = 0;
texDesc.Usage = D3D11_USAGE_DEFAULT;
texDesc.CPUAccessFlags = 0;
m_d3dDevice->CreateTexture2D (&texDesc, &frameData, &m_background);
m_spriteBatch->AddTexture(m_background.Get());
请帮忙。提前致谢。
附加信息:这个 MSDN link 包含类似的问题,但是在我的情况下,我已经有一个包含帧的字节数组。我已经在那个论坛上问过类似的问题。
【问题讨论】:
标签: c++ windows-runtime textures video-processing directx-11