LoginSignup
1
3

More than 5 years have passed since last update.

DirectXTexやDirectXTKを使ってテクスチャをDDS出力するときの注意

Posted at

単一の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で保存しちゃっても別にエラーとかは返してくれないんだなあ・・・。ちょっとはまったのでメモ。

1
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
3