我正在使用D3DCompile2()编译着色器文件,该文件用编译的字节代码填充ID3DBlob。
但是我需要将编译后的缓冲区从ID3DBlob填充到std :: vector容器中。 ID3DBlob具有获取缓冲区指针和缓冲区大小的方法,如下所示:
LPVOID GetBufferPointer();
SIZE_T GetBufferSize();
如何以最佳方式用ID3DBlob中的缓冲区填充std :: vector?
答案 0 :(得分:2)
我不确定如何解释“最佳可行方式”,但从语法上讲,这是一种非常干净的方式。
using buffer_t = std::vector<unsigned char>;
auto *p = reinterpret_cast<unsigned char *>(d3dblob->GetBufferPointer());
auto n = d3dblob->GetBufferSize();
buffer_t buff;
buff.reserve(n);
std::copy(p, p+n, std::back_inserter(buff))