単一の2次元テクスチャを出力する場合
(キューブマップやミップマップを使わない)単一の2次元テクスチャはこれでいける。
#include <ScreenGrab.h>
if(FAILED(SaveDDSTextureToFile(deviceContext, texture, L"filename.dds")))
{
return false;
}
ScreenGrab.hはDirectXTexとDirectXTKのどちらにも含まれているのでどっちを使っても変わらない。
それ以外を出力する場合
ドキュメントによると、それ以外は(1次元テクスチャも含めて)SaveDDSTextureToFile関数では対応していないので、代わりに次のように書く。
#include <DirectXTex.h>
DirectX::ScratchImage image;
if(FAILED(CaptureTexture(device, deviceContext, texture, image)))
{
return false;
}
if(FAILED(SaveToDDSFile(image.GetImages(), image.GetImageCount(), image.GetMetadata(), DDS_FLAGS_NONE, L"filename.dds")))
{
return false;
}
知らずにSaveDDSTextureToFileで保存しちゃっても別にエラーとかは返してくれないんだなあ・・・。ちょっとはまったのでメモ。