Chapter4. 拡張関数


4.6 3Dグラフィックス関数

関数名
G3@SPSET
機能
スプライトのパラメータを設定する。
書式
G3@SPSET( spnum , type , data1 , data2 , data3 , data4 )
《パラメーター》
spnumint。スプライト番号を設定する。
type int。設定する項目を何れか一つを指定する。
LG3_SP_TEX
テクスチャに使用する画像を設定する。画像にはG3@TEXLOAD関数で取得したテクスチャ画像を設定する。
LG3_SP_ALPHA
透明度を設定する。
LG3_SP_ROT
スプライトの回転角度を設定する。
LG3_SP_SCALE
スプライトの拡大縮小率を設定する。
LG3_SP_SRC
スプライトに使用するテクスチャの範囲を設定する。
LG3_SP_DEST
スプライトを表示する画面の座標を設定する。本座標をスプライトの中心となるように表示する。
LG3_SP_CKEY
透明色を設定する。テクスチャの黒色(rgb=0,0,0)を透明にするかどうかを設定する。
LG3_SP_FILTER
フィルタを設定する。
LG3_SP_SRCBLEND
ソースのブレンディング係数を設定する。
LG3_SP_DESTBLEND
デスティネーションのブレンディング係数を設定する。
LG3_SP_FOG
フォグのON/OFFを設定する。フォグの詳細設定はG3@DEV***の設定値が反映される。
data1〜data4 int。typeの設定に関連したパラメタを設定する。パラメータの数は各設定項目で異なる。
LG3_SP_TEX
data1:G3@TEXLOAD関数で取得したテクスチャ画像を設定する。
LG3_SP_ALPHA
data1:0(透明)〜1.0(不透明)の範囲で設定する。デフォルトは1.0(65536)である。0を設定すると完全な透明となり表示されない。ただし、半透明の表現はグラフィックボードで異なる事に気を付ける事。
LG3_SP_ROT
data1:1周を360に分割して設定する。360以上を設定した場合は、設定値を360で割った余りとなる。デフォルトは0度である。
LG3_SP_SCALE
data1:0を最小とし1.0(65536)を等倍として設定する。2.0(65536の2倍)は倍のサイズで表示される。なお、スプライトの中心を基準に上下左右均等に拡大縮小する。デフォルトは1.0である。
LG3_SP_SRC
テクスチャの矩形を指定する。
data1:左の座標
data2:上の座標
data3:右の座標
data4:下の座標
LG3_SP_DEST
画面のテクスチャの矩形を指定する。
data1:左の座標
data2:上の座標
data3:奥行き
LG3_SP_CKEY
data1:0(透明色を使用しない)、1(透明色を使用する)。デフォルトは0である。
LG3_SP_FILTER
data1:フィルタを設定する。デフォルトはLG3_SP_TFG_NONEである。
指定値 説明
LG3_SP_TFG_NONE G3@DEVSETFILTERの設定を反映する。
LG3_SP_TFG_POINT 点フィルタリング。希望のピクセル値に最も近い座標を持つテクセルを使用する。つまりフィルタを使用しない
LG3_SP_TFG_LINEAR バイリニア補間フィルタリング。希望のピクセルを囲む 2 x 2 領域のテクセルの重み付き平均を使用する。
LG3_SP_TFG_POINT 異方性テクスチャ フィルタリング。テクスチャ ポリゴンとスクリーン平面間の角度の相違により起こる歪みを補正する。

LG3_SP_SRCBLEND
data1:スプライトのブレンディング係数を設定する。デフォルトはLG3_SP_BLEND_SRCALPHAである。
指定値 ブレンディング係数
LG3_SP_BLEND_ZERO (0, 0, 0, 0)
LG3_SP_BLEND_ONE (1, 1, 1, 1)
LG3_SP_BLEND_SRCCOLOR (Rs, Gs, Bs, As)
LG3_SP_BLEND_INVSRCCOLOR (1-Rs, 1-Gs, 1-Bs, 1-As)
LG3_SP_BLEND_SRCALPHA (As, As, As, As)
LG3_SP_BLEND_INVSRCALPHA (1-As, 1-As, 1-As, 1-As)
LG3_SP_BLEND_DESTALPHA (Ad, Ad, Ad, Ad)
LG3_SP_BLEND_INVDESTALPHA (1-Ad, 1-Ad, 1-Ad, 1-Ad)
LG3_SP_BLEND_DESTCOLOR (Rd, Gd, Bd, Ad)
LG3_SP_BLEND_INVDESTCOLOR (1-Rd, 1-Gd, 1-Bd, 1-Ad)
LG3_SP_BLEND_SRCALPHASAT (f, f, f, 1)。f = min(As, 1-Ad)
LG3_SP_BLEND_BOTHINVSRCALPHA (1-As, 1-As, 1-As, 1-As)
この指定値はLG3_SP_SRCBLENDでのみサポートされる。

LG3_SP_DESTBLEND
data1:スプライトを書き込むバック画像のブレンディング係数を設定する。LG3_SP_SRCBLENDを参照。デフォルトはLG3_SP_BLEND_INVSRCALPHAである。
LG3_SP_FOG
−1:G3@DEVSETFOGMODEの設定を反映する。
0:フォグを無効にする。(当該スプライトのみに影響)
1:フォグを有効にする。(当該スプライトのみに影響)
解説
スプライトのパラメータを設定する。G3@SPMAKE関数で生成したスプライトの表示位置やテクスチャに使用する画像(テクスチャ画像)などの各種情報を設定する。
特殊機能
画像を拡大した時に画像のドットの角がカクカクして目障りになることがあります。その為スプライト機能では拡大した時、ドットの角をぼやかしてカクカク感を減らしています。ぼやかす処理を解除するにはLG3_SP_FILTERで指定する。
スプライトを表示で背景との合成方法を指定できます。デフォルトでは、スプライトが背景となじむようにスプライトの縁と縁の周りの背景を混ぜ合わせぼやかしています。本設定はLG3_SP_SRCBLENDとLG3_SP_DESTBLENDで指定します。LG3_SP_SRCBLENDはスプライトの指定、LG3_SP_DESTBLENDは背景の指定を指定し、2つの組み合わせで指定します。
例えば、LG3_SP_SRCBLENDとLG3_SP_DESTBLENDにそれぞれLG3_SP_BLEND_ONEを指定するとレーザ光線の輝きのような表現が出来ます。

用例
スプライトを表示する。
CH=G@SETUP(640,480,16,1)
SP=G3@SPMAKE()                                  //スプライト管理テーブル作成
TX=G3@TEXLOAD("gazou.bmp")                      //テクスチャ読み込み
G3@SPSET(SP,LG3_SP_TEX,TX)                      //スプライトにテクスチャ設定
G3@SPSET(SP,LG3_SP_SRC,0,0,256,256)             //スプライトのテクスチャ領域設定
G3@SPSET(SP,LG3_SP_DEST,320,240,0)              //スプライトの表示領域設定
G3@SPSET(SP,LG3_SP_CKEY,1)                      //スプライトのカラーキー設定
LOOP
  G@CHRCLEAR(CH)
  G3@SPDRAW(SP)                                 //スプライト表示
  G@FLIP()
ENDLOOP