Bagikan melalui


Fungsi D3DXComputeTangentFrame

Tangen komputasi, binormal, dan vektor normal untuk jala.

Sintaks

HRESULT D3DXComputeTangentFrame(
  _In_ ID3DXMesh *pMesh,
  _In_ DWORD     dwOptions
);

Parameter

pMesh [in]

Jenis: ID3DXMesh*

Arahkan ke objek mesh ID3DXMesh input.

dwOptions [in]

Jenis: DWORD

Kombinasi satu atau beberapa bendera D3DXTANGENT .

Gunakan NULL untuk menentukan opsi berikut:

  • Berat panjang vektor normal dengan sudut, dalam radian, disusun oleh dua tepi meninggalkan puncak.
  • Menghitung koordinat Kartesius ortogonal dari koordinat tekstur UV.
  • Tekstur tidak dibungkus dalam arah U atau V
  • Turunan parsial sehubungan dengan koordinat tekstur dinormalisasi.
  • Simpul diurutkan ke arah berlawanan arah jarum arah di sekitar setiap segitiga.
  • Gunakan vektor normal per vertex yang sudah ada dalam jala input.
  • Hasilnya akan disimpan dalam jala input asli. Fungsi akan gagal jika simpul baru perlu dibuat.

Menampilkan nilai

Jenis: HRESULT

Jika fungsi berhasil, nilai yang dikembalikan S_OK. Jika fungsi gagal, nilai yang dikembalikan dapat berupa salah satu hal berikut: D3DERR_INVALIDCALL, D3DXERR_INVALIDDATA, E_OUTOFMEMORY.

Keterangan

Fungsi ini hanya memanggil D3DXComputeTangentFrameEx dengan parameter input berikut:

D3DXComputeTangentFrameEx(pMesh, D3DDECLUSAGE_TEXCOORD, 0,   
      D3DDECLUSAGE_BINORMAL, 0, D3DDECLUSAGE_TANGENT, 0, 
      D3DDECLUSAGE_NORMAL, 0, 
      dwOptions | D3DXTANGENT_GENERATE_IN_PLACE,
      NULL, 0.01f, 0.25f, 0.01f, NULL, NULL);

Singularitas ditangani sesuai kebutuhan dengan mengelompokkan tepi dan memisahkan simpul. Jika ada simpul yang perlu dipisahkan, fungsi akan gagal. Vektor normal komputasi di setiap puncak selalu dinormalisasi untuk memiliki panjang unit.

Solusi paling kuat untuk menghitung koordinat Kartesius ortogonal adalah tidak mengatur bendera D3DXTANGENT_ORTHOGONALIZE_FROM_U dan D3DXTANGENT_ORTHOGONALIZE_FROM_V, sehingga koordinat ortogonal dihitung dari kedua koordinat tekstur UV. Namun, dalam hal ini, jika U atau V adalah nol, maka fungsi akan menghitung koordinat ortogonal masing-masing menggunakan D3DXTANGENT_ORTHOGONALIZE_FROM_V atau D3DXTANGENT_ORTHOGONALIZE_FROM_U.

Persyaratan

Persyaratan Nilai
Header
D3DX9Mesh.h
Pustaka
D3dx9.lib

Lihat juga

Fungsi Jala

D3DXComputeTangentFrameEx

D3DXTANGENT