• [soccerwindow2] BallTracePainterを高速化. (akiyama) 00:49:26

Qt3に移植する前に高速化できるところはしておこうと思い,ボールの軌跡の描画内容をQPixmapにキャッシュするようにした.フォーカス位置やウインドウサイズが変更されない限りは,一度描画した内容を貼り付けるだけの処理になる.

結果,驚くほど速くなった. CPU使用率100%近かったのが,5%以下になった. これだけ効果が顕著だとやる気が出るってもんです.

軌跡のキャッシュは,ウインドウと同サイズのQPixmapに描き込んで,そのQPixmapをまるごとFieldCanvasに描き込んでいる. よって,ウインドウサイズが1024x768だったら,1024x768のピクセルデータを描き込んでいることになる. 直感的には重たそうだけど,このQPixmapの描画が,プレイヤの背番号やスタミナなどのテキストの描画よりも軽いということにまた驚いた. 軌跡用のQPixmapの描画だけならCPU使用率5%以下なのに,スタミナの表示をオンにするだけでCPU使用率が10%近くいってしまう. いくらなんでも,テキストの描画が重すぎないか?

  • [soccerwindow2] PlayerPainterを高速化. (akiyama) 02:35:35

同じく,QPixmapによるキャッシュを使って描画を高速化. 数字といくつかの文字をQPixmapとしてキャッシュしておくことで,背番号やスタミナといったテキスト秒画をQPixmapの描画に置き換えた. その効果は絶大. テキスト描画が最小限になっただけで,描画に関するCPU消費がほとんど無くなった.

後は,スコアボードやデバッグ用メッセージなどにも同様の高速化が必要.


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2016-03-14 (月) 14:51:37 (2024d)
SourceForge.JP
Creative Commons License
RoboCup tools by Hidehisa Akiyama is licensed under a Creative Commons 表示-非営利 2.1 日本 License.