Fungsi D3DXPlaneTransformArray (D3dx9math.h)
Catatan
Pustaka utilitas D3DX tidak digunakan lagi. Kami menyarankan agar Anda menggunakan DirectXMath sebagai gantinya.
Mengubah array bidang dengan matriks. Vektor yang menggambarkan setiap bidang harus dinormalisasi.
Sintaks
D3DXPLANE* D3DXPlaneTransformArray(
_Inout_ D3DXPLANE *pOut,
_Out_ UINT OutStride,
_In_ const D3DXPLANE *pP,
_In_ UINT PStride,
_In_ const D3DXMATRIX *pM,
_In_ UINT n
);
Parameter
-
pOut [masuk, keluar]
-
Jenis: D3DXPLANE*
Penunjuk ke struktur D3DXPLANE yang berisi bidang transformasi yang dihasilkan. Lihat Contoh.
-
OutStride [out]
-
Jenis: UINT
Langkah masing-masing bidang yang diubah.
-
pP [in]
-
Jenis: const D3DXPLANE*
Arahkan ke struktur input D3DXPLANE , yang berisi array bidang yang akan diubah. Vektor (a,b,c) yang menjelaskan bidang harus dinormalisasi sebelum fungsi ini dipanggil. Lihat Contoh.
-
PStride [in]
-
Jenis: UINT
Langkah dari setiap bidang yang tidak diubah.
-
pM [in]
-
Jenis: const D3DXMATRIX*
Penunjuk ke struktur D3DXMATRIX sumber, yang berisi urutan terbalik dari nilai transformasi.
-
n [in]
-
Jenis: UINT
Jumlah bidang yang akan diubah.
Nilai kembali
Jenis: D3DXPLANE*
Penunjuk ke struktur D3DXPLANE , mewakili bidang yang diubah. Ini adalah nilai yang sama yang dikembalikan dalam parameter pOut sehingga fungsi ini dapat digunakan sebagai parameter untuk fungsi lain.
Keterangan
Contoh ini mengubah satu bidang dengan menerapkan skala yang tidak seragam.
#define ARRAYSIZE 4
D3DXPLANE planeNew[ARRAYSIZE];
D3DXPLANE plane[ARRAYSIZE];
for(int i = 0; i < ARRAYSIZE; i++)
{
plane = D3DXPLANE( 0.0f, 1.0f, 1.0f, 0.0f );
D3DXPlaneNormalize( &plane[i], &plane[i] );
}
D3DXMATRIX matrix;
D3DXMatrixScaling( &matrix, 1.0f, 2.0f, 3.0f );
D3DXMatrixInverse( &matrix, NULL, &matrix );
D3DXMatrixTranspose( &matrix, &matrix );
D3DXPlaneTransformArray( &planeNew, sizeof (D3DXPLANE), &plane,
sizeof (D3DXPLANE), &matrix, ARRAYSIZE );
Bidang dijelaskan oleh ax + by + cz + dw = 0. Bidang pertama dibuat dengan (a,b,c,d) = (0,1,1,0), yang merupakan bidang yang dijelaskan oleh y + z = 0. Setelah penskalakan, bidang baru berisi (a,b,c,d) = (0, 0,353f, 0,235f, 0), yang menunjukkan bidang baru yang akan dijelaskan oleh 0,353y + 0,235z = 0.
Parameter pM berisi urutan terbalik dari matriks transformasi. Transpose terbalik diperlukan oleh metode ini sehingga vektor normal dari bidang yang diubah juga dapat diubah dengan benar.
Persyaratan
Persyaratan | Nilai |
---|---|
Header |
|
Pustaka |
|
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