Re: 他に干渉しないで一部分を透明化 ( No.1 ) |
- 名前:コモリ 日時:2020/08/11 21:35
自己解決しました。
MakeGraphやMakeScreenの第三引数にTRUEを渡しておらず、アルファ値が適切に反映されていなかったことが原因でした...
以下の手順で動画の黒を透明化しました。
・MakeScreenで画面作成
・作成したScreenに動画を描画
・GraphFilterのDX_GRAPH_FILTER_BRIGHT_CLIPを使用して黒を透明に
・裏画面に作成したScreenを描画
これ以外に効率的なやり方があれば教えていただきたいです。
|
Re: 他に干渉しないで一部分を透明化 ( No.2 ) |
- 名前:管理人 日時:2020/08/12 01:10
|
Re: 他に干渉しないで一部分を透明化 ( No.3 ) |
- 名前:コモリ 日時:2020/08/12 13:40
対応ありがとうございます。
さっそく、DX_SCREEN_BACKを出力先に指定してGraphFilterBltを使用したところ、
画像、動画は描画されるのですがフィルターの内容は反映されていませんでした。
確認お願い致しますm(*_ _)m
追記
・Screenを作成
・GraphFilterBlt(movieHandle, Screen, DX_GRAPH_FILTER_BRIGHT_CLIP, DX_CMP_LESS, 50, TRUE, 0, 0);
を使用してフィルターをかける。
・裏画面にScreenを描画
↑の場合だと何も描画されませんでした。
・Screenを作成
・Screen2を作成
・Screen2にmovieHandle(動画)を描画
・GraphFilterBlt(movieHandle, Screen, DX_GRAPH_FILTER_BRIGHT_CLIP, DX_CMP_LESS, 50, TRUE, 0, 0);
を使用してフィルターをかける。
出力先は「Screen」
・裏画面にScreenを描画
↑の場合だと適切に反映されました。
動画の再生にはPlayMovieToGraph(movieHandle);を使用しています。
動画の場合、一度適当な所に描画してからでないと、動画が再生されていない?フィルターが上手く反映されない?
可能性もあるのかなと...
・GraphFilterBlt(movieHandle, DX_SCREEN_BACK, DX_GRAPH_FILTER_BRIGHT_CLIP, DX_CMP_LESS, 50, TRUE, 0, 0);
↑のように裏画面に出力先を指定すると動画をScreen2に描画していなくても、
一応GraphFilterBltは処理され画面にフィルターがかかっていない状態で描画されるので、よくわかりませんが...
|
Re: 他に干渉しないで一部分を透明化 ( No.4 ) |
- 名前:管理人 日時:2020/08/12 23:21
|
Re: 他に干渉しないで一部分を透明化 ( No.5 ) |
- 名前:コモリ 日時:2020/08/13 23:41
対応ありがとうございます。早速確認してみました。
・Screenを作成
・GraphFilterBlt(movieHandle, Screen, DX_GRAPH_FILTER_BRIGHT_CLIP, DX_CMP_LESS, 50, TRUE, 0, 0);
を使用してフィルターをかける。
・裏画面にScreenを描画
↑を実行した場合は、適切に反映されました。
・GraphFilterBlt(movieHandle, DX_SCREEN_BACK, DX_GRAPH_FILTER_BRIGHT_CLIP, DX_CMP_LESS, 50, TRUE, 0, 0);
↑のように裏画面に直接描画した場合、動画は描画も再生もされます。
しかし、アルファ値が反映されていません。色は反映されています。
確認お願い致しますm(*_ _)m
|
Re: 他に干渉しないで一部分を透明化 ( No.6 ) |
- 名前:管理人 日時:2020/08/14 01:30
 |
Re: 他に干渉しないで一部分を透明化 ( No.7 ) |
- 名前:コモリ(解決) 日時:2020/08/14 15:59
無事解決しました。
対応ありがとうございました。
|
|