c++ - 使用 Directx 11 c++ 提高将纹理保存到文件的速度
问题描述
我有一个基于 DirectX11 的渲染器,我需要将大量渲染图像保存到硬盘上。我使用了 SaveWICTextureToFile 但需要 0.2 秒来保存每个图像。图像以 1024x768 的分辨率保存。
这是保存图像的代码:
ComPtr<ID3D11Texture2D> backBuffer;
HRESULT hr = _swapChain->GetBuffer(0, __uuidof(ID3D11Texture2D), reinterpret_cast<LPVOID*>(backBuffer.GetAddressOf()));
throwIfFail(hr, "Unable to get a buffer");
#ifdef LOG
auto end = high_resolution_clock::now();
wchar_t str[256];
auto tmp = end;
#endif
hr = SaveWICTextureToFile(_context.Get(), backBuffer.Get(), GUID_ContainerFormatJpeg, w.c_str()/*,&GUID_WICPixelFormat32bppBGRA*/);
//hr = SaveDDSTextureToFile(_context.Get(), backBuffer.Get(), w.c_str()/*,&GUID_WICPixelFormat32bppBGRA*/);
#ifdef LOG
end = high_resolution_clock::now();
wsprintf(str, L"DXRender::saveLastRenderToFile: %d \n", duration_cast<microseconds>(end - tmp).count());
OutputDebugString(str);
tmp = end;
#endif
throwIfFail(hr, "Unable to save buffer");
如何减少保存每张图像所需的时间?
解决方案
推荐阅读
- ecmascript-6 - 为什么类 getter 转换为可枚举属性?
- python - crontab 从未在 Ubuntu 上运行
- r - 在数据框中查找最接近的匹配值并返回索引
- angular - 如何从模态向其父组件发出事件
- python - 将 Anaconda 添加到 PATH 后,Jupyter Notebook 无法打开?
- django - 如何使博客标题对用户唯一?
- python-3.x - 将 UNIX 时间戳转换为日期?
- r - 如何交换 facet_wrap 的两个图
- visual-studio-code - VSCode - 从 cli 打开远程
- excel - 如果单元格包含 VBA 中的数字,如何复制相应的行标题和列标题?