Bagikan melalui


Struktur DDPIXELFORMAT (ddraw.h)

Struktur DDPIXELFORMAT menjelaskan format piksel objek DirectDrawSurface untuk metode IDirectDrawSurface7::GetPixelFormat .

Catatan Daripada menggunakan struktur ini untuk mendekode file dengan format file DirectDraw Surface (DDS), Anda harus menggunakan struktur alternatif yang tidak bergantung pada Ddraw.h. Untuk informasi selengkapnya tentang struktur alternatif untuk DDS, lihat DDS.
 

Sintaks

typedef struct _DDPIXELFORMAT {
  DWORD dwSize;
  DWORD dwFlags;
  DWORD dwFourCC;
#if ...
  union {
    DWORD dwRGBBitCount;
    DWORD dwYUVBitCount;
    DWORD dwZBufferBitDepth;
    DWORD dwAlphaBitDepth;
    DWORD dwLuminanceBitCount;
    DWORD dwBumpBitCount;
    DWORD dwPrivateFormatBitCount;
  } DUMMYUNIONNAMEN;
#elif
  union {
    DWORD dwRBitMask;
    DWORD dwYBitMask;
    DWORD dwStencilBitDepth;
    DWORD dwLuminanceBitMask;
    DWORD dwBumpDuBitMask;
    DWORD dwOperations;
  } DUMMYUNIONNAMEN;
#elif
  union {
    DWORD dwGBitMask;
    DWORD dwUBitMask;
    DWORD dwZBitMask;
    DWORD dwBumpDvBitMask;
    struct {
      WORD wFlipMSTypes;
      WORD wBltMSTypes;
    } MultiSampleCaps;
  } DUMMYUNIONNAMEN;
#elif
  union {
    DWORD dwBBitMask;
    DWORD dwVBitMask;
    DWORD dwStencilBitMask;
    DWORD dwBumpLuminanceBitMask;
  } DUMMYUNIONNAMEN;
#else
  union {
    DWORD dwRGBAlphaBitMask;
    DWORD dwYUVAlphaBitMask;
    DWORD dwLuminanceAlphaBitMask;
    DWORD dwRGBZBitMask;
    DWORD dwYUVZBitMask;
  } DUMMYUNIONNAMEN;
#endif
} DDPIXELFORMAT;

Anggota

dwSize

Ukuran struktur, dalam byte. Anggota ini harus diinisialisasi sebelum struktur digunakan.

dwFlags

Bendera berikut untuk menjelaskan kontrol opsional untuk struktur ini.

DDPF_ALPHA

Format piksel menjelaskan permukaan khusus alfa.

DDPF_ALPHAPIXELS

Permukaan memiliki informasi saluran alfa dalam format piksel.

DDPF_ALPHAPREMULT

Permukaan menggunakan format alfa yang telah ditentukan sebelumnya. Artinya, komponen warna di setiap piksel telah diisi sebelumnya oleh komponen alfa.

DDPF_BUMPLUMINANCE

Data luminance dalam format piksel valid, dan anggota dwLuminanceBitMask menjelaskan bit luminance yang valid untuk permukaan luminance-only atau luminance-alpha.

DDPF_BUMPDUDV

Data peta benjolan dalam format piksel valid. Informasi bump-map ada di anggota dwBumpBitCount, dwBumpDuBitMask, dwBumpDvBitMask, dan dwBumpLuminanceBitMask .

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 dan didefinisikan dalam Ddrawi.h.

DDPF_FOURCC

Anggota dwFourCC valid dan berisi kode FOURCC yang menjelaskan format piksel non-RGB.

DDPF_LUMINANCE

Format piksel menjelaskan permukaan luminance-only atau luminance-alpha.

DDPF_PALETTEINDEXED1

Permukaannya diindeks warna 1-bit.

DDPF_PALETTEINDEXED2

Permukaannya diindeks warna 2-bit.

DDPF_PALETTEINDEXED4

Permukaannya diindeks warna 4-bit.

DDPF_PALETTEINDEXED8

Permukaannya diindeks warna 8-bit.

DDPF_PALETTEINDEXEDTO8

Permukaannya adalah 1-, 2-, atau 4-bit-warna-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. Bendera ini hanya dapat digunakan jika bendera DDPF_ZBUFFER juga ditentukan.

DDPF_YUV

Data YUV dalam struktur format piksel valid.

DDPF_ZBUFFER

Format piksel menjelaskan permukaan z-buffer.

DDPF_ZPIXELS

Permukaan berisi informasi z dalam piksel.

dwFourCC

Kode FourCC.

DUMMYUNIONNAMEN

DUMMYUNIONNAMEN.dwRGBBitCount

Bit RGB per piksel (4, 8, 16, 24, atau 32).

DUMMYUNIONNAMEN.dwYUVBitCount

BIT YUV per piksel (4, 8, 16, 24, atau 32).

DUMMYUNIONNAMEN.dwZBufferBitDepth

Kedalaman bit z-buffer (8, 16, 24, atau 32).

DUMMYUNIONNAMEN.dwAlphaBitDepth

Kedalaman bit saluran alfa (1, 2, 4, atau 8) untuk permukaan khusus alfa (DDPF_ALPHA). Untuk format piksel yang berisi informasi alfa yang diselingi dengan data warna (DDPF_ALPHAPIXELS), hitung bit dalam anggota dwRGBAlphaBitMask untuk mendapatkan kedalaman bit komponen alfa. Untuk informasi selengkapnya tentang cara menentukan kedalaman bit alfa, lihat Keterangan.

DUMMYUNIONNAMEN.dwLuminanceBitCount

Total bit luminance per piksel. Anggota ini hanya berlaku untuk permukaan luminance-only dan luminance-alpha.

DUMMYUNIONNAMEN.dwBumpBitCount

Total bit peta benjolan per piksel di permukaan peta benjolan.

DUMMYUNIONNAMEN.dwPrivateFormatBitCount

Bit per piksel format driver privat. Hanya valid dalam daftar format tekstur dan jika DDPF_D3DFORMAT diatur.

DUMMYUNIONNAMEN.dwRBitMask

Masker untuk bit merah.

DUMMYUNIONNAMEN.dwYBitMask

Masker untuk bit Y.

DUMMYUNIONNAMEN.dwStencilBitDepth

Sedikit kedalaman buffer stensil. Anggota ini menentukan berapa banyak bit yang dicadangkan dalam setiap piksel z-buffer untuk informasi stensil (jumlah total z-bit sama dengan dwZBufferBitDepth minus dwStencilBitDepth).

DUMMYUNIONNAMEN.dwLuminanceBitMask

Masker untuk bit luminance.

DUMMYUNIONNAMEN.dwBumpDuBitMask

Masker untuk bit U-delta bump-map.

DUMMYUNIONNAMEN.dwOperations

Bendera yang menentukan operasi yang dapat dilakukan pada permukaan dengan format piksel DDPF_D3DFORMAT. Bendera didefinisikan dalam Ddrawi.h.

DUMMYUNIONNAMEN.dwGBitMask

Masker untuk bit hijau.

DUMMYUNIONNAMEN.dwUBitMask

Masker untuk bit U.

DUMMYUNIONNAMEN.dwZBitMask

Masker untuk bit z.

DUMMYUNIONNAMEN.dwBumpDvBitMask

Masker untuk bit V-delta peta benjolan.

DUMMYUNIONNAMEN.MultiSampleCaps

Struktur yang berisi dua anggota berikut. Struktur ini digunakan untuk menentukan permukaan yang dapat digunakan saat melakukan penyajian multisample. Setiap bit dalam masker 16-bit menunjukkan dukungan multisampling dengan jumlah sampel tertentu. Misalnya, bit 0 menunjukkan dukungan multisampling hanya dengan satu sampel, bit 1 menunjukkan dukungan multisampling dengan dua sampel, dan sebagainya. Driver dapat menunjukkan lebih dari satu tingkat yang didukung dengan menggabungkan bit dengan menggunakan bitwise OR.

DUMMYUNIONNAMEN.MultiSampleCaps.wFlipMSTypes

Masker 16-bit untuk multisampling mode layar penuh (balik).

DUMMYUNIONNAMEN.MultiSampleCaps.wBltMSTypes

Masker 16-bit untuk multisampling mode windowed (transfer blok bit).

DUMMYUNIONNAMEN.dwBBitMask

Masker untuk bit biru.

DUMMYUNIONNAMEN.dwVBitMask

Masker untuk bit V.

DUMMYUNIONNAMEN.dwStencilBitMask

Masker untuk bit stensil dalam setiap piksel z-buffer.

DUMMYUNIONNAMEN.dwBumpLuminanceBitMask

Masker untuk luminance dalam piksel benjolan-peta.

DUMMYUNIONNAMEN.dwRGBAlphaBitMask

Masker RGB untuk saluran alfa.

DUMMYUNIONNAMEN.dwYUVAlphaBitMask

Masker YUV untuk saluran alfa.

DUMMYUNIONNAMEN.dwLuminanceAlphaBitMask

Masker luminance untuk saluran alpha.

DUMMYUNIONNAMEN.dwRGBZBitMask

Masker RGB untuk saluran z.

DUMMYUNIONNAMEN.dwYUVZBitMask

Masker YUV untuk saluran z.

Keterangan

Anggota dwAlphaBitDepth mencerminkan kedalaman bit format piksel khusus alfa (DDPF_ALPHA). Untuk format piksel yang menyertakan komponen alfa dengan komponen warna (DDPF_ALPHAPIXELS), kedalaman bit alfa diperoleh dengan menghitung bit dalam berbagai anggota masker. Contoh kode berikut mengembalikan jumlah bit yang ditetapkan dalam bitmask tertentu.

WORD GetNumberOfBits( DWORD dwMask )
{
    WORD wBits = 0;
    while( dwMask )
    {
        dwMask = dwMask & ( dwMask - 1 );  
        wBits++;
    }
    return wBits;
}

Penyatuan di DDPIXELFORMAT telah diperbarui untuk bekerja dengan pengkompilasi yang tidak mendukung serikat tanpa nama. Jika compiler Anda tidak mendukung union tanpa nama, tentukan token NONAMELESSUNION sebelum menyertakan file header Ddraw.h.

Persyaratan

   
Header ddraw.h