トップページ > 記事閲覧
Ver3.16cでのGetMovieBaseImageToG
名前:nsawa 日時: 2016/05/02 13:24

こんにちは。GetMovieBaseImageToGraph()について質問させてください。 ogvの動画でGetMovieBaseImageToGraph()を呼んだ時の動作が、Ver3.16bとVer3.16c(4/24版)で違うようです。 Ver3.16bではイメージが更新された時にImageUpdateFlagが1になりますが、Ver3.16cだと常に0になりました。 手元の環境(Windows10 64bit)で再現確認したプログラムは、以下の通りです。 #include <DxLib.h> int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) { ChangeWindowMode(TRUE); //フルスクリーンでもウインドウでも結果は同じ DxLib_Init(); //DxLibを初期化する。 SetDrawScreen(DX_SCREEN_BACK); //描画先をバックバッファにする。 int gr = LoadGraph("test1.ogv"); //ムービーをロードする。 PlayMovieToGraph(gr, DX_PLAYTYPE_LOOP); //ムービーを再生開始する。 while((ProcessMessage() == 0) && (CheckHitKey(KEY_INPUT_ESCAPE) == 0)) { ClearDrawScreen(); //描画先をクリアする。 int ImageUpdateFlag; GetMovieBaseImageToGraph(gr, &ImageUpdateFlag); //ImageUpdateFlagを受け取る。 if(ImageUpdateFlag) { printfDx("%d: ImageUpdateFlag is on\n"); } //ImageUpdateFlag=1ならばデバッグ表示する。 ←←←←← DxLib3.16bだと表示が出るが、DxLib3.16cだと表示が出ない。 ScreenFlip(); //フリップする。 } DxLib_End(); //DxLibを終了する。 return 0; } extern "C" long _ftol2_sse(double dblSource){return (long)dblSource;}//DxLib3.16cではVC6でリンクエラーが出るのを回避 Ver3.16bの動作の方が正しいのではないかな、と思いました。 ご検討いただけますと幸いです。
メンテ

Page: 1 |

Re: Ver3.16cでのGetMovieBaseImageToG ( No.1 )
名前:管理人 日時:2016/05/05 18:13

すみません、手元でも現象を確認しました 修正版をアップしましたので、よろしければお試しください m(_ _;m https://dxlib.xsrv.jp/temp/DxLibVCTest.exe // VisualC++ 用 https://dxlib.xsrv.jp/temp/DxLibBCCTest.exe // BorlandC++ 用 https://dxlib.xsrv.jp/temp/DxLibGCC_DevCppTest.exe // Dev-C++ 用 https://dxlib.xsrv.jp/temp/DxLibGCC_MinGWTest.exe // MinGW 用 https://dxlib.xsrv.jp/temp/DxLibDotNet.zip // .NET用 https://dxlib.xsrv.jp/temp/DxLibMakeTest.exe // ソース (中身を既存のライブラリのファイルに上書きして、BCCをお使いの 場合は『再構築』を、VCをお使いの場合は『リビルド』を、 Dev-C++をお使いの方は「Rebuild All(Ctrl+F11)」をして下さい) 因みに、最新のDXライブラリではYUVカラーの動画を再生する際の YUVカラーから RGBカラーに変換する処理をGPU( ピクセルシェーダー )を使用して行っているのですが、 GetMovieBaseImageToGraph を実行すると強制的にその変換処理をCPUで行ってしまい 無駄に処理負荷が高くなってしまいます なので、それを回避するために『戻り値の BASEIMAGE * は使用せず、ImageUpdateFlag の取得だけを 行うかどうかを指定する第3の引数 int ImageUpdateFlagSetOnly』を追加しましたので、 もし動画画像の更新のみのチェックを行う場合は第三の引数を TRUE にして呼ぶようにしてください m(_ _)m // 動画ファイルの基本イメージデータを取得する // // ImageUpdateFlag に int 型変数のアドレスを渡すと、イメージが更新された場合は 1 が // 更新されていない場合は 0 が格納されます // // ImageUpdateFlagSetOnly を TRUE にすると戻り値の BASEIMAGE は有効な画像データではなくなりますが // BASEIMAGE の更新処理が行われませんので、ImageUpdateFlag を利用して画像が更新されたかどうかだけを // チェックしたい場合は TRUE にしてください const BASEIMAGE* GetMovieBaseImageToGraph( int GraphHandle, int *ImageUpdateFlag = NULL , int ImageUpdateFlagSetOnly = FALSE ) ;
メンテ
Re: Ver3.16cでのGetMovieBaseImageToG ( No.2 )
名前:nsawa(解決) 日時:2016/05/08 10:29

確認が遅くなりまして申し訳ありません。 修正版をダウンロードさせて頂きました。問題無く、ImageUpdateFlagが1になる事を確認しました。 ご推察の通り、動画画像の更新のみのチェックを行う用途でしたので、ImageUpdateFlagSetOnlyをTRUEにして呼ぶようにさせて頂きます。 また、VC6でも_ftol2_sseのリンクエラーが出なくなりました。 諸々ご対応いただき、ありがとうございました。
メンテ

Page: 1 |

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

   クッキー保存