2010-11-25 10 views
2

Hey all、 XNA 4.0 for Windows Phone 7を使用し始めたばかりで、Texture2Dでぼかし効果を実現する方法に関する情報を探していましたか?私が集めたことから、WP7プラットフォームでシェーダを使用することはできません。このトピックに関する情報はかなり難しいと感じています。Windows Phone 7/XNA 4 - テクスチャぼかしの効果

あらかじめ多くのありがとう、 アントン。

+0

どのようなぼかしが必要ですか?あなたはテクスチャだけをぼかすことができますか、またはシェイプ自体をぼかす必要がありますか?ぼかしをあらかじめ計算しても問題ありませんか? –

+0

理想的には、私が方向性のあるぼかしを作成することができればすばらしいでしょう。本質的には、私が作成したSpriteSheetクラスのため、Texture2Dを持っています。私はsourcerectとposition Rectangleで描画を使用しています。事前計算なしでその場でぼかしを作成することは可能ですか? – antonmills

答えて

1

理論上、はい。しかし、それはCPUの集中的な作業です。ピクセルデータを取ってビットマップに貼り付け、シェーダーの仕方をC#のピクセルで繰り返すと、同じ効果が得られます。次に、カラーデータをビットマップから取り込み、テクスチャで取り除き、再描画します。しかし、あなたがドローコールをするたびにこれをしなければならないとすれば、それは携帯電話プロセッサのために大規模なキックオフになるでしょう。私はコードを手にする必要はありませんが、私はこのアプローチをいくつかの "擬似シェイダー"に使用しました。効率的ではありませんが、控えめに使用すると効果的です。

0

スプライトの「指向性ブラーリング」のもう一つの安価な方法は、スプライトが最後の数回の更新にわたってどこにあったかの短いFIFOキューを維持することです。これは、位置 "履歴トレイル"です。次に、スプ​​ライトをこれらの位置に時間順の逆順(最古のものから順に)で描画します。カラーマスクはほぼ透明で開始します(履歴トレイルの最も古いメンバの場合)、履歴の後の各位置で透明性が低くなりますSpriteの現在の位置はWhiteです。この方法は、より大きなヒストリー・トレイルでより高価(時間がかかる)になります。また、オブジェクトがあまりにも速く動いているときには、現在の位置と前の位置の間にあまりにも多くのスペースがあるため、適切なぼかしを生成しないことがあります。この場合、現在の位置に近い位置を補間して、よりぼかし効果を得ることができます。最終的な結果は、おそらくぼかしよりゴーストと見なされますが、それが必要ならば、これは実装がかなり簡単です。

関連する問題