Other Types, Functions

 

レコード

TSXVertex

    メッシュ用頂点データの一例です。

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;

 

TSXVertex2T 

  メッシュ用頂点データの一例です。

 テクスチャ座標が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;

 

TSXVertexOneSkin 

  メッシュ用頂点データの一例です。

 β値が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

  スプライトを構成する頂点を示します

TSXVertexSP = record
  dx,dy:Single;        //中心からの相対座標(スクリーン座標系)
  color:D3DCOLOR;   	//ディフューズ色
  specular:D3DCOLOR;	//スペキュラ色
  tu,tv:Single;        //テクスチャ座標
end;

 

TSXVertexBB

  ビルボードを構成する頂点を示します。

Case Integer of
    0:(
      dx,dy:Single;     //中心からの相対座標
      color:D3DCOLOR;   //ディフューズ色
	specular:D3DCOLOR;//スペキュラ色
      tu,tv:Single;     //テクスチャ座標
      );
    1:(
      size:TVector2D;
      );

 

 

TSXBlendInfo

  ブレンドモードを定義する際に用います。

 TSXScene.RegisterBlendModeメソッドの説明をご覧下さい。

TSXBlendInfo = record
  Sort:Boolean;               //Zソートする必要がある
  //以下、レンダリングステート設定用
  AlphaTestEnable:Boolean;    //カラーキー処理用、αテスト、FalseならAlphaFuncは無視
  AlphaFunc:D3DCMPFUNC;          //αテスト用比較関数

  AlphaBlendEnable:Boolean;   //もし、このメンバがFalseなら、以下の設定はスキップ
  SrcBlend:D3DBLEND;
  DestBlend:D3DBLEND;
  BlendOp:D3DBLENDOP;              //BlendOpが設定できるビデオカードのみ
end;

 

定数

FVF_SXVERTEX
FVF_SXVERTEX2T
FVF_SXVERTEXONESKIN

 フレキシブル頂点フォーマットに関するフラグです。

//通常用途、スペキュラ要素いらんとか、色はテクスチャでなんとかするという人は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
sxbAdd 
sxbAlpha 
sxbMulNeg 
sxbMul 
sxbColorKey 

 定義済みブレンドモードを識別する定数です。

sxbDefault = 0; //普通、透けない
sxbAdd =     1; //加算合成
sxbAlpha =   2; //半透明
sxbMulNeg =  3; //エセ減算合成(反転してからMul)
sxbMul =     4; //乗算合成
sxbColorKey =5; //αテストだけ、透けない

 

ヘルパー関数

SXVertex
SXVertex2T
SXVertexOneSkin
SXVertexBB
SXVertexSP

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;

 

MakeMaterial

 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とみなされます。