| Re: 動画再生とモデルへの貼り付けについて ( No.1 ) |
- 名前:管理人 日時:2025/12/16 22:41
動画再生をしているハンドルを MakeScreenで作った画像ハンドルに対して描画しているとのことですが、
動画再生をしているハンドルをそのまま使用するのでは何か実現できない処理を行っているのでしょうか? (・・;
> 更新が終わった動画をDxLib側でもテクスチャに吐き出しているようでした。
はい、通常のグラフィックハンドルが内部ではテクスチャであるのと同様に、動画再生をしている
グラフィックハンドルも内部ではテクスチャです
なので、通常のグラフィックハンドルと同様に GetGraphID3D11Texture2D で ID3D11Texture2D を取得することができます
|
| Re: 動画再生とモデルへの貼り付けについて ( No.2 ) |
- 名前:E_Nock 日時:2025/12/18 01:59
ご返信ありがとうございます。
> 動画再生をしているハンドルをそのまま使用するのでは何か実現できない処理を行っているのでしょうか? (・・;
こちらについてですが、テクスチャなどのリソース管理全般をDirectX11の構造体も使用して行っています。
理由としては、Differd Rendering等の技術に特殊なテクスチャフォーマット(DXGI_FORMAT_R11G11B10_FLOAT等)を使用しつつ、
完全にDirectX11そのもので実装するよりもコストを下げるためです。
当方学生なものでして、1からDirectX11を学習しなおすとなると就活間に合わないため、少々強引に一部機能のみD3D11実装にさせていただいております。
ですので、モデル描画やテクスチャ描画のシェーダーに転送するフェーズではどうしてもハンドルではなくSRVを使用する形になりまして...
> グラフィックハンドルも内部ではテクスチャです
>
> なので、通常のグラフィックハンドルと同様に GetGraphID3D11Texture2D で ID3D11Texture2D を取得することができます
見たところ、動画のハンドルをGetGraphID3D11Texture2Dに渡しても、nullptrが返ってきます。
念のため、再生後にも同じように呼んでみましたが、相変わらず帰ってくるポインタはnullでした。
ハンドル自体は有効かつ、再生も問題なくできております。
使用しているDxLibのバージョンはまだリリース前の3.25(以前モデルのメタリックテクスチャ等のPBR対応をお願いした際に頂きました)です。
|
| Re: 動画再生とモデルへの貼り付けについて ( No.3 ) |
- 名前:管理人 日時:2025/12/19 00:41
うーむ謎ですね…
手元の環境で mp4ファイルや mpgファイルを LoadGraph して取得したグラフィックハンドルに対して
GetGraphID3D11Texture2D を行ったところ、問題なく ID3D11Texture2D のアドレスが返ってきました
int GrHandle = LoadGraph( "test.mp4" );
const void *pTexture2D = GetGraphID3D11Texture2D( GrHandle );
再生している動画のフォーマットは何でしょうか?
|
| Re: 動画再生とモデルへの貼り付けについて ( No.4 ) |
- 名前:E_Nock 日時:2025/12/19 09:43
すみません、今手元に環境がないので今日中にはなるかと思いますが、1つの試させてください。
実はテクスチャも動画も同じように非同期ロードを行っていて、ひょっとしたらそこら辺で何か起こっているのかもしれないです……
> 再生している動画のフォーマットは何でしょうか?
形式はmp4で、数秒程度の長さです。
再現性の確認が取れ次第、こちらにもう一度報告させていただきます。m(*_ _)m
|
| Re: 動画再生とモデルへの貼り付けについて ( No.5 ) |
- 名前:E_Nock(解決済み) 日時:2025/12/19 12:42
大変失礼いたしました。今回の件ですが、原因が判明致しました。
テクスチャを管理するマネージャーで、LoadGraphではなくMV1LoadTextureを呼んでしまっておりました。
おそらく、私がモデル・テクスチャ描画をDirectX11仕様に変える前の名残りです。
MV1LoadTextureをLoadGraphに変えたところ、無事描画ができました。
ご迷惑をおかけして申し訳ございません。<(_ _)>
|