c++ - 从 ID3DBLob 填充 std::vector<byte>

标签 c++ directx-11

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

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

LPVOID GetBufferPointer();

SIZE_T GetBufferSize();

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

最佳答案

我不确定如何解释“最佳可能方式”,但从句法上讲,这是一种非常简洁的方式。

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

关于c++ - 从 ID3DBLob 填充 std::vector<byte>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33032143/

相关文章:

c++ - 如何在 QT 中通过 C++ 监控 Linux 中的服务?

visual-c++ - 桌面复制 (DirectX) 屏幕捕获无法提供屏幕更新

c++ - 如何正确使用 XMVECTOR 成员变量

directx - 我应该立即创建 CUDA 应用程序,还是等待 DirectX 11?

android - 使用 C++ 的 NativeActivity

c++ - 将 c 字符串的地址转储到 ostream?

c++ - 如何忽略C++中的某些输入行?

python - 一维随机游走期望值

c++ - 使用来自相机的初始数据创建 d3d11Texture2D

c++ - CheckMultisampleQualityLevels(...) 表示该卡不支持 MSAA(例如我的 GeForce GTX 780 不支持)?