Bagikan melalui


Fungsi D3DXUVAtlasCreate

Buat atlas UV untuk jala.

Sintaks

HRESULT D3DXUVAtlasCreate(
  _In_        LPD3DXMESH      pMesh,
  _In_        UINT            dwMaxChartNumber,
  _In_        FLOAT           fMaxStretch,
  _In_        UINT            dwWidth,
  _In_        UINT            dwHeight,
  _In_        FLOAT           fGutter,
  _In_        DWORD           dwTextureIndex,
  _In_  const DWORD           *pdwAdjacency,
        const DWORD           *pdwFalseEdges,
  _In_        FLOAT           *pfIMTArray,
  _In_        LPD3DXUVATLASCB pCallback,
  _In_        FLOAT           fCallbackFrequency,
  _In_        LPVOID          pUserContext,
  _In_        DWORD           dwOptions,
  _In_        LPD3DXMESH      *ppMeshOut,
  _Out_       LPD3DXBUFFER    *ppFacePartitioning,
  _Out_       LPD3DXBUFFER    *ppVertexRemapArray,
  _Out_       FLOAT           *pfMaxStretchOut,
  _Out_       UINT            *pdwNumChartsOut
);

Parameter

pMesh [in]

Jenis: LPD3DXMESH

Penunjuk ke jala input (lihat ID3DXMesh) yang berisi geometri objek untuk menghitung atlas. Minimal, jala harus berisi data posisi dan koordinat tekstur 2D.

dwMaxChartNumber [in]

Jenis: UINT

Jumlah maksimum bagan untuk mempartisi jala. Lihat komentar tentang mode partisi. Gunakan 0 untuk memberi tahu D3DX bahwa atlas harus diparameterkan berdasarkan peregangan.

fMaxStretch [in]

Jenis: FLOAT

Jumlah peregangan yang diizinkan. 0 berarti tidak ada peregangan yang diizinkan, 1 berarti sejumlah peregangan dapat digunakan.

dwWidth [in]

Jenis: UINT

Lebar tekstur.

dwHeight [in]

Jenis: UINT

Tinggi tekstur.

fGutter [in]

Jenis: FLOAT

Jarak minimum, dalam texel, antara dua bagan pada atlas. Selokan selalu diskalakan oleh lebar; jadi, jika selokan 2,5 digunakan pada tekstur 512x512, maka jarak minimum antara dua bagan adalah 2,5 / 512,0 texel.

dwTextureIndex [in]

Jenis: DWORD

Indeks koordinat tekstur berbasis nol yang mengidentifikasi kumpulan koordinat tekstur mana yang akan digunakan.

pdwAdjacency [in]

Jenis: const DWORD*

Penunjuk ke array data yang berdekatan. dengan 3 DWORD per wajah, menunjukkan segitiga mana yang berdekatan satu sama lain (lihat ID3DXBaseMesh::GenerateAdjacency).

pdwFalseEdges

Jenis: const DWORD*

Array dengan 3 DWORDS per wajah. Setiap wajah menunjukkan apakah tepi salah atau tidak. Tepi non-false ditunjukkan oleh -1, tepi palsu ditunjukkan oleh nilai lain. Ini memungkinkan parameterisasi jala quad di mana tepi ke bawah tengah setiap quad tidak akan dipotong.

pfIMTArray [in]

Jenis: FLOAT*

Penunjuk ke array tensor metrik terintegrasi yang menjelaskan cara meregangkan segitiga (lihat IntegratedMetricTensor).

pCallback [in]

Jenis: LPD3DXUVATLASCB

Penunjuk ke fungsi panggilan balik (lihat LPD3DXUVATLASCB) yang berguna untuk memantau kemajuan.

fCallbackFrequency [in]

Jenis: FLOAT

Tentukan seberapa sering D3DX akan memanggil panggilan balik; nilai default yang wajar adalah 0,0001f.

pUserContent [in]

Jenis: LPVOID

Penunjuk ke nilai yang ditentukan pengguna yang diteruskan ke fungsi panggilan balik; biasanya digunakan oleh aplikasi untuk meneruskan pointer ke struktur data yang menyediakan informasi konteks untuk fungsi panggilan balik.

dwOptions [in]

Jenis: DWORD

Tentukan kualitas bagan yang dihasilkan. Lihat D3DXUVATLAS.

ppMeshOut [in]

Jenis: LPD3DXMESH*

Arahkan ke jala yang dibuat dengan atlas (lihat ID3DXMesh).

ppFacePartitioning [out]

Jenis: LPD3DXBUFFER*

Penunjuk ke array data pemartisian wajah akhir. Setiap elemen berisi satu DWORD per wajah (lihat ID3DXBuffer).

ppVertexRemapArray [out]

Jenis: LPD3DXBUFFER*

Penunjuk ke array simpul yang dipetakan ulang. Setiap elemen array mengidentifikasi puncak asli yang berasal dari setiap puncak akhir (jika puncak dipisahkan selama pemindahan ulang). Setiap elemen array berisi satu DWORD per vertex.

pfMaxStretchOut [out]

Jenis: FLOAT*

Penunjuk ke nilai peregangan maksimum yang dihasilkan oleh algoritma atlas. Rentangnya antara 0,0 dan 1,0.

pdwNumChartsOut [out]

Jenis: UINT*

Penunjuk ke jumlah bagan yang dibuat oleh algoritma atlas. Jika dwMaxChartNumber terlalu rendah, parameter ini akan mengembalikan jumlah minimum bagan yang diperlukan untuk membuat atlas.

Menampilkan nilai

Jenis: HRESULT

Jika fungsi berhasil, nilai yang dikembalikan adalah D3D_OK; jika tidak, nilainya D3DERR_INVALIDCALL.

Keterangan

D3DXUVAtlasCreate dapat mempartisi geometri jala dengan dua cara:

  • Berdasarkan jumlah bagan
  • Berdasarkan peregangan maksimum yang diizinkan. Jika peregangan maksimum yang diizinkan adalah 0, setiap segitiga kemungkinan akan berada di bagannya sendiri.

Persyaratan

Persyaratan Nilai
Header
D3DX9Mesh.h
Pustaka
D3dx9.lib

Lihat juga

Fungsi UVAtlas

Alat Command-Line Atlas UV (uvatlas.exe)