繁体   English   中英

DirectX11如何从未签名的char *数据创建Texture2D

[英]DirectX11 How to CreateTexture2D from unsigned char * data

我有一个功能GetCamImage,它从相机返回图像为:

unsigned char* p = GetCamImage(...);

我需要从此数据创建ID3D11Texture2D。 如何在DirectX 11中做到这一点?

谢谢

它取决于该p实际内容的格式以及宽度,高度和步幅。 假设图像是RGBA 32位格式,具有简单的字节间距对齐,并且大小为w × h ,那么它将是简单的:

D3D11_SUBRESOURCE_DATA initData = {0};
initData.pSysMem = (const void*)p;
initData.SysMemPitch = w * 4;
initData.SysMemSlicePitch = h * w * 4;

D3D11_TEXTURE2D_DESC desc;
desc.Width = w;
desc.Height = h;
desc.MipLevels = 1;
desc.ArraySize = 1;
desc.Format = DXGI_FORMAT_R8G8B8A8_UNORM;
desc.SampleDesc.Count = 1;
desc.SampleDesc.Quality = 0;
desc.Usage = D3D11_USAGE_DEFAULT;
desc.BindFlags = D3D11_BIND_SHADER_RESOURCE;
desc.CPUAccessFlags = 0;

ID3D11Texture2D* tex = nullptr;
HRESULT hr = d3dDevice->CreateTexture2D( &desc, &initData, &tex );
if (FAILED(hr))
   ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM