• [soccerwindow2] スコアボードの描画をキャッシュ化. (akiyama) 01:21:08

スコアボードの描画を,QPixmapによるキャッシュへの描画に置き換えた. 描画内容が少ないので,目に見えて分かる程の効果は無し. やはり,プレイヤの描画を何とかしないと… しかし,Qtのソースを読んでみても,高速化のヒントが見当たらない. 高速化出来なきゃ困るし,出来るはずだと思うんだけど,どっかにドキュメント無いかなぁ.

  • [soccerwindow2] QPainterPathについてのメモ. (akiyama) 17:13:05

QPainterPathを使うと,同じペンとブラシによる描画内容を溜めておいて一気に描画することができる.しかし,保持する描画内容が大量になると,描画パスを保持するためのメモリ確保のためにCPUを消費してしまい,かえって効率が悪くなってしまう. 描画パスが少数であれば,QPainterPathの方が高速なのは間違いないので,高速化のためには描画パスの量の見積りが必要.

うーん,何でこんなに不便なんだ. 低レベルな部分まで制御できるといえば確かにその通りだけど,実際のところ,高速化するためには環境依存な書き方をしなければならなくなって,移植性が落ちてしまう. それじゃQtを使う意味が無い.

そして,どの実装方法でも,wxGTKに比べて異常に重い. 軌跡を描画したらCPUを100%使ってしまう. 何でこんなに重いんだろう. キャッシュ云々以前に,ひとつひとつの描画処理が重すぎる. こんなに描画が重たいんじゃ,使いものにならない. どうしてくれようか.

  • [soccerwindow2] 描画用キャンバスをQGLWidgetに変更. (akiyama) 20:17:16

QGLWidgetを使うとハードウェアアクセラレーションが有効になるとのことで,FieldCanvasの派生元をQWidgetからQGLWidgetに変えてみた.

なるほど,確かに描画は圧倒的に速くなった.

しかし,テキストの描画が逆にCPUを消費するようになってしまった. wxバージョンもテキストの描画がやたらとCPUを喰っていたけど,ということは,これでwxバージョンととほぼ同じ状態になったということ? しかし,相変わらず大量のEllipseの描画は遅い. 6000サイクル分の軌跡表示なんかやったら,まともな速度で動いてくれない.

よく分かってないけど,ハードウェアアクセラレーションは,テキストの描画には向いていないということなんだろうか. だとすると,後はテキストの描画速度さえ改善すれば何とかなるんだろうか. ちょっとやってみよう.

というか,こんなに速くなるんなら,最初からQGLWidgetを標準にしとけという話では無いのか. と思って,VMware上のSUSEで動かしてみたら,QGLWidget版はありえないほど重かった. ハードウェアを直接叩けない場合は,かえって重いということね. まいったなぁ.


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