Chapter4. 拡張関数


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

関数名
G3@FRMSET
機能
フレームにパラメータを設定する。
書式
G3@FRMSET( frmnum , type , data1 )
《パラメーター》
frmnumint。フレーム番号を設定する。
type int。設定する項目を何れか一つを指定する。
LG3_SRCBLEND
ソースのブレンディング係数を設定する。
LG3_DESTBLEND
デスティネーションのブレンディング係数を設定する。
LG3_CKEY
透明色を設定する。テクスチャの黒色(rgb=0,0,0)を透明にするかどうかを設定する。
LG3_FOG
フォグのON/OFFを設定する。フォグの詳細設定はG3@DEV***の設定値が反映される。
LG3_FILTER
フィルタを設定する。
LG3_ENABLE
描画のON/OFFを設定する。
data1 int。typeの設定に関連したパラメタを設定する。パラメータの数は各設定項目で異なる。
LG3_SRCBLEND
data1:xフレームのブレンディング係数を設定する。デフォルトはLG3_BLEND_SRCALPHAである。
指定値 ブレンディング係数
LG3_BLEND_ZERO (0, 0, 0, 0)
LG3_BLEND_ONE (1, 1, 1, 1)
LG3_BLEND_SRCCOLOR (Rs, Gs, Bs, As)
LG3_BLEND_INVSRCCOLOR (1-Rs, 1-Gs, 1-Bs, 1-As)
LG3_BLEND_SRCALPHA (As, As, As, As)
LG3_BLEND_INVSRCALPHA (1-As, 1-As, 1-As, 1-As)
LG3_BLEND_DESTALPHA (Ad, Ad, Ad, Ad)
LG3_BLEND_INVDESTALPHA (1-Ad, 1-Ad, 1-Ad, 1-Ad)
LG3_BLEND_DESTCOLOR (Rd, Gd, Bd, Ad)
LG3_BLEND_INVDESTCOLOR (1-Rd, 1-Gd, 1-Bd, 1-Ad)
LG3_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_DESTBLEND
data1:フレームを書き込むバック画像のブレンディング係数を設定する。LG3_SRCBLENDを参照。デフォルトはLG3_BLEND_INVSRCALPHAである。
LG3_CKEY
data1:0(透明色を使用しない)、1(透明色を使用する)。デフォルトは0である。
LG3_FOG
−1:G3@DEVSETFOGMODEの設定を反映する。
0:フォグを無効にする。
1:フォグを有効にする。
LG3_FILTER
data1:フィルタを設定する。デフォルトはLG3_TFG_NONEである。
指定値 説明
LG3_TFG_NONE G3@DEVSETFILTERの設定を反映する。
LG3_TFG_POINT 点フィルタリング。希望のピクセル値に最も近い座標を持つテクセルを使用する。つまりフィルタを使用しない
LG3_TFG_LINEAR バイリニア補間フィルタリング。希望のピクセルを囲む 2 x 2 領域のテクセルの重み付き平均を使用する。
LG3_TFG_POINT 異方性テクスチャ フィルタリング。テクスチャ ポリゴンとスクリーン平面間の角度の相違により起こる歪みを補正する。
LG3_ENABLE
−1:本フレームを含め子フレームを描画しない。
0:描画しない。
1:描画する。(デフォルト値)
解説
フレームのパラメータを設定する。G3@FRMMAKE関数やG3@FRMLOADで生成したフレームにアルファーブレンディング値などの各種情報を設定する。
特殊機能
1 フレームの表示で背景との合成方法を指定できます。本設定はLG3_SRCBLENDとLG3_SP_DESTBLENDで指定します。LG3_SRCBLENDはスプライトの指定、LG3_DESTBLENDは背景の指定を指定し、2つの組み合わせで指定します。
例えば、LG3_SRCBLENDとLG3_DESTBLENDにそれぞれLG3_BLEND_ONEを指定するとレーザ光線の輝きのような表現が出来ます。
また、LG3_SRCBLENDにLG3_BLEND_SRCCOLOR、LG3_DESTBLENDにLG3_BLEND_INVSRCALPHAを指定するとフレームが透明になります。透明度はG3@FRMSETCOLORA関数で指定したアルファー値で指定します。

用例
半透明の球体(Kyuutai.x)を表示する。
CH=G@SETUP(640,480,16,1)
LT=G3@LIGHTMAKE(3,65536,65536,65536)
G3@ADD( LT , 0 )
FM=G3@FRMMAKE()
MS=G3@MESHLOAD("Kyuutai.x")
G3@ADD( FM , 0 )
G3@ADD( MS , FM )
G3@FRMSETPOS( FM , 0 , 0 , 10.0 )
G3@FRMSETCOLORA( FM , 1.0 , 1.0 , 1.0 , 0.5)
G3@FRMSET( FM , LG3_SRCBLEND , LG3_BLEND_SRCCOLOR )
G3@FRMSET( FM , LG3_DESTBLEND , LG3_BLEND_INVSRCCOLOR )
G3@FRMSETMATERIALMODE( FM , 2 )
LOOP
G@CHRCLEAR(CH)
G3@RENDER()
G@FLIP()
ENDLOOP