使用D3D11_BOX调用CopySubresourceRegion后转cv mat黑屏求助
问题分析与解决
你的问题根源在于D3D11_BOX的参数设置错误:
D3D11_BOX的right是左边界 + 区域宽度,bottom是上边界 + 区域高度,而非和left/top取相同值。- 你当前设置的
my_box.right = 1600、my_box.bottom = 480,导致这个选区的宽度和高度均为0,根本没有复制到任何像素,转成cv::Mat后自然显示黑屏。
正确参数设置
要提取640x640的区域,参数应修改为:
my_box.left = 1600; my_box.top = 480; my_box.right = 1600 + 640; // 左边界 + 区域宽度 my_box.bottom = 480 + 640; // 上边界 + 区域高度 my_box.front = 0; my_box.back = 1; // 2D纹理保持front=0、back=1即可
额外注意事项
- 确认原DX11纹理的分辨率足够容纳该选区,比如原纹理宽度需≥2240、高度需≥1120,避免复制时出现越界问题。
- 检查
CopySubresourceRegion的其他参数(如目标纹理子资源索引、目标坐标)是否匹配预期。
内容的提问来源于stack exchange,提问作者user19250735
相关产品推荐
相关产品推荐

