トップページ > 記事閲覧
SaveDrawValidGraphToDDS関数の不具合
名前:gufo 日時: 2017/03/19 05:28

いつもお世話になっております。 以前スレッドを立てた際にSaveDrawValidGraphToDDS関数を実装してもらったものですが 以下のコードで作成したddsファイルをDirectX Texture Toolで開こうとするとエラーが発生します。 お手数ですが確認していただけると幸いです。 #include "DxLib.h" int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) { SetUseDirect3DVersion(DX_DIRECT3D_11); if (DxLib_Init() == -1) // DXライブラリ初期化処理 { return -1; // エラーが起きたら直ちに終了 } int Cubemap; SetDrawValidGraphCreateFlag(TRUE); SetCreateDrawValidGraphChannelNum(4); SetDrawValidFloatTypeGraphCreateFlag(TRUE); SetCreateGraphChannelBitDepth(16); SetCubeMapTextureCreateFlag(TRUE); Cubemap = MakeGraph(64, 64); int SizeX; int SizeY; GetGraphSize(Cubemap, &SizeX, &SizeY); SaveDrawValidGraphToDDS(Cubemap, 0, 0, SizeX, SizeY, "cubemap.dds"); DxLib_End(); // DXライブラリ使用の終了処理 return 0; // ソフトの終了 }
メンテ

Page: 1 |

Re: SaveDrawValidGraphToDDS関数の不具合 ( No.1 )
名前:管理人 日時:2017/03/20 01:03

再現用コードの書き込みありがとうございます すみません、ミップマップなしのキューブマップの保存処理にバグがありました 修正版をアップしましたので、よろしければお使いください m(_ _;m https://dxlib.xsrv.jp/temp/DxLibVCTest.exe // Windows版 VisualC++ 用 https://dxlib.xsrv.jp/temp/DxLibBCCTest.exe // Windows版 BorlandC++ 用 https://dxlib.xsrv.jp/temp/DxLibBCC2Test.exe // Windows版 C++ Builder 10.1 Berlin 用 https://dxlib.xsrv.jp/temp/DxLibGCC_MinGWTest.exe // Windows版 MinGW 用 https://dxlib.xsrv.jp/temp/DxLibDotNet.zip // Windows版 .NET用 https://dxlib.xsrv.jp/temp/DxLibAndroidTest.exe // Android版 https://dxlib.xsrv.jp/temp/DxLibMakeTest.exe // ソース (中身を既存のライブラリのファイルに上書きして、BCCをお使いの 場合は『再構築』を、VCをお使いの場合は『リビルド』をして下さい)
メンテ
Re: SaveDrawValidGraphToDDS関数の不具合 ( No.2 )
名前:gufo 日時:2017/03/20 12:52

対応ありがとうございます。 無事ミップマップ無しのキューブマップを保存することができました。 しかし、ミップマップなしのキューブマップをSetRenderTargetToShader()で描画対象とし、DrawPolygon2DToShader()で描画したところ 描画が全く反映されない現象が発生しました。 ミップマップ有りのキューブマップでは正しく描画できています。 こちらの件も確認して頂けると嬉しいです。
メンテ
Re: SaveDrawValidGraphToDDS関数の不具合 ( No.3 )
名前:管理人 日時:2017/03/20 22:46

すみません、Direct3D 11 でミップマップ無しのキューブマップを SaveDrawValidGraphToDDS で 保存すると何も描かれていない DDS ファイルが作成されてしまう状態になっていました 修正版をアップしましたので、よろしければお試しください m(_ _;m https://dxlib.xsrv.jp/temp/DxLibVCTest.exe // Windows版 VisualC++ 用 https://dxlib.xsrv.jp/temp/DxLibBCCTest.exe // Windows版 BorlandC++ 用 https://dxlib.xsrv.jp/temp/DxLibBCC2Test.exe // Windows版 C++ Builder 10.1 Berlin 用 https://dxlib.xsrv.jp/temp/DxLibGCC_MinGWTest.exe // Windows版 MinGW 用 https://dxlib.xsrv.jp/temp/DxLibDotNet.zip // Windows版 .NET用 https://dxlib.xsrv.jp/temp/DxLibAndroidTest.exe // Android版 https://dxlib.xsrv.jp/temp/DxLibMakeTest.exe // ソース (中身を既存のライブラリのファイルに上書きして、BCCをお使いの 場合は『再構築』を、VCをお使いの場合は『リビルド』をして下さい)
メンテ
Re: SaveDrawValidGraphToDDS関数の不具合 ( No.4 )
名前:gufo(解決) 日時:2017/03/21 19:40

修正ありがとうございます。 無事希望通りの処理ができるようになりました。
メンテ
Re: SaveDrawValidGraphToDDS関数の不具合 ( No.5 )
名前:gufo 日時:2017/03/31 17:10

解決済みのスレッドをまた上げてしまって申し訳ありません。 厳密な再現条件は分からないのですが不具合と思われる状況が起こりました。 下記コードのようにミップマップ付きキューブマップのミップレベル0ではない面のみに描画すると 描画内容が反映されないようです。 int Cubemap; SetDrawValidGraphCreateFlag(TRUE); SetCreateDrawValidGraphChannelNum(4); SetDrawValidFloatTypeGraphCreateFlag(TRUE); SetCreateGraphChannelBitDepth(16); SetCubeMapTextureCreateFlag(TRUE); SetCreateDrawValidGraphMipLevels(2); Cubemap = MakeGraph(64, 64); SetRenderTargetToShader(0, Cubemap, 0, 1); //DrawPolygon2DToShaderなどの描画処理 int SizeX; int SizeY; GetGraphSize(Cubemap, &SizeX, &SizeY); SaveDrawValidGraphToDDS(Cubemap, 0, 0, SizeX, SizeY, "cubemap.dds"); 何度も申し訳ありませんが確認して頂けると助かります。
メンテ
Re: SaveDrawValidGraphToDDS関数の不具合 ( No.6 )
名前:管理人 日時:2017/04/02 14:35

何度も申し訳ありません 手元の環境でも条件次第で正しくキューブマップの画像情報が保存されない現象を確認しました 幾つか試したところ ・キューブマップのミップマップレベルを最大にして、全ての面&レベルに DrawPolygon3DToShader などで  描画した場合は全ての面&レベルに描画されたものが保存される ・キューブマップのミップマップレベルを2にして、全ての面&レベルに DrawBox などの2D描画関数で  描画した場合は全ての面のレベル0にしか描画されていない状態のものが保存される ・キューブマップのミップマップレベルを1にして、一つの面にのみ DrawBox などの2D描画関数で  描画した場合はどの面にも描画されていない状態のものが保存される ・キューブマップのミップマップレベルを1にして、全ての面に DrawBox などの2D描画関数で  描画した場合は全ての面に描画されたものが保存される など、正しく描画結果が保存されない条件がまだ謎で、原因の究明に少し時間がかかりそうです 用事がある関係でこの週末の作業時間が残りわずかなので、修正版がアップできるのは 明日以降になるかもしれません m(_ _;m
メンテ
Re: SaveDrawValidGraphToDDS関数の不具合 ( No.7 )
名前:管理人 日時:2017/04/05 02:13

お待たせしました、キューブマップのミップマップレベル0以外の面のみに描画すると 描画内容が反映されないバグを修正したバージョンをアップしましたので、よろしければお試しください m(_ _;m https://dxlib.xsrv.jp/temp/DxLibVCTest.exe // Windows版 VisualC++ 用 https://dxlib.xsrv.jp/temp/DxLibBCCTest.exe // Windows版 BorlandC++ 用 https://dxlib.xsrv.jp/temp/DxLibBCC2Test.exe // Windows版 C++ Builder 10.1 Berlin 用 https://dxlib.xsrv.jp/temp/DxLibGCC_MinGWTest.exe // Windows版 MinGW 用 https://dxlib.xsrv.jp/temp/DxLibDotNet.zip // Windows版 .NET用 https://dxlib.xsrv.jp/temp/DxLibMakeTest.exe // ソース (中身を既存のライブラリのファイルに上書きして、BCCをお使いの 場合は『再構築』を、VCをお使いの場合は『リビルド』をして下さい) 不具合の原因はそれなりに根が深く、幾つかの処理に変更を加えることになったので、 一応最低限の確認はしましたが「本件の問題は修正されたけど他の不具合が発生した」 ということがあるかもしれません m(_ _;m
メンテ
Re: SaveDrawValidGraphToDDS関数の不具合 ( No.8 )
名前:gufo(解決) 日時:2017/04/05 17:15

お忙しい中対応していただき、ありがとうございます。 無事、ミップマップレベル0以外の面のみの描画が成功しました。 今のところは他の不具合も確認できませんので解決済みとします。 何度もお付き合い頂きありがとうございました。
メンテ

Page: 1 |

題名
名前
コメント
パスワード (記事メンテ時に使用)

   クッキー保存