トップページ > 記事閲覧
ウィンドウモードでリサイズするとSetCameraScreenCenterで設定した消失点がずれる
名前:stk2k 日時: 2024/09/12 13:52

素晴らしいライブラリ、DXライブラリを使用させていただいております。 今回、特殊な例ではあると思いますが下記条件でSetCameraScreenCenterで設定した消失点がずれるという現象を発見しましたのでご報告させていただきます。 (厳密にはウィンドウへのビットマップ転送時に転送先矩形がずれる) 【発生条件】 ・ウィンドウモード:ChangeWindowMode/SetUserWindowを使用 ・描画先はリサイズ可能なモードレスダイアログ上のPictureコントロール ・バックバッファのサイズはデスクトップサイズ(2560 x 1440 ピクセル) ・描画先Pictureコントロールのサイズは初期状態が1497 x 1063ピクセル ・Pictureコントロールはダイアログのリサイズに追随してリサイズする仕様 ・消失点はSetCameraScreenCenter関数でPictureコントロールの中心点に設定 【確認環境】 ・Windows 11/VisualStudio 2022 Community 【ビルド構成】 ・x86 デバッグしてみましたところ、DxGraphicsD3D11.cppの25037行で設定しているターゲットウィンドウ領域がリサイズする前のもの(初期化時?)が入っており、 結果として消失点がリサイズ後のターゲットウィンドウ領域の中心点からずれています。 WinData.WindowRectにターゲットウィンドウ領域が入っているのですが、この値を更新するにはWM_SIZEProcess()を呼ぶ必要がありますが、これを外部から呼ぶ ためにはSetWindowPositionもしくはSetWindowSize関数を呼ぶしかないと思い、試しにSetWindowPosition関数を使ってみましたが、WM_SIZEProcess()内部でウィンドウモードの 場合はターゲットウィンドウ領域(WinData.WindowRect)の更新処理を行わないことになっており、リサイズ後のターゲットウィンドウ領域を更新するすべが ない状態です。 ウィンドウモードで、描画対象コントロールがリサイズ可能な場合でも消失点がずれないようにするにはどうすればよろしいでしょうか? ※リサイズ時にSetGraphMode関数を呼ぶことも考えましたが、モデル情報などをリサイズするごとに読み直すのはアプリケーション仕様的に難しいです。 DXライブラリの使用に慣れておりませんため私のAPIの使い方が良くないのか分からず、ご相談させていただきました。
メンテ

Page: 1 |

Re: ウィンドウモードでリサイズするとSetCameraScreenCenterで設定した消失点がずれる ( No.1 )
名前:管理人 日時:2024/09/06 23:45

最新の DxGraphicsD3D11.cpp ( 正式最新バージョン後の変更が加えてあるソース )の 25037行付近を確認した所、 別件で SetUserWindow を使用した際の座標のズレ問題に対応した形跡がありましたので、 こちらの暫定最新版でしたら本件の問題が解決されているかもしれません 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 11.3 用 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 // ソース (中身を既存のライブラリのファイルに上書きして『リビルド』をして下さい) よろしければお試しください m(_ _)m
メンテ
Re: ウィンドウモードでリサイズするとSetCameraScreenCenterで設定した消失点がずれる ( No.2 )
名前:stk2k 日時:2024/09/07 00:39

ご返信ありがとうございます。 取り急ぎ、「Windows版 VisualC++ 用ライブラリ」を入れ替えてみましたところ、座標のズレが解消していました! ありがとうございました。 これで実装を進められそうです。 明日、ソース版をビルドして修正された箇所を確認したいと思います。 その際、また質問させていただくかもしれませんが、よろしくお願いいたします。 ※ちなみに、正式版後の修正内容(次回正式版の修正予定)が分かる一覧を記したページなどはありますでしょうか? (あれば、近く修正されそう、みたいなことが分かるかなと。勝手な意見で申し訳ありません)
メンテ
Re: ウィンドウモードでリサイズするとSetCameraScreenCenterで設定した消失点がずれる ( No.3 )
名前:管理人 日時:2024/09/08 00:23

問題が解決したようで何よりです > ※ちなみに、正式版後の修正内容(次回正式版の修正予定)が分かる一覧を記したページなどはありますでしょうか? ウェブ上のページはありませんが、暫定最新版のソース( DxLibMakeTest.zip )の中に DxLog.txt というテキストファイルがありまして、 その中に正式最新版以降に行った変更も全て記載されていますので、よろしければご覧ください m(_ _)m
メンテ
Re: ウィンドウモードでリサイズするとSetCameraScreenCenterで設定した消失点がずれる ( No.4 )
名前:stk2k 日時:2024/09/09 00:43

お世話になっております。 前回はライブラリ版で座標のズレが解消されていることを確認しましたが、今回はソースコード版でも同じように座標のズレが解消されていることを確認しました。 (具体的にはFlip時に内部保持しているクライアント領域TargetWindowClientRectがFlip時に動的に更新されるようになっていました) ご回答ありがとうございました。 >ウェブ上のページはありませんが、暫定最新版のソース( DxLibMakeTest.zip )の中に DxLog.txt というテキストファイルがありまして、 >その中に正式最新版以降に行った変更も全て記載されていますので、よろしければご覧ください m(_ _)m DxLog.txtの中に次期バージョンの更新予定が書かれているのですね。 ちなみにですが、暫定最新版のソース( DxLibMakeTest.zip )というのは今回のように質問掲示板の方で随時配布されるものなのでしょうか? (位置づけが分かっておらず、申し訳ありません)
メンテ
Re: ウィンドウモードでリサイズするとSetCameraScreenCenterで設定した消失点がずれる ( No.5 )
名前:管理人 日時:2024/09/09 01:20

ソースコードを使用した場合でも問題が解決されていたとのことでなによりです > ちなみにですが、暫定最新版のソース( DxLibMakeTest.zip )というのは今回のように質問掲示板の方で随時配布されるものなのでしょうか? はい、掲示板でご報告されたバグの修正や機能追加の際に必ず DxLibMakeTest.zip も更新していますので、 最新のソースは常に https://dxlib.xsrv.jp/temp/DxLibMakeTest.zip でダウンロードできる状態となっています
メンテ
Re: ウィンドウモードでリサイズするとSetCameraScreenCenterで設定した消失点がずれる ( No.6 )
名前:stk2k(解決済) 日時:2024/09/12 13:53

ご回答ありがとうございます。 最新のソースURLで取得できるのですね。承知いたしました。 丁寧なご説明、ご回答ありがとうございました。
メンテ

Page: 1 |

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

   クッキー保存