DX筆記-現在有點餓了

DirectX9.0

基礎知識:用類D3DXVETOR3表示3D空間中的向量

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.向量的規(guī)范化:

D3DXVECTOR3M* D3DXVec3Normalize(
       D3DXVECTOR3 * pOUT,    //結果
       const D3DVECTOR3 * pV);    //要求的向量指針

4.向量加法:只有維數相同的兩個向量才能相加
重載加法運算符(+)
D3DXVECTOR3 sum = u + v;

5.向量減法:
重載減法運算符(-)
D3DXVECTOR3 different = u - v;

6.數乘:
D3DXVECTOR3 scaledVec = u*10.0f;

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(組件對象模型)
創(chuàng)建COM接口時不可使用C++關鍵字new哼凯。使用完一個接口應調用該接口相應的Release方法。
COM接口都有一個前綴1.

15.表面
表面是Direct3D主要用于存儲2D圖像數據的一個像素矩陣楚里。本質上是一個線性數組断部。
寬度(width)和高度(height)都用像素來度量,跨度(pitch)用字節(jié)來度量班缎。

// _surface是一個IDirect3DSurface9 interface的指針
// 獲得當前表面的描述信息
D3DSURFACE_DESC sufaceDesc;
_surface->GetDesc(& surfaceDesc);

// 得到一個指向表面像素數據的指針
D3DLOCKED_RECT lockedRect;
_surface->LockedRect(
       & lockedRect,   // 指向獲得的數據指針
       0,                      // 指向整個表面
       0);                    // 沒有指向的標志

// 循環(huán)訪問表面上的每個像素并將其標紅
DWORD * imageData = (DWORD *)lockedRect.pBits;
for(int i = 0; i < surfaceDesc.Height ; i++)
{
   for(int j=0; j<surfaceDesc.Width; j++)
      {
         // index into texture, note we use the pitch and divide by four
         // since the pitch is given in bytes and there are 4 bytes per DWORD
         int index = i * lockedRect.Pitch / 4 + j;
         imagedata[index] = 0xffff0000;  // 標紅
       }
}
_surface->UnlockedRect(); 
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末蝴光,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子达址,更是在濱河造成了極大的恐慌蔑祟,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,639評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件沉唠,死亡現場離奇詭異疆虚,居然都是意外死亡,警方通過查閱死者的電腦和手機满葛,發(fā)現死者居然都...
    沈念sama閱讀 90,277評論 3 385
  • 文/潘曉璐 我一進店門径簿,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人纱扭,你說我怎么就攤上這事±苷冢” “怎么了乳蛾?”我有些...
    開封第一講書人閱讀 157,221評論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我肃叶,道長蹂随,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,474評論 1 283
  • 正文 為了忘掉前任因惭,我火速辦了婚禮岳锁,結果婚禮上,老公的妹妹穿的比我還像新娘蹦魔。我一直安慰自己激率,他們只是感情好,可當我...
    茶點故事閱讀 65,570評論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般逞度。 火紅的嫁衣襯著肌膚如雪抬旺。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,816評論 1 290
  • 那天蛙奖,我揣著相機與錄音,去河邊找鬼。 笑死讳推,一個胖子當著我的面吹牛,可吹牛的內容都是我干的玩般。 我是一名探鬼主播银觅,決...
    沈念sama閱讀 38,957評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼壤短!你這毒婦竟也來了设拟?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 37,718評論 0 266
  • 序言:老撾萬榮一對情侶失蹤久脯,失蹤者是張志新(化名)和其女友劉穎纳胧,沒想到半個月后,有當地人在樹林里發(fā)現了一具尸體帘撰,經...
    沈念sama閱讀 44,176評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡跑慕,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 36,511評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現自己被綠了摧找。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片核行。...
    茶點故事閱讀 38,646評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖蹬耘,靈堂內的尸體忽然破棺而出芝雪,到底是詐尸還是另有隱情,我是刑警寧澤综苔,帶...
    沈念sama閱讀 34,322評論 4 330
  • 正文 年R本政府宣布惩系,位于F島的核電站位岔,受9級特大地震影響,放射性物質發(fā)生泄漏堡牡。R本人自食惡果不足惜抒抬,卻給世界環(huán)境...
    茶點故事閱讀 39,934評論 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望晤柄。 院中可真熱鬧擦剑,春花似錦、人聲如沸芥颈。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,755評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽浇借。三九已至捉撮,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間妇垢,已是汗流浹背巾遭。 一陣腳步聲響...
    開封第一講書人閱讀 31,987評論 1 266
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留闯估,地道東北人灼舍。 一個月前我還...
    沈念sama閱讀 46,358評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像涨薪,于是被迫代替她去往敵國和親骑素。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 43,514評論 2 348

推薦閱讀更多精彩內容