celbitmap

変数バッファを画像データとして適用する

celbitmap p1,var,p2

p1(0)   : ウインドウID
var     : イメージを置き換えるための配列変数
p2(0)   : 動作オプション

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

解説

変数バッファの内容を画像データとして指定されたオフスクリーンバッファを置き換えます。
あらかじめ、buffer命令により作成したオフスクリーンバッファと、置き換えるための変数バッファを初期化する必要があります。
オフスクリーンバッファは、buffer命令でscreen_offscreenのオプションを指定して作成してください。

	buffer 2,256,256,screen_offscreen

その後、バッファを置き換えるための変数バッファを作成します。
dim命令により、1次元配列を初期化して作成してください。作成するサイズは、オフスクリーンバッファのXサイズ×Yサイズになります。

	dim bitmap, 256*256

これで、celbitmap命令を使用する準備が整いました。
celbitmap命令により、オフスクリーンバッファのIDと配列変数を指定することで、変数バッファの内容がそのまま画像イメージとして適用されます。
変数バッファは、1要素あたり1ドットとなります。1ドットは、32bitの要素をR,G,B,Aそれぞれ8bit単位で格納されるRGB形式のデータとなります。
たとえば、「$ff204080」(16進数)を指定した場合は、A=$ff(255)、B=$20(32)、G=$40(64)、R=$80(128)となります。(カッコ内は10進数)
画像データの置き換えは、コストの高い処理になるため、大きなサイズのイメージを置き換える場合、フレームレートが下がることがありますので注意してください。
p2パラメーターにより、置き換えの形式や動作を指定することができます。

 値  マクロ             動作
---------------------------------------------------------
  0  celbitmap_rgb      $aabbggrr形式でデータを保持する
  1  celbitmap_bgr      $aarrggbb形式でデータを保持する
  16 celbitmap_capture  描画画面の内容を変数に読み出す


通常は、OpenGLの標準に合わせたcelbitmap_rgbの形式が使用されます。オプションにcelbitmap_bgrを指定した場合は、DirectX標準に合わせたARGBの並びになります。
celbitmap_captureを指定した場合は、描画先(ID0)の画面上のデータを配列変数に読み出します。(読み出しのサイズはオフスクリーンバッファのサイズになります)
※celbitmap_captureオプションは、実験的な実装です。現在は、Windows(DirectX版HGIMG4を除く)、Linux版でのみ使用できますのでご了承ください。

サンプル

#include "hsp3dish.as"

	buffer 2,256,256,screen_offscreen
	gsel 0
	dim bitmap,256*256
	repeat 256*256
	bitmap(cnt)=$ff00ffff
	loop
*main
	redraw 0
	celbitmap 2,bitmap
	pos 0,0
	celput 2
	redraw 1
	await 1000/30
	goto *main

関連項目

buffer仮想画面を初期化

情報

プラグイン / モジュールHSP3Dish
バージョン3.6
作成日2020/06/10
著作者onitama
URLhttp://hsp.tv/
備考hsp3dish.asをインクルードすること。
タイプ拡張命令
グループ拡張入出力制御命令
対応環境
  • Windows 版 HSP
hs ファイルhsphelp\hsp3dish.hs