メッシュ用頂点データの一例です。
TSXVertex = packed record
Case Integer of
0: (
x,y,z:Single; //頂点
nx,ny,nz:Single; //法線
diffuse:D3DCOLOR; //ディフューズ
specular:D3DCOLOR; //スペキュラ
tu,tv:Single; //テクスチャ座標
);
1:(
pos:D3DVector;
normal:D3DVector;
);
end;
メッシュ用頂点データの一例です。
テクスチャ座標が2組入っており、スペキュラ要素がありません。
TSXVertex2T = packed record
Case Integer of
0: (
x,y,z:Single; //頂点
nx,ny,nz:Single; //法線
diffuse:D3DCOLOR; //ディフューズ
tu0,tv0:Single; //テクスチャ座標
tu1,tv1:Single; //テクスチャ座標(2)
);
1:(
pos:D3DVector;
normal:D3DVector;
);
end;
メッシュ用頂点データの一例です。
β値が1つ入っており、スペキュラ要素がありません。
TSXVertexOneSkin = packed record
Case Integer of
0: (
x,y,z:Single; //頂点
b:Single; //ベータ
nx,ny,nz:Single; //法線
diffuse:D3DCOLOR; //ディフューズ
tu,tv:Single; //テクスチャ座標
);
1:(
pos:D3DVector;
beta:Single;
normal:D3DVector;
);
end;
スプライトを構成する頂点を示します
TSXVertexSP = record dx,dy:Single; //中心からの相対座標(スクリーン座標系) color:D3DCOLOR; //ディフューズ色 specular:D3DCOLOR; //スペキュラ色 tu,tv:Single; //テクスチャ座標 end;
ビルボードを構成する頂点を示します。
Case Integer of
0:(
dx,dy:Single; //中心からの相対座標
color:D3DCOLOR; //ディフューズ色
specular:D3DCOLOR;//スペキュラ色
tu,tv:Single; //テクスチャ座標
);
1:(
size:TVector2D;
);
ブレンドモードを定義する際に用います。
TSXScene.RegisterBlendModeメソッドの説明をご覧下さい。
TSXBlendInfo = record Sort:Boolean; //Zソートする必要がある //以下、レンダリングステート設定用 AlphaTestEnable:Boolean; //カラーキー処理用、αテスト、FalseならAlphaFuncは無視 AlphaFunc:D3DCMPFUNC; //αテスト用比較関数 AlphaBlendEnable:Boolean; //もし、このメンバがFalseなら、以下の設定はスキップ SrcBlend:D3DBLEND; DestBlend:D3DBLEND; BlendOp:D3DBLENDOP; //BlendOpが設定できるビデオカードのみ end;
フレキシブル頂点フォーマットに関するフラグです。
//通常用途、スペキュラ要素いらんとか、色はテクスチャでなんとかするという人はD3DVRETEX使って下さい FVF_SXVERTEX : DWord = (D3DFVF_XYZ Or D3DFVF_NORMAL Or D3DFVF_DIFFUSE Or D3DFVF_SPECULAR Or D3DFVF_TEX1); //テクスチャ2つ入り FVF_SXVERTEX2T:DWord = (D3DFVF_XYZ Or D3DFVF_NORMAL Or D3DFVF_DIFFUSE Or D3DFVF_TEX2); //β値入り、ワンスキン用 FVF_SXVERTEXONESKIN:DWord = (D3DFVF_XYZB1 Or D3DFVF_NORMAL Or D3DFVF_DIFFUSE Or D3DFVF_TEX1);
定義済みブレンドモードを識別する定数です。
sxbDefault = 0; //普通、透けない sxbAdd = 1; //加算合成 sxbAlpha = 2; //半透明 sxbMulNeg = 3; //エセ減算合成(反転してからMul) sxbMul = 4; //乗算合成 sxbColorKey =5; //αテストだけ、透けない
TSXVertex、TSXVertex2T、TSXVertexOneSkin、TSXVertexBB、TSXVertexSPにそれぞれ一括代入を行うための関数です。
function SXVertex(x,y,z, nx,ny,nz:Single; dif,spec:D3DCOLOR; tu,tv:Single):TSXVertex; function SXVertex2T(x,y,z, nx,ny,nz:Single; dif:D3DCOLOR; tu0,tv0, tu1,tv1:Single):TSXVertex2T; function SXVertexOneSkin(x,y,z, beta, nx,ny,nz:Single; dif:D3DCOLOR; tu,tv:Single):TSXVertexOneSkin; function SXVertexBB(dx,dy:Single; col:D3DCOLOR; tu,tv:Single; spec:D3DCOLOR = $00000000):TSXVertexBB; function SXVertexSP(dx,dy:Single; col:D3DCOLOR; tu,tv:Single; spec:D3DCOLOR = $00000000):TSXVertexSP;
D3DMATERIAL8構造体に一括代入を行うための関数です。
function MakeMaterial(difR,difG,difB, specR,specG,specB, ambR,ambG,ambB, emsR,emsG,emsB, pow:Single):D3DMATERIAL8; overload; function MakeMaterial(dif, spec, amb, ems:D3DCOLOR; pow:Single):D3DMATERIAL8; overload;
上の呼び出し形式では、各要素のα値は常に1.0とみなされます。