2017-01-23 19 views
1

頻繁に更新されるが、実際の画面の約10%しか更新されない拡張メニューのあるウィンドウに関する一般的な質問です。テキストが変更されない場合は、多くの場合。SDL:ハードウェアレンダリングとソフトウェアレンダリング

SDL2はレンダリングとテクスチャを使用してハードウェアアクセラレーションを使用しますが、ソフトウェアレンダリングも可能です。

私の質問です:

  • はそれがSDL_CreateRenderを(使用してハードウェアに直接レンダリングすることにより、画面全体/メニューを毎回再描画する方が速い)/ハードウェアレンダリング全体のメニューは毎回のみ描かれているところメニューの10%は実際に変更されますか?または:
  • SDL_CreateSoftwareRenderer()/ software-renderを使用してメニュー全体を一度RAMに書き込んだ後、実際に変更された10%のみを更新する方が速いのですか?
+3

**確かに知っているプロフィール**(しかし、それは遅れが出始まらないと本当に問題ではないと言っています)また、便利でなければならない第3の方法があります。メニューの静的な部分をテクスチャにハードウェアレンダリングし、各フレームをハードウェアレンダリングすることができます。 (ゲームを作っている場合は、メニューを除くすべてが頻繁に更新されるので、ソフトウェアレンダリングはおそらくオプションではありません)。 – HolyBlackCat

+2

私の推測では、これは実行中のPCに大きく依存する完全に再描画しても、高速化される可能性があります。しかし、それはリソースの重いアプリケーションではないように聞こえるので、おそらく書いて維持しやすいものがあれば何でもよいでしょう。 – Alden

+0

ありがとうございます。問題に多くの時間を費やす前に、他の意見を得ることができればうれしいです。最も簡単な方法は、ハードウェアレンダリングを使用して、十分な速さで毎回ウィンドウ全体を再描画することでした。 – Brian

答えて

1

ありがとうございます。

問題に多くの時間を費やす前に、他の意見を得ることができたらうれしいです。最も簡単な方法は、ハードウェアレンダリングを使用して、十分な速さで毎回ウィンドウ全体を再描画することでした。

メインプログラムは、スクリーンに30Hzのレートでレンダリングされるテクスチャに、すべてのピクセル(LinuxではリアルタイムデータとGUI)を個別のピクセルとして描画します。私が見つけたのは、CPUのクロックレートが1Ghzを超えると、大部分の画面をクリアする時を除いて、ほとんどのグラフィック(小領域/ピクセル)がハードウェアレンダリングと同じくらい高速か高速だったということでした。ピクセルデータ(GUIおよびデータ)がメインで更新されている間に、スレッドでSDLレンダリングが機能するように読み込みます。