D3DXMATRIXA16 結構 (D3dx9math.h)

注意

D3DX 公用程式程式庫已被取代。 建議您改用 DirectXMath

包含方法和運算子多載的 4x4、16 位元組對齊矩陣。

語法

typedef struct D3DXMATRIXA16 {
  FLOAT _ij;
} D3DXMATRIXA16, *LPD3DXMATRIXA16;

成員

_Ij

類型: FLOAT

矩陣的 (i、 j) 元件,其中 i 是列號,而 j 是資料行編號。 例如,_34 表示與 [a₃₄],第三個數據列和第四個數據行中的元件相同。

備註

D3DX 數學函式使用時,已針對 Intel Pentium 4 處理器的改善效能優化 16 位元組對齊矩陣。 矩陣與建立位置無關:在程式堆疊、堆積或全域範圍中對齊。 對齊方式是使用__declspec (對齊 (16) ) 來完成,這僅適用于 Visual C++ .NET 和 Visual C++ 6.0 安裝處理器套件。 不幸的是,無法偵測處理器套件,因此預設只會使用 Visual C++ .NET 開啟位元組對齊。

向量和四元數不會在 D3DX 中對齊位元組。 搭配 D3DX 數學函數使用向量和四元數時,請使用_declspec (對齊 (16) ) 來產生位元組對齊向量和四元數,因為它們會大幅提升效能。 此處會顯示_declspec的定義。

#define D3DX_ALIGN16 __declspec(align(16))

其他編譯器會將 D3DXMATRIXA16 解譯為 D3DXMATRIX。 在未實際對齊矩陣的編譯器上使用這個結構可能會有問題,因為它不會公開忽略對齊的 Bug。 例如,如果 D3DXMATRIXA16 物件位於結構或類別內, 則 memcpy 可能會使用緊密封裝 (忽略 16 位元組界限) 。 如果編譯器有時會加入矩陣對齊,這會導致建置中斷。

D3DXMATRIXA16

D3DXMATRIXA16 具有下列 C++ 延伸模組。

typedef struct _D3DXMATRIXA16 : public D3DXMATRIX
{
    _D3DXMATRIXA16();
    _D3DXMATRIXA16( CONST FLOAT * f);
    _D3DXMATRIXA16( CONST D3DMATRIX& m);
    _D3DXMATRIXA16( FLOAT _11, FLOAT _12, FLOAT _13, FLOAT _14,
                    FLOAT _21, FLOAT _22, FLOAT _23, FLOAT _24,
                    FLOAT _31, FLOAT _32, FLOAT _33, FLOAT _34,
                    FLOAT _41, FLOAT _42, FLOAT _43, FLOAT _44 );
    void* operator new(size_t s);
    void* operator new[](size_t s);

    // The two operators below are not virtual operators. If you cast
    //   to D3DXMATRIX, do not delete using them
    void operator delete(void* p);
    void operator delete[](void* p);

    struct _D3DXMATRIXA16& operator=(CONST D3DXMATRIX& rhs);
} _D3DXMATRIXA16;

typedef D3DX_ALIGN16 _D3DXMATRIXA16 D3DXMATRIXA16, *LPD3DXMATRIXA16;

規格需求

需求
標頭
D3dx9math.h

另請參閱

D3DX 結構

D3DXMATRIX