Struktur D3DXMATRIXA16 (D3DX10Math.h)
Catatan
Pustaka utilitas D3DX tidak digunakan lagi. Kami menyarankan agar Anda menggunakan DirectXMath sebagai gantinya.
Matriks selaras 4x4, 16 byte yang berisi metode dan kelebihan beban operator.
Sintaks
typedef struct D3DXMATRIXA16 {
FLOAT _ij;
} D3DXMATRIXA16, *LPD3DXMATRIXA16;
Anggota
-
_Ij
-
Jenis: FLOAT
-
Komponen (i, j) dari matriks, di mana i adalah nomor baris dan j adalah nomor kolom. Misalnya, _34 berarti sama dengan [a₃₄], komponen di baris ketiga dan kolom keempat.
Keterangan
Matriks selaras 16 byte, ketika digunakan oleh fungsi matematika D3DX, telah dioptimalkan untuk meningkatkan performa pada prosesor Intel Pentium 4. Matriks selaras terlepas dari tempat matriks dibuat: pada tumpukan program, dalam tumpukan, atau dalam cakupan global. Perataan dicapai menggunakan __declspec(align(16)), yang berfungsi dengan Visual C++ .NET dan dengan Visual C++ 6.0 hanya ketika paket prosesor diinstal. Sayangnya, tidak ada cara untuk mendeteksi paket prosesor, sehingga perataan byte diaktifkan secara default hanya dengan Visual C++ .NET.
Vektor dan kuaternion tidak diratakan byte dalam D3DX. Saat menggunakan vektor dan kuaternion dengan fungsi matematika D3DX, gunakan _declspec(align(16)) untuk menghasilkan vektor dan kuaternion sejajar byte, karena akan berkinerja jauh lebih baik. Definisi _declspec ditampilkan di sini.
#define D3DX_ALIGN16 __declspec(align(16))
Pengkompilasi lain menginterpretasikan D3DXMATRIXA16 sebagai D3DXMATRIX. Menggunakan struktur ini pada pengompilasi yang sebenarnya tidak menyelaraskan matriks bisa bermasalah karena tidak akan mengekspos bug yang mengabaikan perataan. Misalnya, jika objek D3DXMATRIXA16 berada di dalam struktur atau kelas, memcpy mungkin dilakukan dengan pengemasan yang ketat (mengabaikan batas 16 byte). Ini akan menyebabkan hentian build jika pengkompilasi kadang-kadang menambahkan penyelarasan matriks.
Ekstensi D3DXMATRIXA16
D3DXMATRIXA16 memiliki ekstensi C++berikut.
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;
Persyaratan
Persyaratan | Nilai |
---|---|
Header |
|
Lihat juga
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk