Struktur DDPIXELFORMAT (ksmedia.h)
Struktur DDPIXELFORMAT menjelaskan format piksel objek DirectDrawSurface .
Sintaks
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. Driver 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:
Bendera | Makna |
---|---|
DDPF_ALPHA | Format piksel menjelaskan permukaan khusus alfa. |
DDPF_ALPHAPIXELS | Permukaan memiliki informasi saluran alfa dalam format piksel. |
DDPF_ALPHAPREMULT | Komponen warna dalam piksel telah ditentukan sebelumnya oleh nilai alfa dalam piksel. Jika bendera ini diatur, bendera DDPF_ALPHAPIXELS juga harus diatur. Jika bendera ini tidak diatur tetapi bendera DDPF_ALPHAPIXELS diatur, komponen warna dalam format piksel tidak ditentukan sebelumnya oleh alfa. Dalam hal ini, komponen warna harus dikalikan dengan nilai alfa pada saat operasi alpha-blending dilakukan. |
DDPF_BUMPDUDV | Data dUdV peta benjolan dalam format piksel valid. |
DDPF_BUMPHEIGHT | Data tinggi peta benjolan dalam format piksel valid. |
DDPF_COMPRESSED | Permukaan menerima data piksel dalam format yang ditentukan dan memadatkannya selama operasi tulis. |
DDPF_D3DFORMAT | Menunjukkan entri kemampuan format DirectX 8.0 dan yang lebih baru dalam daftar format tekstur. Bendera ini tidak terekspos ke aplikasi. |
DDPF_FOURCC | Kode FOURCC valid. |
DDPF_LUMINANCE | Data luminance dalam format piksel valid. Gunakan bendera ini untuk permukaan luminance-only atau luminance-plus-alpha; kedalaman bit kemudian ditentukan dalam anggota dwLuminanceBitCount . |
DDPF_LUMINANCEPIXELS | Data luminance dalam format piksel valid. Gunakan bendera ini saat menggantung luminance off, misalnya, permukaan benjolan. Bitmask untuk bagian luminance piksel kemudian ditentukan dalam anggota dwBumpLuminanceBitMask . |
DDPF_NOVEL_TEXTURE_FORMAT | Menunjukkan format permukaan baru bahwa runtime mungkin tidak terekspos ke semua aplikasi. |
DDPF_PALETTEINDEXED1 | Permukaan diindeks warna 1-bit. |
DDPF_PALETTEINDEXED2 | Permukaan diindeks warna 2-bit. |
DDPF_PALETTEINDEXED4 | Permukaannya diindeks warna 4-bit. |
DDPF_PALETTEINDEXED8 | Permukaan diindeks warna 8-bit. |
DDPF_PALETTEINDEXEDTO8 | Permukaannya adalah warna 1-, 2-, atau 4-bit yang diindeks ke palet 8-bit. |
DDPF_RGB | Data RGB dalam struktur format piksel valid. |
DDPF_RGBTOYUV | Permukaan menerima data RGB dan menerjemahkannya selama operasi tulis ke data YUV. Format data yang akan ditulis terkandung dalam struktur format piksel. Bendera DDPF_RGB diatur. |
DDPF_STENCILBUFFER | Permukaan mengodekan informasi stensil dan kedalaman di setiap piksel z-buffer. |
DDPF_YUV | Data YUV dalam struktur format piksel valid. |
DDPF_ZBUFFER | Format piksel menjelaskan permukaan z-buffer-only. |
DDPF_ZPIXELS | Permukaannya dalam format RGBZ. |
dwFourCC
Menentukan kode format permukaan termasuk salah satu kode dalam jenis D3DFORMAT enumerasi. 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 alpha.
dwYUVAlphaBitMask
Masker untuk saluran alpha.
dwRGBZBitMask
Masker untuk saluran Z.
dwYUVZBitMask
Masker untuk saluran Z.
Keterangan
Runtime DirectX 8.0 dan yang lebih baru memberlakukan aturan berikut pada daftar operasi (op):
Hanya satu Endian-ness (besar atau sedikit) 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 operasi; jika tidak, itu harus melaporkan D3DFMT_D16.
Driver yang mendukung multisampling harus mengisi MultiSampleCaps dalam format Kedalaman/Stensil yang multisamplingnya 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 blt multisampling, 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 1 secara logis 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 per piksel yang didukung.
Persyaratan
Persyaratan | Nilai |
---|---|
Header | ksmedia.h (termasuk Ddraw.h) |