Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Struktur DDPIXELFORMAT menjelaskan format piksel objek DirectDrawSurface.
Sintaksis
typedef struct _DDPIXELFORMAT {
DWORD dwSize;
DWORD dwFlags;
DWORD dwFourCC;
union {
DWORD dwRGBBitCount;
DWORD dwYUVBitCount;
DWORD dwZBufferBitDepth;
DWORD dwAlphaBitDepth;
};
union {
DWORD dwRBitMask;
DWORD dwYBitMask;
};
union {
DWORD dwGBitMask;
DWORD dwUBitMask;
};
union {
DWORD dwBBitMask;
DWORD dwVBitMask;
};
union {
DWORD dwRGBAlphaBitMask;
DWORD dwYUVAlphaBitMask;
DWORD dwRGBZBitMask;
DWORD dwYUVZBitMask;
};
} DDPIXELFORMAT, *LPDDPIXELFORMAT;
Anggota
dwSize
Menentukan ukuran dalam byte struktur DDPIXELFORMAT. Pengandar harus menginisialisasi anggota ini sebelum struktur digunakan.
DirectX 9.0 dan versi yang lebih baru saja. Menentukan, pada input, versi runtime Microsoft DirectX yang digunakan oleh aplikasi. Anggota ini diatur ke DD_RUNTIME_VERSION, yang 0x00000900 untuk DirectX 9.0, dalam format anggota struktur DD_GETFORMATDATA untuk kueri D3DGDI2_TYPE_GETFORMAT.
dwFlags
Menunjukkan sekumpulan bendera yang menentukan bendera kontrol opsional. Anggota ini adalah bitwise ATAU dari salah satu nilai berikut:
dwFourCC
Menentukan kode format permukaan termasuk salah satu kode dalam jenis enumerasi D3DFORMAT. Beberapa kode FOURCC adalah bagian dari D3DFORMAT. Untuk informasi selengkapnya tentang D3DFORMAT, lihat dokumentasi SDK. Vendor perangkat keras juga dapat menentukan dan menyediakan kode format yang khusus untuk perangkat keras mereka.
dwRGBBitCount
Menentukan jumlah bit RGB per piksel (4, 8, 16, 24, atau 32).
dwYUVBitCount
Menentukan jumlah bit YUV per piksel.
dwZBufferBitDepth
Menentukan kedalaman bit Z-buffer (8, 16, 24, atau 32 bit).
dwAlphaBitDepth
Menentukan kedalaman bit saluran Alpha.
dwRBitMask
Menentukan masker untuk bit merah.
dwYBitMask
Menentukan masker untuk bit Y.
dwGBitMask
Menentukan masker untuk bit hijau.
dwUBitMask
Menentukan masker untuk bit U.
dwBBitMask
Menentukan masker untuk bit biru.
dwVBitMask
Menentukan masker untuk bit V.
dwRGBAlphaBitMask
Masker untuk saluran alfa.
dwYUVAlphaBitMask
Masker untuk saluran alfa.
dwRGBZBitMask
Masker untuk saluran Z.
dwYUVZBitMask
Masker untuk saluran Z.
Komentar
Runtime DirectX 8.0 dan yang lebih baru memberlakukan aturan berikut pada daftar operasi (op):
Hanya satu Endian-ness (besar atau kecil) untuk format DS apa pun yang diizinkan, misalnya D15S1 atau S1D15, tidak keduanya independen dari bit lain.
Daftar hanya boleh menyertakan D3DFORMAT_OP_DISPLAYMODE untuk tepat satu format 16bpp (misalnya tidak boleh menghitung 5:5:5 dan 5:6:5).
Daftar tidak boleh berisi format alfa apa pun dengan D3DFORMAT_OP_DISPLAYMODE atau set D3DFORMAT_OP_3DACCELLERATION.
Bendera D3DFORMAT_OP_3DACCELLERATION hanya dapat diatur saat bendera D3DFORMAT_OP_DISPLAYMODE juga diatur.
Jika driver mendukung D16 yang dapat dikunci, driver harus melaporkan D3DFMT_D16_LOCKABLE dalam daftar op; jika tidak, itu harus melaporkan D3DFMT_D16.
Driver yang mendukung multisampling harus mengisi MultiSampleCaps dalam format Kedalaman/Stensil tempat multisampling dapat didukung. Ini memungkinkan runtime untuk mendeteksi apakah driver mendukung multisampling untuk kombinasi target render dan format buffer Z. Untuk informasi tambahan tentang pembatasan yang terkait dengan peregangan multisampling blt, lihat deskripsi batas D3DPRASTERCAPS_STRETCHBLTMULTISAMPLE dalam rastercap yang terkandung dalam struktur D3DCAPS8 dalam dokumentasi SDK.
Jenis enumerasi D3DMULTISAMPLE_TYPE yang ditentukan dalam d3d8types.h digunakan saat mengatur bit dalam wFlipMSTypes dan wBltMSTypes. Untuk menentukan dukungan untuk jumlah sampel tertentu per piksel, cukup geser secara logis 1 dengan nilai yang sesuai dari D3DMULTISAMPLE_TYPE enumerasi tipe kurang 1 dan ATAU ini ke bidang yang sesuai (wFlipMSTypes dan wBltMSTypes).
Misalnya, jika driver mendukung dua dan empat sampel per piksel saat membalik (mode layar penuh) dan empat sampel per piksel saat blitting (mode berjendela) pada permukaan X8R8G8B8 entri berikut akan dilaporkan dalam daftar format permukaan.
DDPIXELFORMAT ddpf;
ZeroMemory(&ddpf, sizeof(ddpf));
ddpf.dwSize = sizeof(DDPIXELFORMAT);
ddpf.dwFlags = DDPF_D3DFORMAT;
ddpf.dwFourCC = D3DFMT_X8R8G8B8;
ddpf.dwOperations = D3DFORMAT_OP_DISPLAYMODE |
D3DFORMAT_OP_3DACCELERATION;
ddpf.MultiSampleCaps.wFlipMSTypes = (1 << (D3DMULTISAMPLE_4_SAMPLES âˆ' 1))
| (1 << (D3DMULTISAMPLE_2_SAMPLES âˆ' 1));
ddpf.MultiSampleCaps.wBltMSTypes = (1 << (D3DMULTISAMPLE_4_SAMPLES âˆ' 1));
Tidak perlu menentukan 1 << (D3DMULTISAMPLE_NONE - 1) saat melaporkan format. Diasumsikan bahwa format apa pun yang dilaporkan juga dapat digunakan tanpa multisampling. Jika perangkat keras mendukung penyajian multisample dengan z-buffer, format z-buffer yang dilaporkan juga harus menyertakan sampel yang didukung per piksel.
Persyaratan
| Syarat | Nilai |
|---|---|
| Header | ksmedia.h (termasuk Ddraw.h) |