DXノート-今はちょっとお腹が空いています

3488 ワード

DirectX9.0


基礎知識:クラスD 3 DXVETOR 3で3 D空間中のベクトルを表す
1.ベクトルが等しい:
const float EPSILON = 0.001f;
bool Equals(float lhs, float rhs)
{
   return fbs(lhs-rhs)< EPSILON ? true : false;
}

2.計算ベクトルの型:
float D3DXVec3Length(const DDXVECTOR3 * pV); //  
D3DXVECTOR3 v(1.f,2.0f,3.f);
float magnitude = D3DXVec3Length(&v);

3.ベクトルの正規化:
D3DXVECTOR3M* D3DXVec3Normalize(
       D3DXVECTOR3 * pOUT,    // 
       const D3DVECTOR3 * pV);    // 

4.ベクトル加算:重荷重加算演算子(+)D 3 DXVECTOR 3 sum=u+vを加算できるのは、次元数が同じ2つのベクトルのみです.
5.ベクトル減算:減算演算子(-)D 3 DXVECTOR 3 different=u-vをリロードします.
6.数乗:D 3 DXVECTOR 3 scaledVec=u*10.0 f;
7.ポイント積:
float D3DXVec3Dot(
    const D3DXVECTOR3 * pV1,
    const D3DXVECTOR3* pV2);  //  
float dot = D3DXVec3Dot(&u , &v);

8.フォーク積:左手の法則でフォーク積の方向を判断できる
D3DXVECTOR3 *D3DXVec3Cross(
       D3DXVECTOR3 *pOUT,     // 
       const D3DXVECTOR3 *pV1,
       const D3DXVECTOR3 *pV2);

9.行列:
D3DXMATRIX M;
M(0,0) = 0.5f; //  

D3DXMATRIX *D3DXMatrixIdentity(
       D3DXMATRIX *pout); //  

D3DXMATRIX *D3DXMatrixTranspose(
       D3DXMATRIX *pout,  //  
       const D3DXMATRIX *pM);  //  

D3DXMATRIX *D3DXMatrixInverse(
       D3DXMATRIX *pout, //  
       float *pDeeterminant,
       const D3DXMATRIX *pM);  //  
D3DXMATRIX A(...);
D3DXMATRIX B;
D3DXMatriInverse(&B , 0 , &A);

10.平行移動行列:
D3DXMATRIX *D3DXMatrixTranslation(
       D3DXMATRIX *pout,  //  
       float x,  //  x 
       float y,  //  y 
       float z);  //  z 

11.回転行列:
//  X 
D3DXMATRIX *D3DXMatriRotationX(
       D3DXMATRIX *pout,
       float Angle);
 //  Y 
D3DXMATRIX *D3DXMatriRotationY(
       D3DXMATRIX *pout,  
       float Angle);
//  Z 
D3DXMATRIX *D3DXMatriRotationZ(
       D3DXMATRIX *pout,
       float Angle);

回転行列Rの逆行列はその回転と等しく、このような特徴を備えた行列を直交行列と呼ぶ.
12.比例変換行列
D3DXMATRIX *D3DXMatrixScaling(
       D3DXMATRIX *pout,   //  
       D3DXMATRIX sx,       // x 
       D3DXMATRIX sy,       // y 
       D3DXMATRIX sz);     // z 

13.ベクトルと点の変換
//  , 4 1
D3DXVECTOR3 *D3DXVec3TransformCoord(
       D3DXVECTOR3*pout,
       CONST D3DXVECTOR3 *pV,
       CONST D3DXMATRIX *pm);
//  , 4 0
D3DXVECTOR3 *D3DXVec3TransformNormal(
       D3DXVECTOR3 *pout,
       CONST D3DXVECTOR3 *pV,
       CONST D3DXMATRIX *pM);

14.COM(コンポーネントオブジェクトモデル)COMインタフェースを作成する時、C++キーワードnewを使用してはいけない.1つのインタフェースを使用し終わったら、そのインタフェースに対応するReleaseメソッドを呼び出す必要があります.COMインタフェースにはプレフィックスが1つある.
15.表面は、Direct 3 Dが主に2 D画像データを記憶する画素行列である.本質的には線形配列である.幅(width)と高さ(height)は画素で測定され、スパン(pitch)はバイトで測定される.
// _surface IDirect3DSurface9 interface 
//  
D3DSURFACE_DESC sufaceDesc;
_surface->GetDesc(& surfaceDesc);

//  
D3DLOCKED_RECT lockedRect;
_surface->LockedRect(
       & lockedRect,   //  
       0,                      //  
       0);                    //  

//  
DWORD * imageData = (DWORD *)lockedRect.pBits;
for(int i = 0; i < surfaceDesc.Height ; i++)
{
   for(int j=0; jUnlockedRect();