Bagikan melalui


Format Koordinat Tekstur (Direct3D 9)

Koordinat tekstur dalam Direct3D dapat mencakup satu, dua, tiga, atau empat elemen floating point untuk mengatasi tekstur dengan berbagai tingkat dimensi. Tekstur 1D - permukaan tekstur dengan dimensi texel 1-by-n - ditangani oleh satu koordinat tekstur. Kasus yang paling umum, tekstur 2D, ditangani dengan dua koordinat tekstur yang biasa disebut Anda dan v. Direct3D mendukung dua jenis tekstur 3D, peta lingkungan kubik, dan tekstur volume. Peta lingkungan kubik tidak benar-benar 3D, tetapi ditangani dengan vektor 3 elemen. Untuk detailnya, lihat Pemetaan Lingkungan Kubik (Direct3D 9).

Seperti yang dijelaskan dalam Fixed Function FVF Codes (Direct3D 9), aplikasi mengodekan koordinat tekstur dalam format vertex. Format puncak dapat mencakup beberapa set koordinat tekstur. Gunakan D3DFVF_TEX0 melalui D3DFVF_TEX8 D3DFVF untuk menjelaskan format vertex yang tidak menyertakan koordinat tekstur, atau sebanyak delapan set.

Setiap kumpulan koordinat tekstur dapat memiliki antara satu dan empat elemen. Bendera D3DFVF_TEXTUREFORMAT1 melalui D3DFVF_TEXTUREFORMAT4 menjelaskan jumlah elemen dalam koordinat tekstur dalam satu set, tetapi bendera ini tidak digunakan sendiri. Sebaliknya, kumpulan makro D3DFVF_TEXCOORDSIZEN menggunakan bendera ini untuk membuat pola bit yang menjelaskan jumlah elemen yang digunakan oleh sekumpulan koordinat tekstur tertentu dalam format vertex. Makro ini menerima satu parameter yang mengidentifikasi indeks kumpulan koordinat yang jumlah elemennya sedang ditentukan. Contoh berikut menggambarkan bagaimana makro ini digunakan.

// This vertex format contains two sets of texture coordinates.
// The first set (index 0) has 2 elements, and the second set 
// has 1 element. The description for this vertex format would be: 
//     dwFVF = D3DFVF_XYZ  | D3DFVF_NORMAL | D3DFVF_DIFFUSE | D3DFVF_TEX2 |
//             D3DFVF_TEXCOORDSIZE2(0) | D3DFVF_TEXCOORDSIZE1(1); 
//
typedef struct CVF
{
    D3DVECTOR position;
    D3DVECTOR normal;
    D3DCOLOR  diffuse;
    float     u, v;   // 1st set, 2D
    float     t;      // 2nd set, 1D
} CustomVertexFormat;

Catatan

Dengan pengecualian peta lingkungan kubik dan tekstur volume, rasterizer tidak dapat mengatasi tekstur dengan menggunakan lebih dari dua elemen. Aplikasi dapat menyediakan hingga tiga elemen untuk koordinat tekstur, tetapi hanya jika teksturnya adalah peta kubus, tekstur volume, atau bendera transformasi tekstur D3DTTFF_PROJECTED digunakan. Bendera D3DTTFF_PROJECTED menyebabkan rasterizer membagi dua elemen pertama dengan elemen ketiga (atau n). Untuk informasi selengkapnya, lihat Transformasi Koordinat Tekstur (Direct3D 9).

 

Koordinat Tekstur