FrontPage  ページ一覧  検索  更新履歴  RSS  ログイン

(TechnicalNote) Image cache on VRAM

Image::cache()を使用すると、ImageをVRAM上にキャッシュし、高速に描画することが出来ます。その代わり、編集が即時更新されない状態となります。

実装

通常のdraw()命令

キャッシュのない通常の状態では、draw命令を実行すると、メインメモリのビットマップからVRAMへの転送、表示が同時に実行されます。psychlops_image_cache_1.png

キャッシュモードとdraw()命令

cache()を実行すると、ImageのビットマップデータをVRAMに転送してキャッシュし、キャッシュモードに切り替えます。psychlops_image_cache_2.png
cacheモードではdraw()を実行するとVRAMキャッシュから画面に転送されます。psychlops_image_cache_3.png

キャッシュモードで編集を行うには

cacheモードで編集をおこっなった場合、メインメモリ上のビットマップは編集されますが、VRAMには転送されません。このため、編集してもdraw()では反映されません。psychlops_image_cache_4.png
cacheモードのImageにさらにcache()を行うと、内容を更新します。psychlops_image_cache_5.png

キャッシュモードを解除するには

キャッシュモードはquicken(false)で解除できます。

使用上の注意

  • Windowsでは、OpenGLとDirectXの規格への準拠度が低い場合、黒い枠線が表示されることがあります。このような場合は、Imageの高さと幅を2のn乗(32,64,128,256...)にそろえると正しく機能します。
  • キャッシュモードではImageに対する編集がすぐには反映されません。編集を反映するには、編集終了後にもう一度cache()を実行する必要があります。
  • キャッシュでの制限はビットマップの編集のみに関わります。centering(), shift()などは影響を受けません。
  • VRAMの容量の限界までしか保存することが出来ません。
    • 使用するメモリは幅*高さ*ビット深度で、例えば100*100*RGBAの場合は1枚あたり40kB必要になります。
    • VRAMの容量はお使いのビデオカードの設定でご確認ください。
    • VRAMは通常表示用のバッファが標準で10MB程度使用されています。
更新日時:2010/04/13 18:58:06
キーワード:
参照:[Image]