D3DFORMAT
Menentukan berbagai jenis format permukaan.
typedef enum _D3DFORMAT {
D3DFMT_UNKNOWN = 0,
D3DFMT_R8G8B8 = 20,
D3DFMT_A8R8G8B8 = 21,
D3DFMT_X8R8G8B8 = 22,
D3DFMT_R5G6B5 = 23,
D3DFMT_X1R5G5B5 = 24,
D3DFMT_A1R5G5B5 = 25,
D3DFMT_A4R4G4B4 = 26,
D3DFMT_R3G3B2 = 27,
D3DFMT_A8 = 28,
D3DFMT_A8R3G3B2 = 29,
D3DFMT_X4R4G4B4 = 30,
D3DFMT_A2B10G10R10 = 31,
D3DFMT_A8B8G8R8 = 32,
D3DFMT_X8B8G8R8 = 33,
D3DFMT_G16R16 = 34,
D3DFMT_A2R10G10B10 = 35,
D3DFMT_A16B16G16R16 = 36,
D3DFMT_A8P8 = 40,
D3DFMT_P8 = 41,
D3DFMT_L8 = 50,
D3DFMT_A8L8 = 51,
D3DFMT_A4L4 = 52,
D3DFMT_V8U8 = 60,
D3DFMT_L6V5U5 = 61,
D3DFMT_X8L8V8U8 = 62,
D3DFMT_Q8W8V8U8 = 63,
D3DFMT_V16U16 = 64,
D3DFMT_A2W10V10U10 = 67,
D3DFMT_UYVY = MAKEFOURCC('U', 'Y', 'V', 'Y'),
D3DFMT_R8G8_B8G8 = MAKEFOURCC('R', 'G', 'B', 'G'),
D3DFMT_YUY2 = MAKEFOURCC('Y', 'U', 'Y', '2'),
D3DFMT_G8R8_G8B8 = MAKEFOURCC('G', 'R', 'G', 'B'),
D3DFMT_DXT1 = MAKEFOURCC('D', 'X', 'T', '1'),
D3DFMT_DXT2 = MAKEFOURCC('D', 'X', 'T', '2'),
D3DFMT_DXT3 = MAKEFOURCC('D', 'X', 'T', '3'),
D3DFMT_DXT4 = MAKEFOURCC('D', 'X', 'T', '4'),
D3DFMT_DXT5 = MAKEFOURCC('D', 'X', 'T', '5'),
D3DFMT_D16_LOCKABLE = 70,
D3DFMT_D32 = 71,
D3DFMT_D15S1 = 73,
D3DFMT_D24S8 = 75,
D3DFMT_D24X8 = 77,
D3DFMT_D24X4S4 = 79,
D3DFMT_D16 = 80,
D3DFMT_D32F_LOCKABLE = 82,
D3DFMT_D24FS8 = 83,
#if !defined(D3D_DISABLE_9EX)
D3DFMT_D32_LOCKABLE = 84,
D3DFMT_S8_LOCKABLE = 85,
#endif // !D3D_DISABLE_9EX
D3DFMT_L16 = 81,
D3DFMT_VERTEXDATA =100,
D3DFMT_INDEX16 =101,
D3DFMT_INDEX32 =102,
D3DFMT_Q16W16V16U16 =110,
D3DFMT_MULTI2_ARGB8 = MAKEFOURCC('M','E','T','1'),
D3DFMT_R16F = 111,
D3DFMT_G16R16F = 112,
D3DFMT_A16B16G16R16F = 113,
D3DFMT_R32F = 114,
D3DFMT_G32R32F = 115,
D3DFMT_A32B32G32R32F = 116,
D3DFMT_CxV8U8 = 117,
#if !defined(D3D_DISABLE_9EX)
D3DFMT_A1 = 118,
D3DFMT_A2B10G10R10_XR_BIAS = 119,
D3DFMT_BINARYBUFFER = 199,
#endif // !D3D_DISABLE_9EX
D3DFMT_FORCE_DWORD =0x7fffffff
} D3DFORMAT;
Keterangan
Ada beberapa jenis format:
- BackBuffer atau Format Tampilan
- Format Buffer
- Format Tekstur Terkompresi DXTn
- Format Titik Mengambang
- Format FOURCC
- Format IEEE
- Format Campuran
- Format Yang Ditandatangani
- Format Tidak Ditandatangani
- Lainnya
Semua format tercantum dari kiri ke kanan, bit paling signifikan hingga bit yang paling tidak signifikan. Misalnya, D3DFORMAT_ARGB diurutkan dari saluran bit A (alfa) yang paling signifikan, ke saluran bit B yang paling tidak signifikan (biru). Saat melintas data permukaan, data disimpan dalam memori dari bit paling tidak signifikan ke bit yang paling signifikan, yang berarti bahwa urutan saluran dalam memori dari bit paling tidak signifikan (biru) ke bit paling signifikan (alfa).
Nilai default untuk format yang berisi saluran yang tidak terdefinisi (G16R16, A8, dan sebagainya) adalah 1. Satu-satunya pengecualian adalah format A8, yang diinisialisasi ke 000 untuk tiga saluran warna.
Urutan bit berasal dari byte yang paling signifikan terlebih dahulu, jadi D3DFMT_A8L8 menunjukkan bahwa byte tinggi dari format 2-byte ini adalah alfa. D3DFMT_D16 menunjukkan nilai bilangan bulat 16-bit dan permukaan yang dapat dikunci aplikasi.
Format piksel telah dipilih untuk mengaktifkan ekspresi format ekstensi yang ditentukan vendor perangkat keras, serta untuk menyertakan metode FOURCC yang mapan. Kumpulan format yang dipahami oleh runtime Direct3D ditentukan oleh D3DFORMAT.
Perhatikan bahwa format disediakan oleh vendor perangkat keras independen (IHV) dan banyak kode FOURCC tidak tercantum. Format dalam enumerasi ini unik karena mereka diberi sanksi oleh runtime, yang berarti bahwa rasterizer referensi akan beroperasi pada semua jenis ini. Format yang disediakan IHV akan didukung oleh IHV individu berdasarkan kartu demi kartu.
BackBuffer atau Format Tampilan
Format ini adalah satu-satunya format yang valid untuk buffer belakang atau tampilan.
Format | Buffer belakang | Tampilan |
---|---|---|
A2R10G10B10 | x | x (hanya mode layar penuh) |
A8R8G8B8 | x | |
X8R8G8B8 | x | x |
A1R5G5B5 | x | |
X1R5G5B5 | x | x |
R5G6B5 | x | x |
Format Buffer
Kedalaman, stensil, puncak, dan buffer indeks masing-masing memiliki format yang unik.
Bendera buffer | Nilai | Format |
---|---|---|
D3DFMT_D16_LOCKABLE | 70 | Kedalaman bit z-buffer 16-bit. |
D3DFMT_D32 | 71 | Kedalaman bit z-buffer 32-bit. |
D3DFMT_D15S1 | 73 | Kedalaman bit z-buffer 16-bit di mana 15 bit dicadangkan untuk saluran kedalaman dan 1 bit dicadangkan untuk saluran stensil. |
D3DFMT_D24S8 | 75 | Kedalaman bit z-buffer 32-bit menggunakan 24 bit untuk saluran kedalaman dan 8 bit untuk saluran stensil. |
D3DFMT_D24X8 | 77 | Kedalaman bit z-buffer 32-bit menggunakan 24 bit untuk saluran kedalaman. |
D3DFMT_D24X4S4 | 79 | Kedalaman bit z-buffer 32-bit menggunakan 24 bit untuk saluran kedalaman dan 4 bit untuk saluran stensil. |
D3DFMT_D32F_LOCKABLE | 82 | Format yang dapat dikunci di mana nilai kedalaman direpresentasikan sebagai angka floating-point IEEE standar. |
D3DFMT_D24FS8 | 83 | Format yang tidak dapat dikunci yang berisi kedalaman 24 bit (dalam format titik mengambang 24-bit - 20e4) dan 8 bit stensil. |
D3DFMT_D32_LOCKABLE | 84 | Buffer kedalaman 32-bit yang dapat dikunci.
Perbedaan antara Direct3D 9 dan Direct3D 9Ex: Bendera ini hanya tersedia di Direct3D 9Ex. |
D3DFMT_S8_LOCKABLE | 85 | Buffer stensil 8-bit yang dapat dikunci.
Perbedaan antara Direct3D 9 dan Direct3D 9Ex: Bendera ini hanya tersedia di Direct3D 9Ex. |
D3DFMT_D16 | 80 | Kedalaman bit z-buffer 16-bit. |
D3DFMT_VERTEXDATA | 100 | Menjelaskan permukaan buffer vertex. |
D3DFMT_INDEX16 | 101 | Kedalaman bit buffer indeks 16-bit. |
D3DFMT_INDEX32 | 102 | Kedalaman bit buffer indeks 32-bit. |
Semua format stensil kedalaman kecuali D3DFMT_D16_LOCKABLE menunjukkan tidak ada pengurutan bit tertentu per piksel, dan driver diizinkan untuk mengonsumsi lebih dari jumlah saluran bit per kedalaman yang ditunjukkan (tetapi bukan saluran stensil).
Format Tekstur Terkompresi DXTn
Bendera ini digunakan untuk tekstur terkompresi:
Bendera Tekstur Terkompresi DXTn | Nilai | Format |
---|---|---|
D3DFMT_DXT1 | MAKEFOURCC('D', 'X', 'T', '1') | Format tekstur kompresi DXT1 |
D3DFMT_DXT2 | MAKEFOURCC('D', 'X', 'T', '2') | Format tekstur kompresi DXT2 |
D3DFMT_DXT3 | MAKEFOURCC('D', 'X', 'T', '3') | Format tekstur kompresi DXT3 |
D3DFMT_DXT4 | MAKEFOURCC('D', 'X', 'T', '4') | Format tekstur kompresi DXT4 |
D3DFMT_DXT5 | MAKEFOURCC('D', 'X', 'T', '5') | Format tekstur kompresi DXT5 |
Runtime tidak akan memungkinkan aplikasi untuk membuat permukaan menggunakan format DXTn kecuali dimensi permukaan adalah kelipatan 4. Ini berlaku untuk permukaan luar layar biasa, target render, tekstur 2D, tekstur kubus, dan tekstur volume.
Format Floating-Point
Bendera ini digunakan untuk format permukaan floating-point. Format 16-bit per saluran ini juga dikenal sebagai format s10e5.
Bendera floating-point | Nilai | Format |
---|---|---|
D3DFMT_R16F | 111 | Format float 16-bit menggunakan 16 bit untuk saluran merah. |
D3DFMT_G16R16F | 112 | Format float 32-bit menggunakan 16 bit untuk saluran merah dan 16 bit untuk saluran hijau. |
D3DFMT_A16B16G16R16F | 113 | Format float 64-bit menggunakan 16 bit untuk setiap saluran (alfa, biru, hijau, merah). |
Format FOURCC
Data dalam format FOURCC adalah data terkompresi.
MAKEFOURCC
Makro untuk menghasilkan kode empat karakter berikut:
#define MAKEFOURCC(ch0, ch1, ch2, ch3) \
((DWORD)(BYTE)(ch0) | ((DWORD)(BYTE)(ch1) << 8) | \
((DWORD)(BYTE)(ch2) << 16) | ((DWORD)(BYTE)(ch3) << 24 ))
Berikut adalah format FOURCC yang ditentukan:
Bendera FOURCC | Nilai | Format |
---|---|---|
D3DFMT_MULTI2_ARGB8 | MAKEFOURCC('M','E','T','1') | Tekstur MultiElement (tidak dikompresi) |
D3DFMT_G8R8_G8B8 | MAKEFOURCC('G', 'R', 'G', 'B') | Format RGB kemasan 16-bit yang dianalogikan dengan YUY2 (Y0U0, Y1V0, Y2U2, dan sebagainya). Ini membutuhkan pasangan piksel untuk mewakili nilai warna dengan benar. Piksel pertama dalam pasangan berisi 8 bit hijau (dalam 8 bit tinggi) dan 8 bit merah (dalam 8 bit rendah). Piksel kedua berisi 8 bit hijau (dalam 8 bit tinggi) dan 8 bit biru (dalam 8 bit rendah). Bersama-sama, kedua piksel berbagi komponen merah dan biru, sementara masing-masing memiliki komponen hijau yang unik (G0R0, G1B0, G2R2, dan sebagainya). Sampler tekstur tidak menormalkan warna saat melihat ke atas menjadi shader piksel; mereka tetap berada di kisaran 0,0f hingga 255,0f. Ini berlaku untuk semua model pemecah piksel yang dapat diprogram. Untuk shader piksel fungsi tetap, perangkat keras harus menormalkan ke rentang 0.f hingga 1.f dan pada dasarnya memperlakukannya sebagai tekstur YUY2. Perangkat keras yang mengekspos format ini harus memiliki anggota PixelShader1xMaxValue dari D3DCAPS9 yang diatur ke nilai yang mampu menangani rentang tersebut. |
D3DFMT_R8G8_B8G8 | MAKEFOURCC('R', 'G', 'B', 'G') | Format RGB kemasan 16-bit yang dianalogikan dengan UYVY (U0Y0, V0Y1, U2Y2, dan sebagainya). Ini membutuhkan pasangan piksel untuk mewakili nilai warna dengan benar. Piksel pertama dalam pasangan berisi 8 bit hijau (dalam 8 bit rendah) dan 8 bit merah (dalam 8 bit tinggi). Piksel kedua berisi 8 bit hijau (dalam 8 bit rendah) dan 8 bit biru (dalam 8 bit tinggi). Bersama-sama, kedua piksel berbagi komponen merah dan biru, sementara masing-masing memiliki komponen hijau yang unik (R0G0, B0G1, R2G2, dan sebagainya). Sampler tekstur tidak menormalkan warna saat melihat ke atas menjadi shader piksel; mereka tetap berada di kisaran 0,0f hingga 255,0f. Ini berlaku untuk semua model pemecah piksel yang dapat diprogram. Untuk shader piksel fungsi tetap, perangkat keras harus menormalkan ke rentang 0.f hingga 1.f dan pada dasarnya memperlakukannya sebagai tekstur YUY2. Perangkat keras yang mengekspos format ini harus memiliki anggota PixelShader1xMaxValue dari D3DCAPS9 yang diatur ke nilai yang mampu menangani rentang tersebut. |
D3DFMT_UYVY | MAKEFOURCC('U', 'Y', 'V', 'Y') | Format UYVY (kepatuhan PC98) |
D3DFMT_YUY2 | MAKEFOURCC('Y', 'U', 'Y', '2') | Format YUY2 (kepatuhan PC98) |
Format IEEE
Bendera ini digunakan untuk format permukaan floating-point. Format 32-bit per saluran ini juga dikenal sebagai format s23e8.
Bendera floating-point | Nilai | Format |
---|---|---|
D3DFMT_R32F | 114 | Format float 32-bit menggunakan 32 bit untuk saluran merah. |
D3DFMT_G32R32F | 115 | Format float 64-bit menggunakan 32 bit untuk saluran merah dan 32 bit untuk saluran hijau. |
D3DFMT_A32B32G32R32F | 116 | Format float 128-bit menggunakan 32 bit untuk setiap saluran (alfa, biru, hijau, merah). |
Format Campuran
Data dalam format campuran dapat berisi kombinasi data yang tidak ditandatangani dan data yang ditandatangani.
Bendera format campuran | Nilai | Format |
---|---|---|
D3DFMT_L6V5U5 | 61 | Format peta benjolan 16-bit dengan luminance menggunakan 6 bit untuk luminance, dan masing-masing 5 bit untuk v dan Anda. |
D3DFMT_X8L8V8U8 | 62 | Format peta benjolan 32-bit dengan luminance menggunakan 8 bit untuk setiap saluran. |
D3DFMT_A2W10V10U10 | 67 | Format peta benjolan 32-bit menggunakan 2 bit untuk alfa dan 10 bit masing-masing untuk w, v, dan Anda. |
Format Yang Ditandatangani
Data dalam format yang ditandatangani bisa positif dan negatif. Format yang ditandatangani menggunakan kombinasi data (U), (V), (W), dan (Q).
Bendera format bertanda tangan | Nilai | Format |
---|---|---|
D3DFMT_V8U8 | 60 | Format peta benjolan 16-bit menggunakan masing-masing 8 bit untuk Anda dan data v. |
D3DFMT_Q8W8V8U8 | 63 | Format peta benjolan 32-bit menggunakan 8 bit untuk setiap saluran. |
D3DFMT_V16U16 | 64 | Format peta benjolan 32-bit menggunakan 16 bit untuk setiap saluran. |
D3DFMT_Q16W16V16U16 | 110 | Format peta benjolan 64-bit menggunakan 16 bit untuk setiap komponen. |
D3DFMT_CxV8U8 | 117 | Format kompresi normal 16-bit. Sampler tekstur menghitung saluran C dari: C = sqrt(1 - U² - V²). |
Format Tidak Ditandatangani
Data dalam format yang tidak ditandatangani harus positif. Format yang tidak ditandatangani menggunakan kombinasi (R)ed, (G)reen, (B)lue, (A)lpha, (L)uminance, dan (P)alette data. Data palet juga disebut sebagai data terindeks warna karena data digunakan untuk mengindeks palet warna.
Bendera format tidak ditandatangani | Nilai | Format |
---|---|---|
D3DFMT_R8G8B8 | 20 | Format piksel RGB 24-bit dengan 8 bit per saluran. |
D3DFMT_A8R8G8B8 | 21 | Format piksel ARGB 32-bit dengan alfa, menggunakan 8 bit per saluran. |
D3DFMT_X8R8G8B8 | 22 | Format piksel RGB 32-bit, di mana 8 bit disediakan untuk setiap warna. |
D3DFMT_R5G6B5 | 23 | Format piksel RGB 16-bit dengan 5 bit untuk merah, 6 bit untuk hijau, dan 5 bit untuk biru. |
D3DFMT_X1R5G5B5 | 24 | Format piksel 16-bit di mana 5 bit dicadangkan untuk setiap warna. |
D3DFMT_A1R5G5B5 | 25 | Format piksel 16-bit di mana 5 bit dicadangkan untuk setiap warna dan 1 bit dicadangkan untuk alfa. |
D3DFMT_A4R4G4B4 | 26 | Format piksel ARGB 16-bit dengan 4 bit untuk setiap saluran. |
D3DFMT_R3G3B2 | 27 | Format tekstur RGB 8-bit menggunakan 3 bit untuk merah, 3 bit untuk hijau, dan 2 bit untuk biru. |
D3DFMT_A8 | 28 | Hanya alfa 8-bit. |
D3DFMT_A8R3G3B2 | 29 | Format tekstur ARGB 16-bit menggunakan 8 bit untuk alfa, masing-masing 3 bit untuk merah dan hijau, dan 2 bit untuk biru. |
D3DFMT_X4R4G4B4 | 30 | Format piksel RGB 16-bit menggunakan 4 bit untuk setiap warna. |
D3DFMT_A2B10G10R10 | 31 | Format piksel 32-bit menggunakan 10 bit untuk setiap warna dan 2 bit untuk alfa. |
D3DFMT_A8B8G8R8 | 32 | Format piksel ARGB 32-bit dengan alfa, menggunakan 8 bit per saluran. |
D3DFMT_X8B8G8R8 | 33 | Format piksel RGB 32-bit, di mana 8 bit disediakan untuk setiap warna. |
D3DFMT_G16R16 | 34 | Format piksel 32-bit menggunakan masing-masing 16 bit untuk hijau dan merah. |
D3DFMT_A2R10G10B10 | 35 | Format piksel 32-bit menggunakan masing-masing 10 bit untuk merah, hijau, dan biru, dan 2 bit untuk alfa. |
D3DFMT_A16B16G16R16 | 36 | Format piksel 64-bit menggunakan 16 bit untuk setiap komponen. |
D3DFMT_A8P8 | 40 | Warna 8-bit diindeks dengan 8 bit alfa. |
D3DFMT_P8 | 41 | Warna 8-bit diindeks. |
D3DFMT_L8 | 50 | Hanya luminance 8-bit. |
D3DFMT_L16 | 81 | Hanya luminasi 16-bit. |
D3DFMT_A8L8 | 51 | 16-bit menggunakan masing-masing 8 bit untuk alfa dan luminance. |
D3DFMT_A4L4 | 52 | 8-bit menggunakan masing-masing 4 bit untuk alfa dan luminance. |
D3DFMT_A1 | 118 | Monokrom 1-bit.
Perbedaan antara Direct3D 9 dan Direct3D 9Ex: Bendera ini hanya tersedia di Direct3D 9Ex. |
D3DFMT_A2B10G10R10_XR_BIAS | 119 | 2.8-bias titik tetap.
Perbedaan antara Direct3D 9 dan Direct3D 9Ex: Bendera ini hanya tersedia di Direct3D 9Ex. |
D3DFMT_BINARYBUFFER | 199 | Format biner yang menunjukkan bahwa data tidak memiliki jenis yang melekat.
Perbedaan antara Direct3D 9 dan Direct3D 9Ex: Bendera ini hanya tersedia di Direct3D 9Ex. |
Lainnya
Bendera ini digunakan untuk format yang tidak terdefinisi.
Bendera lainnya | Nilai | Format |
---|---|---|
D3DFMT_UNKNOWN | 0 | Format permukaan tidak diketahui |
Persyaratan
Persyaratan | Nilai |
---|---|
Header |
|
Lihat juga