es_buffer

VRAMイメージ転送

es_buffer p1,p2,p3,p4,p5

p1=オフスクリーンバッファID(0~63)
p2=属性スイッチ(0~2)
p3=透明色(パレットモード時:-1~255、ハイカラー以上:-1~$ffffff)
p4=パレットモード時の転送方法(0~2)
p5=テクスチャ使用フラグ(0~1)

(プラグイン / モジュール : hspdxfix)

解説

属性スイッチ=0 : オフスクリーンバッファをVRAMに取る、
                 失敗した場合は、メインメモリに取る
属性スイッチ=1 : オフスクリーンバッファをメインメモリに取る
属性スイッチ=2 : オフスクリーンバッファをVRAMに取る

p4=0 : バッファ転送時にパレットを更新する
p4=1 : パレットを更新しない
p4=2 : DirectX側のパレットに色を合わせて転送する

現在gsel命令で選択されているHSPのバッファ内容を、DirectXのオフスクリーンバッファにすべて転送します。
この時、パレットも読み出されDirectX側のパレットに転送されます。
オフスクリーンバッファに転送できる最大画像サイズは、グラフィックボードによって異なり、主に

1.縦横ともに画面解像度以上のサイズで作成できる
2.横は画面解像度と同サイズまで、縦はそれ以上のサイズで作成できる
3.縦横ともに画面解像度と同サイズまで

の3通りとなっています。

p3にはes_copy命令などで透明色として使う色を指定します。
パレットモードでは0~255までのパレット番号を直接指定するほかに、-1を指定することで完全な黒(RGB=0) でパレット番号が一番若いパレットを自動的に透明色に設定します。
ハイカラー以上では透明色に指定するRGB値を $rrggbbの16進数6桁で設定します。たとえば、$00ff00と指定することでRGB=(0,255,0)の色が透明色になります。 -1を指定した場合、(0,0)のドットの色を読み取り、透明色に設定されます。

HSP側のバッファは、DirectXがパレットモードの時は同じくパレットモードで初期化されていないと正常に転送されませんが、ハイカラー以上の場合はパレット・フルカラーモードどちらでも転送されます。
オフスクリーンバッファへの転送が成功した場合には、システム変数statの値は0になります。転送に失敗すると、statの値は1になります。転送に失敗する場合は、転送する画像が大きすぎるか、VRAMの容量が足りないことなどが考えられます。自分の環境では動作していても、別のマシンではエラーになる可能性がありますので、スクリプト側でチェックをするように心がけてください。

すでに転送済みのオフスクリーンバッファIDを指定した場合には、一度その内容が削除され、新しいものに上書きされます。

p5に0を指定することで、 このバッファをテクスチャとして使用しないようにできます。 そうすると、このバッファに対してes_excopy命令でコピーを行うことができなくなりますが、DirectDrawでの描画を行う場合にパフォーマンスが大きく低下するのを防げます。

バッファをテクスチャとして使用する場合、 グラフィックボードによっては256ドットを越える画像や、サイズが2の累乗でない画像を転送できない物があります。なるべく多くの環境で正常に動作することを期待するのであれば、これらを守る必要があります。

サンプル

buffer 3,640,480,1
picload "test.bmp"
es_buffer 0

サンプル逆引き (5)

test1.hsp
test2.hsp
test3.hsp
test4.hsp
test5.hsp

情報

プラグイン / モジュールhspdxfix
バージョン0.19c
作成日2007/06/19
著作者Sinagawa(original by onitama)
URLhttp://www.onionsoft.net/
備考当プラグインに関する質問、要望などはSinagawaへお願いします。
URL->http://www.hspdx.net/
Mail->s@hspdx.net
タイプ拡張命令
グループ拡張画面制御命令
hs ファイルhsphelp\hspdx.hs