从ID3DBLob填充std :: vector <byte>

时间:2015-10-09 07:13:48

标签: c++ directx-11

我正在使用D3DCompile2()编译着色器文件,该文件用编译的字节代码填充ID3DBlob。

但是我需要将编译后的缓冲区从ID3DBlob填充到std :: vector容器中。 ID3DBlob具有获取缓冲区指针和缓冲区大小的方法,如下所示:

LPVOID GetBufferPointer();

SIZE_T GetBufferSize();

如何以最佳方式用ID3DBlob中的缓冲区填充std :: vector?

1 个答案:

答案 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))