从 ID3DBLob 填充 std::vector<byte>
Filling std::vector<byte> from ID3DBLob
我正在使用 D3DCompile2() 编译着色器文件,它用编译后的字节代码填充 ID3DBlob。
但我需要将编译后的缓冲区从 ID3DBlob 填充到 std::vector 容器中。 ID3DBlob 有获取缓冲区指针和缓冲区大小的方法如下:
LPVOID GetBufferPointer();
SIZE_T GetBufferSize();
如何以最佳方式用 ID3DBlob 中的缓冲区填充 std::vector?
我不确定如何解释 "best possible way",但从句法上讲,这是一种非常简洁的方式。
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))
我正在使用 D3DCompile2() 编译着色器文件,它用编译后的字节代码填充 ID3DBlob。
但我需要将编译后的缓冲区从 ID3DBlob 填充到 std::vector 容器中。 ID3DBlob 有获取缓冲区指针和缓冲区大小的方法如下:
LPVOID GetBufferPointer();
SIZE_T GetBufferSize();
如何以最佳方式用 ID3DBlob 中的缓冲区填充 std::vector?
我不确定如何解释 "best possible way",但从句法上讲,这是一种非常简洁的方式。
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))