DXライブラリ質問&雑談掲示板2
[トップに戻る] [使いかた] [ワード検索] [管理用]
おなまえ
題  名
メッセージ
削除キー (記事削除用。英数字で8文字以内)
クッキー情報を保存

<管理人>
ご返信は一週間に一度、土日のどちらかで行います。平日は時間に余裕があるときだけご返信します。

[5042] Re:[5041] ご返信 投稿者:korio [5040] 投稿日:2019/09/23(Mon) 01:33 [返信]
ご対応ありがとうございます。 こちらでも正常に動作が確認できました。 お忙しい中お手数おかけいたしました。

[5041] ご返信 投稿者:管理人 投稿日:2019/09/22(Sun) 23:34 [返信]
> korioさん 現象を確認できるファイルをアップしていただきありがとうございます、原因が直ぐに判明しました すみません、DXライブラリ内部で tga形式のファイル( 真っ白テクスチャ用のtga画像 )を扱っていて、 DX_NON_TGA を有効にしていると真っ白テクスチャを使用している描画関数が失敗する( 真っ白テクスチャを CreateGraphFromMem で読み込もうとするも tgaファイルの読み込み処理が無効化されていて失敗する )状態となっていました tgaファイルを内部で使用しないようにプログラムを変更してみましたので、よろしければお試しください m(_ _;m https://dxlib.xsrv.jp/temp/DxLibMakeTest.zip // ソース

[5040] DxMake使用時の3D描画の不具合? 投稿者:korio 投稿日:2019/09/22(Sun) 12:44 [返信]
お世話になっております。 現在制作中のゲームでDXライブラリ(DxMAKE版)を使用させていただいているのですが、 3D描画関数の一部が正常に実行されない(エラーは出ないが描画がされない)問題が発生しております。 拡張命令の有効/無効や浮動小数点モデル、x86/x64の切り替えやDxCompilerConfig.hの見直しをしても こちらでは原因が分からなかったため、使用方法に問題のある点などありましたら教えていただけないでしょうか。 以下のURLにこちらの環境で再現できる最小のプロジェクトファイルをアップロードしました。 22.gigafile.nu/1006-c712b849c11c830b47bcb00572c51e537 発生するバージョン 3.21、3.21a (ほかのバージョンで発生するかは確認していません) 環境情報 MacbookAir 2015(Bootcamp) cpu: core i5-5250U gpu: intel hd graphics 6000 Windows10 Pro(1903) ライブラリ libogg 1.3.4 libvorbis 1.3.6 zlib 1.2.11 libpng 1.6.37 eigen 3.3.7 開発環境 Visual Studio 2019 (16.2.5)

[5039] Re:[5038] ご返信 投稿者:スーパー初心者 投稿日:2019/09/06(Fri) 20:00 [返信]
お返事ありがとうございます > すみません! 1秒は 441000 ではなく 44100 でした… 確かに言われてみれば、1は小数でしたねw 細かい説明&素早い対応ありがとうございました! また何かあった時は質問させてください

[5038] ご返信 投稿者:管理人 投稿日:2019/09/05(Thu) 22:42 [返信]
> スーパー初心者さん すみません! 1秒は 441000 ではなく 44100 でした… なので正しくは 1000 / 44100 = 0.0226757369614512471655328798186秒 ( 1000 + 5000 ) / 44100 = 0.1360544217687074829931972789116秒 となります m(_ _;m > 今後、私のように予備知識のない方が使うと良くて雑音、悪くて無音ループに > 陥ると思うので、もしよろしければ現実的なサンプリング周波数に則った設定を > リファレンスのサンプルに記述していただけると、不幸な事故が起きずに > 済むのではないかと思うのですが、ご一考頂けると幸いです。 ご提案ありがとうございます、早速 LOOPSTART=441000 LOOPLENGTH=1764000 に変更しました( 10秒の位置から40秒の長さの間をループ )

[5037] Re:[5036] ご返信 投稿者:スーパー初心者 投稿日:2019/09/05(Thu) 21:19 [返信]
度々のご回答、ありがとうございます! > 音楽が鳴らなくなったのは恐らくループの範囲が狭すぎるからだと思います 音楽についての知識がなさ過ぎて、弾ける楽器はカスタネットとか のたまうレベルなのでサンプルの単位がよく分かっていなくて 勝手にミリ秒指定だと勘違いしておりました・・・。お恥ずかしい限りです。 つまりは、仮に音楽が44.1KHzの場合はLOOPSTARTに441000を指定してやれば 1秒後にループ開始ということですね! ちなみに、ご提示いただいたリファレンスについては一応目を通しており むしろそのサンプルの設定をそのままコピーして動作確認を致しました。 今後、私のように予備知識のない方が使うと良くて雑音、悪くて無音ループに 陥ると思うので、もしよろしければ現実的なサンプリング周波数に則った設定を リファレンスのサンプルに記述していただけると、不幸な事故が起きずに 済むのではないかと思うのですが、ご一考頂けると幸いです。

[5036] ご返信 投稿者:管理人 投稿日:2019/09/04(Wed) 23:07 [返信]
> スーパー初心者さん 例1でも例2の方でもどちらでも大丈夫です LoadSoundMem の解説に一応 ファイル名_loop.txt についての説明もありますので、 もしまだご覧になられていませんでしたらご確認ください m(_ _)m <LoadSoundMem> https://dxlib.xsrv.jp/function/dxfunc_sound.html#R8N4 音楽が鳴らなくなったのは恐らくループの範囲が狭すぎるからだと思います 指定する数値の単位はサンプルなので、もしサウンドファイルが 44.1KHz の サンプリング周波数だとしますと、 1000 / 441000 = 0.00226757369614512471655328798186秒 ( 1000 + 5000 ) / 441000 = 0.01360544217687074829931972789116秒 なので、0.002秒から0.013秒の範囲をループする指定となりますので、 まだ音楽が始まる前の無音の部分をループしているのだと思います

[5035] Re:[5034] ご返信&質問 投稿者:スーパー初心者 投稿日:2019/09/04(Wed) 05:09 [返信]
お返事が遅くなってしまい、申し訳ありません。 ご提示された方法で解決いたしました! 一応リファレンスは一通り斜め読みしてみたつもりでしたが リファレンス外の関数については想定外でした、ありがとうございました。 今回の問題が解決したのでこちらは必須というわけではありませんが 重ねて質問させて頂きたいのですが、oggファイル以外のmp3などで ループを行うために「ファイル名_loop.txt」を用意すると思うのですが ループ設定のテキストファイルに記述するフォーマットはどのような形なのでしょうか? 例1) LOOPSTART=1000 LOOPLENGTH=5000 なのか 例2) LOOPSTART=1000 LOOPLENGTH=5000 なのか 一応、両方試してみたのですが音楽が鳴らなくなってしまい・・・ 音楽が鳴らない辺り、テキストファイルを読みに行ってるっぽいのは分かったので これも勉強だと思って、DXライブラリのソースを覗いてみたのですが ソースコードが高度過ぎて(駄洒落じゃないです)わけがわからず・・・ 一応、各種文字コードを一度ASCIIに変換してるっぽいことが書かれていたので SJISだったのをUTF-8に保存し直してみたり、BOM付にしてみたりと 色々と試してみたのですが結果変わらずで・・・ 環境を揃えて動的デバッグをしてみれば・・・!とも思ったのですが 本来の目的から逸脱しまくるので質問させて頂きました。 重ね重ね申し訳ありません。

[5034] ご返信 投稿者:管理人 投稿日:2019/09/02(Mon) 22:32 [返信]
> スーパー初心者さん > oggファイルで、ループの開始と終了を指定した場合に > プレイタイプをDX_PLAYTYPE_BACKに指定してもループし続けるのは仕様でしょうか? はい、すみません、仕様となります > 例えば、同じファイルでもフルで再生したい場合とループタグを使用して > ループ再生したい場合とで処理を分岐させたい場合はループタグがあるファイルと > ないファイルとで物理的にファイルを分ける必要があるということでしょうか? いえ、リファレンスには載っていないのですが、ファイルに埋め込まれているループタグを無視するかどうかを設定できる 関数 SetCreateSoundIgnoreLoopAreaInfo というものがありますので、ループさせたくないサウンドハンドルを作成したい際は SetCreateSoundIgnoreLoopAreaInfo( TRUE ); SoundHandle = LoadSoundMem( "SoundFile.ogg" ); SetCreateSoundIgnoreLoopAreaInfo( FALSE ); と、LoadSoundMem で読み込む前に SetCreateSoundIgnoreLoopAreaInfo( TRUE ); を実行すると ループタグが無視して読み込まれ、DX_PLAYTYPE_BACK で再生してもループしないサウンドハンドルとなります よろしければお試しください m(_ _)m

[5033] PlaySoudMemについて 投稿者:スーパー初心者 投稿日:2019/09/02(Mon) 19:30 [返信]
お世話になります。 早速ですが表題の件につきまして質問があります。 PlaySoundMem関数でプレイタイプを設定できると思うのですが oggファイルで、ループの開始と終了を指定した場合に プレイタイプをDX_PLAYTYPE_BACKに指定してもループし続けるのは仕様でしょうか? 例えば、同じファイルでもフルで再生したい場合とループタグを使用して ループ再生したい場合とで処理を分岐させたい場合はループタグがあるファイルと ないファイルとで物理的にファイルを分ける必要があるということでしょうか? 用途としては ゲーム中に流れるBGMはループあり ゲーム内のサウンドトラックとして流す場合はフル再生 といった形で処理を分岐させたいといった感じです。 これに対して、bgm001_full.oggとbgm001.oggという形になるべくなら 分けたくないので質問させて頂きました。 別で実現方法があればご教示のほどよろしくお願い致します。 尚、動作環境としてはC#のVisualStudio2015の32bitです。

[5032] DXライブラリ 3.21 をアップしました 投稿者:管理人 投稿日:2019/08/26(Mon) 22:04 [返信]
今回の大きな変更点は ・Live2D 関係の関数を追加 です Live2D は ADVゲームなどでキャラクターの立ち絵をアニメーションさせて見た目を豪華にしたい場合等に有用です <Live2D 関連の関数一覧> https://dxlib.xsrv.jp/function/dxfunc_live2D.html とはいえ、実際に関数を使用するには Live2D Cubism 3 SDK for Native をインストールしなければならないので 少しお手軽さには欠けますが… 因みに Live2D は年間売上1千万円未満の個人や企業は無償で使用することができます ( それ以上になると料金が発生します、詳しくはこちら <Live2D SDK リリースライセンス> https://www.live2d.com/ja/products/releaselicense ) Live2D 対応以外の更新内容については更新履歴を参照してください iOS版では SRand を実行しないと GetRand が正常な値を返さないバグの修正など、 それなりに重要な修正や更新が幾つかあります m(_ _;m <DXライブラリ更新履歴> https://dxlib.xsrv.jp/dxlog.html

[5031] ご返信 投稿者:管理人 投稿日:2019/08/19(Mon) 00:15 [返信]
> にこようさん ご確認ありがとうございます 現在は問題なく動作しているということですね もし現象が再発しましたらご連絡ください m(_ _)m

[5030] Re:[5029] [5028] ご返信 投稿者:にこよう 投稿日:2019/08/18(Sun) 22:53 [返信]
あの後、バグが発生した時はliveshareをしていたので、同じ友人に接続してもらって同じプロジェクトを使用して 試してみましたが、やはり同じ現象を確認することはできませんでした (マウスの座標の色を変えるためのコードは残っていなかったので新しく書きました) ただ、座標取得や描画は全てDXライブラリで行っており、 自分のプログラムだけで(画面の位置で発生する)バグを起こせるとはあまり思えなくて、報告してしまいました 不確定な報告ですみませんm(__)m

[5029] Re:[5028] ご返信 投稿者:にこよう 投稿日:2019/08/18(Sun) 11:32 [返信]
ご返信ありがとうございます > 確かに左側に少しスペースができてしまいましたが、GetMousePoint の値は正常( ウィンドウのクライアント領域の > 左上にカーソルを合わせたら x=0 y=0 が代入された )でした サンプルを新しいプロジェクトで試してみたところ、発生しませんでした 実際にずれた時は、画面に8x8の四角を敷き詰めて、分かりやすいように マウスの位置の箱の色を変えるプログラムを組んでいた時なのですが ウィンドウの位置を保存するようにしており、そのiniを削除し、 基本設定にしている0, 0で起動したときに一つ右の箱の色が変わるようになりました 再起動しても変わらず、ウィンドウバーで少しウィンドウを移動させたら正常に色が変わるように戻りました その後0, 0に設定した時のみずれていたのでマウスのせいだと思ってしまったのですが 今似たようなプログラムを組んでも再現できませんでした、すみません > ありません 分かりました

[5028] ご返信 投稿者:管理人 投稿日:2019/08/18(Sun) 01:50 [返信]
> にこようさん すみません、お書き込みを見落としていました m(_ _;m > win10でDXライブラリは初回起動時のウィンドウの座標を0,0に設定すると、左に少しスペースができますが、 > マウスの取得座標はしっかりと画面左端が0, 0になっているようでマウスと画面の判定がずれてしまいます 手元で以下のようなプログラムを組んでみましたところ、 #include "DxLib.h" int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow ) { int mx, my ; // ウィンドウモードで起動 ChangeWindowMode( TRUE ) ; // ウィンドウの位置を x=0 y=0 に設定 SetWindowPosition( 0, 0 ) ; // DXライブラリの初期化 if( DxLib_Init() < 0 ) return -1 ; // 描画先を裏画面にする SetDrawScreen( DX_SCREEN_BACK ) ; while( ProcessMessage() == 0 ) { // 画面のクリア ClearDrawScreen() ; // マウス座標の描画 GetMousePoint( &mx, &my ) ; DrawFormatString( 0, 0, GetColor( 255,255,255 ), "x:%d y:%d", mx, my ) ; // 裏画面の内容を表画面に反映 ScreenFlip() ; } // DXライブラリの後始末 DxLib_End() ; // ソフトの終了 return 0 ; } 確かに左側に少しスペースができてしまいましたが、GetMousePoint の値は正常( ウィンドウのクライアント領域の 左上にカーソルを合わせたら x=0 y=0 が代入された )でした にこようさんの環境では GetMousePoint で x にずれた値が代入されるということでしょうか? > Dxライブラリには時間の構造体がありますが、これと下の構造体を変換する関数(=のオーバーロード)はありますか? ありません

[5027] 時間の構造体 投稿者:にこよう 投稿日:2019/08/17(Sat) 12:43 [返信]
連投すみません、 Dxライブラリには時間の構造体がありますが、これと下の構造体を変換する関数(=のオーバーロード)はありますか? FILETIME* lpFileTime, LPSYSTEMTIME lpSystemTime

[5026] 初回起動時のウィンドウの座標 投稿者:にこよう 投稿日:2019/08/14(Wed) 12:57 [返信]
こんにちは win10でDXライブラリは初回起動時のウィンドウの座標を0,0に設定すると、左に少しスペースができますが、 マウスの取得座標はしっかりと画面左端が0, 0になっているようでマウスと画面の判定がずれてしまいます これは仕様でしょうか?

[5025] ご返信 投稿者:管理人 投稿日:2019/07/24(Wed) 01:02 [返信]
> 1061さん DXライブラリを使って作ったゲームを販売してもライセンス料などは発生しません 詳しくはこちらの著作権に関するページをご覧ください m(_ _)m <ライセンスについて> https://dxlib.xsrv.jp/dxlicense.html

[5024] 無題 投稿者:1061 投稿日:2019/07/23(Tue) 15:40 [返信]
Dxライブラリで作ったゲームを 売り出したりしたらDXライブラリの著作権に 触れますか。

[5023] ご返信 投稿者:管理人 投稿日:2019/07/20(Sat) 20:58 [返信]
> Effekseerさん > 引き続き調査はしてみますが、 > もうそろそろDirectX11を勧めてもいいのでは、とは思いました。 DXライブラリは DirectX 11 にネイティブに対応していないと DirectX 11 を使わないので、 DirectX 11 限定にしてしまうのはまだ、若干早いかもしれません ( Direct3D 9 レベルにしか対応していないグラフィックスデバイスでも Direct3D 11 を 使うことができるのですが、Direct3D 9 より制限が多すぎて厳しい… )

[5022] 無題 投稿者:Effekseer 投稿日:2019/07/16(Tue) 01:14 [返信]
管理人様 わざわざありがとうございます。 Effekseerです。 引き続き調査はしてみますが、 もうそろそろDirectX11を勧めてもいいのでは、とは思いました。

[5021] Re:[5020] MV1DrawModelとDrawCapsule3DのDirectX9版について 投稿者:管理人 投稿日:2019/07/15(Mon) 23:57 [返信]
MV1DrawModel による3Dモデル描画と2D描画はかなり毛色が違う関係でステートを独立して持っているので、特定が難しいですね… 一番の違いは DrawCapsule3D では頂点バッファ・インデックスバッファ・頂点シェーダー・ピクセルシェーダーを使用していないということです あと、シェーダーを使用していない関係で、SetVertexDeclaration の代わりに SetFVF で頂点フォーマットを設定しています あとは SetRenderState の D3DRS_DIFFUSEMATERIALSOURCE と D3DRS_SPECULARMATERIALSOURCE が D3DMCS_MATERIAL ではなく D3DMCS_COLOR1 となっている、とかでしょうか… それ以外は、MV1DrawModel との違いは以下の通りです( 網羅できているか分かりませんが… ) D3DRS_ZENABLE, D3DRS_ZWRITEENABLE, D3DRS_ZFUNC, D3DRS_DEPTHBIAS などのZバッファ系の設定がMV1DrawModelと2D描画で違う可能性がある D3DRS_SRCBLEND, D3DRS_DESTBLEND, D3DRS_BLENDOP, D3DRS_ALPHABLENDENABLE, D3DRS_ALPHATESTENABLE, D3DRS_ALPHAREF, D3DRS_ALPHAFUNC D3DRS_SEPARATEALPHABLENDENABLE, D3DRS_SRCBLENDALPHA, D3DRS_DESTBLENDALPHA, D3DRS_BLENDOPALPHA 辺りのブレンド系の設定がMV1DrawModelと2D描画で違う可能性がある D3DRS_TEXTUREFACTOR, D3DTSS_TEXCOORDINDEX, D3DTSS_RESULTARG, D3DTSS_ALPHAOP, D3DTSS_ALPHAARG1, D3DTSS_ALPHAARG2, D3DTSS_COLOROP, D3DTSS_COLORARG1, D3DTSS_COLORARG2 辺りのテクスチャステージステート系がMV1DrawModelと2D描画で違う ( MV1DrawModel = テクスチャステージはテクスチャを設定するだけ 2D描画 = ピクセルシェーダーを使っていないのでテクスチャステージの設定でピクセルシェーダーの代わりとなる処理を行っている ) D3DSAMP_ADDRESSU, D3DSAMP_ADDRESSV のテクスチャアドレス系が違う( MV1DrawModel = WRAP DrawCapsule3D = CLAMP )

[5020] MV1DrawModelとDrawCapsule3DのDirectX9版について 投稿者:Effekseer 投稿日:2019/07/15(Mon) 16:32 [返信]
いつもお手数をおかけしています。 Effekseerです。 今回はどちらかというとEffekseer側の不具合の相談です。 DirectX9版にて MV1DrawModel // mqoの描画 DrawCapsule3D RenderVertex Effekseerの描画処理 という順番で描画を行うとエフェクトが描画されるのですが MV1DrawModel // mqoの描画 // DrawCapsule3D RenderVertex Effekseerの描画処理 とするとエフェクトが描画されなくなる状況です。 おそらくMV1DrawModelで何らかのステートを変更し、DrawCapsule3Dでその変更が 元に戻っていると考えているのですが、DirectX9のデバッグ環境が既に用意するのが辛く、 調査が難航している状況です。 もし、MV1DrawModelとDrawCapsule3Dでステート回りが異なる部分の候補等、 思いつくところがありましたら教えていただけないでしょうか? よろしくお願いします。

[5019] Re:[5018] [5017] GraphBlendで何も描画されない 投稿者:アチコッタ 投稿日:2019/07/04(Thu) 01:49 [返信]
GraphBlendが正常に動作したことを確認しました。 お手数をおかけしてすみません。ご対応本当にありがとうございました。 素晴らしいゲームライブラリを使わせていただきありがとうございます。 > 画面モード切替は正常に動作したようで何よりです > > > 下記の修正されたライブラリを自分のゲームのほうに組み込んでみたところ、 > > 画面モード切替時の挙動は正常に動作しましたが、GraphBlendで何も描画されてなくなってしまいました。 > > すみません、別件の対応で行った変更が原因で GraphFilter や GraphBlend が正常に動作しない状態になっていました > > 修正版をアップしましたので、よろしければお試しください m(_ _;m

[5018] Re:[5017] GraphBlendで何も描画されない 投稿者:管理人 投稿日:2019/07/04(Thu) 00:29 [返信]
画面モード切替は正常に動作したようで何よりです > 下記の修正されたライブラリを自分のゲームのほうに組み込んでみたところ、 > 画面モード切替時の挙動は正常に動作しましたが、GraphBlendで何も描画されてなくなってしまいました。 すみません、別件の対応で行った変更が原因で GraphFilter や GraphBlend が正常に動作しない状態になっていました 修正版をアップしましたので、よろしければお試しください m(_ _;m https://dxlib.xsrv.jp/temp/DxLibVCTest.zip // Windows版 VisualC++ 用 https://dxlib.xsrv.jp/temp/DxLibBCCTest.zip // Windows版 BorlandC++ 用 https://dxlib.xsrv.jp/temp/DxLibBCC2Test.zip // Windows版 C++ Builder 10.2 用 https://dxlib.xsrv.jp/temp/DxLibGCC_MinGWTest.zip // Windows版 MinGW 用 https://dxlib.xsrv.jp/temp/DxLibDotNet.zip // Windows版 .NET用 https://dxlib.xsrv.jp/temp/DxLibMakeTest.zip // ソース (中身を既存のライブラリのファイルに上書きして『リビルド』をして下さい)

[5017] GraphBlendで何も描画されない 投稿者:アチコッタ 投稿日:2019/07/03(Wed) 17:43 [返信]
こんにちは。アチコッタと申します。 Effekseer様にデバイスロストのことで相談させてもらってました。 管理人様、Effekseer様、ご対応していただき本当にありがとうございます。 下記の修正されたライブラリを自分のゲームのほうに組み込んでみたところ、 画面モード切替時の挙動は正常に動作しましたが、GraphBlendで何も描画されてなくなってしまいました。 GraphBlendのサンプルを動かしてみても同じ現象が出ました。(描画されないというより、クリアされている?) お時間があるときで大丈夫ですので、一度確認していただいてもよろしいでしょうか。 お手数をおかけしてすみません。

[5016] Re:[5015] [5014] [5013] [5012] デバイスロストの挙動について 投稿者:Effekseer 投稿日:2019/07/03(Wed) 00:05 [返信]
ありがとうございます。 これで正常に動作するようになりそうです。 > IDXGISwapChain を作り直すようにしたらフルスクリーン状態での解像度変更も正常に動作するようになりました > > というわけで何とか『SetChangeScreenModeGraphicsSystemResetFlag に False を指定した場合に限りデバイスを解放しない』 > 状態のものができましたので、よろしければお試しください m(_ _;m > > https://dxlib.xsrv.jp/temp/DxLibVCTest.zip // Windows版 VisualC++ 用 > https://dxlib.xsrv.jp/temp/DxLibBCCTest.zip // Windows版 BorlandC++ 用 > https://dxlib.xsrv.jp/temp/DxLibBCC2Test.zip // Windows版 C++ Builder 10.2 用 > https://dxlib.xsrv.jp/temp/DxLibGCC_MinGWTest.zip // Windows版 MinGW 用 > https://dxlib.xsrv.jp/temp/DxLibDotNet.zip // Windows版 .NET用 > https://dxlib.xsrv.jp/temp/DxLibMakeTest.zip // ソース > (中身を既存のライブラリのファイルに上書きして『リビルド』をして下さい)

[5015] Re:[5014] [5013] [5012] デバイスロストの挙動について 投稿者:管理人 投稿日:2019/07/02(Tue) 00:38 [返信]
IDXGISwapChain を作り直すようにしたらフルスクリーン状態での解像度変更も正常に動作するようになりました というわけで何とか『SetChangeScreenModeGraphicsSystemResetFlag に False を指定した場合に限りデバイスを解放しない』 状態のものができましたので、よろしければお試しください m(_ _;m https://dxlib.xsrv.jp/temp/DxLibVCTest.zip // Windows版 VisualC++ 用 https://dxlib.xsrv.jp/temp/DxLibBCCTest.zip // Windows版 BorlandC++ 用 https://dxlib.xsrv.jp/temp/DxLibBCC2Test.zip // Windows版 C++ Builder 10.2 用 https://dxlib.xsrv.jp/temp/DxLibGCC_MinGWTest.zip // Windows版 MinGW 用 https://dxlib.xsrv.jp/temp/DxLibDotNet.zip // Windows版 .NET用 https://dxlib.xsrv.jp/temp/DxLibMakeTest.zip // ソース (中身を既存のライブラリのファイルに上書きして『リビルド』をして下さい)

[5014] Re:[5013] [5012] デバイスロストの挙動について 投稿者:Effekseer 投稿日:2019/07/01(Mon) 09:30 [返信]
返答ありがとうございます。 確かにフルスクリーン状態での解像度変更は試したことがなかったです。 軽く調べた限り情報もないようです。 こちらでも簡単にデバイスの破棄に対応できないか検討してみます。 フルスクリーンモードでの解像度切り替えの方法がわかりましたら伝えます。 > > DirectX11自体にはデバイスロストが存在せず、デバイスロストは起きないと考えていたのですが、 > > DXライブラリはスクリーンモードを変更した際にリセットが行われる、いるような挙動になってるのですが > > この認識は正しいでしょうか? > > はい、DirectX 7 時代に画面モード切り替わり時にはデバイス等は全て作成し直すようにして、 > Direct3D 9 では Reset を呼べばOK、と謳われながら、実際には Reset が正常に動作しないことがある > ということで結局 Direct3D 7 と同様の再作成方式にしたことがあったので、 > Direct3D 10 以降の『デバイスロストしないので各種オブジェクトを作り直す必要が無い』も > 怪しんでしまい『作り直すのが確実だ』と考え Direct3D 7 時代と同じく作り直すようにしています > > > もし、そうでしたら、一切リセットを行わないフラグを追加することはお願いできないでしょうか? > > フラグが増えるのも分かりにくいので、SetChangeScreenModeGraphicsSystemResetFlag に False を > 指定した場合に限りデバイスを解放しない処理に変更しようとしてみたのですが、フルスクリーンモード状態での > 画面モードの変更で詰まりました… > > IDXGISwapChain の ResizeTarget や ResizeBuffers や SetFullscreenState を使用して > 変更しようとしたのですが、2回目以降正常に画面モードが切り替わらず… > ( フルスクリーンモードで起動 → フルスクリーン状態で画面解像度変更( 成功 ) → 更にフルスクリーンモードで画面解像度変更( 失敗 ) ) > > 次は IDXGISwapChain を再生し直す方法を試そうと思っていますが、もしフルスクリーンモードでの > 画面解像度変更の正しい方法をご存じでしたら教えていただけないでしょうか? m(_ _;m

[5013] Re:[5012] デバイスロストの挙動について 投稿者:管理人 投稿日:2019/07/01(Mon) 03:13 [返信]
> DirectX11自体にはデバイスロストが存在せず、デバイスロストは起きないと考えていたのですが、 > DXライブラリはスクリーンモードを変更した際にリセットが行われる、いるような挙動になってるのですが > この認識は正しいでしょうか? はい、DirectX 7 時代に画面モード切り替わり時にはデバイス等は全て作成し直すようにして、 Direct3D 9 では Reset を呼べばOK、と謳われながら、実際には Reset が正常に動作しないことがある ということで結局 Direct3D 7 と同様の再作成方式にしたことがあったので、 Direct3D 10 以降の『デバイスロストしないので各種オブジェクトを作り直す必要が無い』も 怪しんでしまい『作り直すのが確実だ』と考え Direct3D 7 時代と同じく作り直すようにしています > もし、そうでしたら、一切リセットを行わないフラグを追加することはお願いできないでしょうか? フラグが増えるのも分かりにくいので、SetChangeScreenModeGraphicsSystemResetFlag に False を 指定した場合に限りデバイスを解放しない処理に変更しようとしてみたのですが、フルスクリーンモード状態での 画面モードの変更で詰まりました… IDXGISwapChain の ResizeTarget や ResizeBuffers や SetFullscreenState を使用して 変更しようとしたのですが、2回目以降正常に画面モードが切り替わらず… ( フルスクリーンモードで起動 → フルスクリーン状態で画面解像度変更( 成功 ) → 更にフルスクリーンモードで画面解像度変更( 失敗 ) ) 次は IDXGISwapChain を再生し直す方法を試そうと思っていますが、もしフルスクリーンモードでの 画面解像度変更の正しい方法をご存じでしたら教えていただけないでしょうか? m(_ _;m

記事No 削除キー

- Aska BBS -