videoInput は、ver.1991でないとVHScrCapから正常に取得できないので、このバージョンを使用。
(ソースはあるので差分をとれば原因はわかると思うけど、めんどくさいので後回し^^;;;)
VHScrCap
微妙に使いにくいのと、demoモードでしか動かせないので、不特定多数に使わせるには無理があるw
COMをC++から操作してキャプチャ位置を設定するが、demoモードでは設定が保存されない、キャプチャ画像に横線が10本入る、という制限あり。自分用に使うには、そんな制限は乗り越えられるんだけど。。。
アプリ本体
OpenGLにテクスチャを貼り付けて拡大縮小の負担軽減(videoInputでの実装の移管)。
とりあえず動くレベルでclient.exeのゲーム画面をキャプチャするアプリの作成は完了。
追記:
VHScrCapでのdemoモード起動の条件がいまいちわからない。
OpenGLの命令を発行しただけでdemoモードに移行してしまう。
これって、VHScrCapによってプロセスに何か仕込まれているんじゃ、と疑っている。
今までは、client.exeに攻撃する側だったのですが、逆に攻撃される側になってるwww
攻撃される側になって、その防御ってどうすればいいんだろう、と悩んでしまいます。
防御したとして、攻撃した側が誰なのか?調べるのが難しいよね。DLL仕込まれたとして、そのDLLを誰が仕込んだか、なんてわかりゃしない><
追記:
画像一応付けてみます。分かりにくいですが、右下の画面は別モニタのキャプチャ画像です。
ほぼイメージ通りw
アプリ開発は、最初のイメージを如何に正確に描けるか、が重要ですね。
OpenGLのテクスチャを使っているので、拡大縮小はGPUまかせ。といっても負荷制御なし(FPS制限なし)にするとCPUパワー全部使ってしまいます。
今のところの問題は、この拡大縮小をしたときに限って、VHScrCapのdemoモード炸裂で横線が入ってしまいます><
拡大縮小しなければOK。
次のステップとして
(1) この子画面上でのマウス操作/キーボード操作をclient.exeに送りつける
(2) 通常画面と子画面(とuoclistのダイアログ)の位置のスワップ
でひとまずの完成を予定しますが、(2)を様々な条件に対応させるのは難儀だろうな。。。
この辺ができれば、2垢のみならず1垢であっても子画面で操作できて便利になると考えてます。画面サイズを大きくしたいっていうニーズはよく聞きますが、ウィンドウサイズを縮小ってのも欲しいよね。
画像のキャプチャについては、ここまでできたところで自動的にできているようなもの。(面倒だから無圧縮bmpでいいよね^^;;;)
動画キャプチャについても、フォーマットについて何も考えなければ(無圧縮avi ^^;;;)できたも同然なのですが、そもそも(自分にとって)需要があるか?という疑問があるので当分は手をつけない予定。
とここまでやってみて、これらの技術、5年前には完成していたんですよね。めんどくさそうだから手を付けなかっただけで。今これに手を付けている=新パブ入ってもやり込むほどの魅力がなかった、ってことだったり。。。