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

Psychlops Wiki - (TechnicalNote) Image cache on VRAM 差分

  • 最後の更新で追加された部分はこのように表示します。
  • 最後の更新で削除された部分はこのように表示します。

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

! 実装

!! 通常のdraw()命令
||キャッシュのない通常の状態では、draw命令を実行すると、メインメモリのビットマップからVRAMへの転送、表示が同時に実行されます。||[[http://psychlops.sourceforge.jp/images/TechnicalNotes/psychlops_image_cache_1.png]]||

!! キャッシュモードとdraw()命令
||cache()を実行すると、ImageのビットマップデータをVRAMに転送してキャッシュし、キャッシュモードに切り替えます。||[[http://psychlops.sourceforge.jp/images/TechnicalNotes/psychlops_image_cache_2.png]]||
||cacheモードではdraw()を実行するとVRAMキャッシュから画面に転送されます。||[[http://psychlops.sourceforge.jp/images/TechnicalNotes/psychlops_image_cache_3.png]]||

!! キャッシュモードで編集を行うには
||cacheモードで編集をおこっなった場合、メインメモリ上のビットマップは編集されますが、VRAMには転送されません。このため、編集してもdraw()では反映されません。||[[http://psychlops.sourceforge.jp/images/TechnicalNotes/psychlops_image_cache_4.png]]||
||cacheモードのImageにさらにcache()を行うと、内容を更新します。||[[http://psychlops.sourceforge.jp/images/TechnicalNotes/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程度使用されています。