Bagikan melalui


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)