1

そのため、最後の質問以降、参照の問題を防ぐためにテクスチャを複製することが私の解決策であることがわかりました。しかし、私は質問しています:

    Color[] color = new Color[screen.Width * screen.Height];
    InputRenderTarget2D.GetData(Color);
    OutputRenderTarget2D.SetData(color);

まず、1 秒間に 60 回実行した場合、これは効率的ですか? 1 つのテクスチャを設定していますが、私はパフォーマンスに偏執的であり、パフォーマンスを適切または最高の状態に維持したいと考えています。「主に目立つフレームドロップ」などを引き起こしますか?

次に、新しい Color 配列を作成する代わりに、1 つをリサイクルするとパフォーマンスが向上しますか?

4

1 に答える 1

3

GetData()/SetData() 呼び出しは rendertarget データをメイン メモリに転送するため、これはパフォーマンスに悪影響を与えると思います。IMO、より良い代替手段は、同じサイズのクワッドを使用して InputRenderTarget2D を OutputRenderTarget2D にレンダリングすることです。これにより、CPU-GPU データ転送が妨げられます。

于 2012-04-02T21:40:56.187 に答える