2016-10-16 4 views
0

たとえば、実際に変更する唯一のものを持つ複雑なビューがキャレットの場合、キャレットを更新するためにシーン全体を再描画する必要はありません。GPUを使用したダブルバッファサーフェスのテキスト入力コントロールのキャレットを描画する方法は?

今のところ私はこれを行うために指摘できる唯一の合理的な方法は、カーソルなしでコンテンツをキャッシュすることです。これはあまりにも悪くないようですが、常にテクスチャにレンダリングするか、常にテクスチャにレンダリングするかどうかを決める必要があります。

おそらく、この問題は「GPUを使ってほぼ静的な複雑なシーンを処理する正しい方法」に一般化することができます。

答えて

3

いくつかのゲームで作業していた経験は、一般的にシーン全体を再びレンダリングすることです。キャッシュを実装するフレームごとにリソースを再レンダリングするのは非常に高価な場合です。例えばダイナミックライトのシャドーマップは、ライトが再び動くまでキャッシュします。

あなたが説明したキャッシングソリューションは、自動キャッシュがとにかく必要なものなので、不合理ではありません。シーン全体を再びレンダリングすると、どんな懸念がありますか?

+0

問題については、たとえば、ゲームではない場合はどうすればよいでしょうか。 WebブラウザやWPF UIのように、後者は常にテクスチャにレンダリングされます。 – BlueWanderer

+0

近年のGPU(モバイルGPUにはそれほど精通していない)は何もキャッシュしていないので、ほとんどのキャッシュメカニズムはソフトウェアになっています。したがって、主に管理するアプリケーション固有のキャッシュの数を調整します。 WRT WPFでは、ビジュアル階層の各ノードにフラグ「ビットマップキャッシュ」があります。そのノードとその子がレンダリングされるたびに、そのノードが再びダーティになるまでビットマップにキャッシュされます。ブラインドでどこでもそのフラグを有効にすると、パフォーマンスが大幅に低下する可能性があります。 ブラウザの場合でも、スクロール/ DOM更新のために画面を再描画する必要があります。 DOMレンダリングはヒューリスティックを使用してスチルをキャッシュします。 – Unknown1987

関連する問題