c++ - DirectX11 如何从 unsigned char * 数据创建 Texture2D

标签 c++ graphics directx directx-11 texture-mapping

我有一个 GetCamImage 函数,它从相机返回图像:

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

我需要根据这些数据创建 ID3D11Texture2D。我如何在 DirectX 11 中执行此操作?

谢谢

最佳答案

这取决于 p 中实际内容的格式,以及宽度、高度和步幅。假设图像是 RGBA 32 位格式,具有简单的字节间距对齐方式,大小为 w by 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))
   ...

关于c++ - DirectX11 如何从 unsigned char * 数据创建 Texture2D,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28883523/

相关文章:

java - 使用图形 Java 进行绘图的问题

c++ - GD 图片库 : Range of colour component arguments for TrueColor images

c++ - 为什么编译器对该数组中的间接级别感到困惑?

c++ - Direct2D 保存渲染结果

c++ - 如何配置 Jenkins 以使用 Qt 构建解决方案?

c++ - 只读内存映射寄存器在 C 中定义为 `volatile const` 但在 C++ 中仅定义为 `volatile`

c++ - 如何现代化 VC++17/20 的分配器适配器

c++ - 如何从C :\Windows\winsxs?中删除一个文件夹

java - java中如何让图形从屏幕上消失?

Directx顶点渲染: unable to get texture to display correctly for trapetzoids