2012-04-29 12 views
7

ライブストリームにHUDをオーバーレイするためのWPFアプリケーションがあります。オリジナルのアイデアは、WPFアプリケーションのコンテンツを表示するためのxsplit(ライブストリームを表示するポピュラーなアプリケーション)用のプラグインを作成することでした。このアプローチの問題点は、xsplitのCOMインターフェイスにビットマップをレンダリングすると、アプリケーションを解放するためにCPUのパフォーマンスが大きく損なわれることです(xsplitのCOMインターフェイスに問題があると思うので、CPUに課金するRenderTargetBitmapを使用します)。WPFの内部からDirectXアプリケーションへのレンダリング

私は多くのメリットがあるため、オーバーレイをゲームに直接描画することを検討しています(ターゲットDirectXアプリケーション)。主にxsplitのパフォーマンス上の問題を回避しますが、さまざまなストリーミングアプリケーションやキャプチャアプリケーションまでアプリケーションを開くことができます。


、私は非常にはDirectXで経験していないが、私は、このソリューションの概要

  1. は、WPFアプリケーションを初期化され、検索(via this method)

  2. WPFのDirect3Dデバイスをキャプチャだと思うし、ターゲットDirectXアプリケーションのEndSceneコールをフックする(using EasyHook+Slimdx)

  3. は、フックのDirectXアプリケーションの岩下WPFデバイスの表面の内容をレンダリング


私が持っている主な質問はSlimDXを用いて、ステップ3を実行する方法です。私は、ソリューションが何らかの形で表面を再利用し、コピーされたアプリケーションのパフォーマンスに影響を与えないことを目標にしているので、コピーに頼らないことを願っています。私はまた、地域を限定し透明性をサポートできるようにしたいと思います。私はまた、DirectXアプリケーションのデバイスにWPFのDirect3Dデバイスを使用すると不安定になるかどうか疑問に思っています。

洞察力があれば幸いです。ありがとうございます。

+0

あなたはどうやってそれをしましたか?私は似たような状況に陥っています。 – alDiablo

答えて

1

私は同じことをしようとしています。私がこれまでに発見したことは、あなたがビットマップにあなたのwpfvisualtreeをレンダリングし、その後の書き込み、私はこれはまだテストをdidntの2

​​

ポイントで取得D3Dデバイスへのビットマップであることができるということですが、私は上だと思いますこれと正しい軌道。今私が持っている唯一の問題は、ウィンドウからすべての対話性が失われてしまうことです。ボタンのクリックなどは、もはやキャプチャされません...

それについての助けがあればいいです。

+0

あなたは何をしていたことで成功しましたか? – alDiablo

関連する問題