Struktur PIXELFORMATDESCRIPTOR (wingdi.h)

Struktur PIXELFORMATDESCRIPTOR menjelaskan format piksel permukaan gambar.

Sintaks

typedef struct tagPIXELFORMATDESCRIPTOR {
  WORD  nSize;
  WORD  nVersion;
  DWORD dwFlags;
  BYTE  iPixelType;
  BYTE  cColorBits;
  BYTE  cRedBits;
  BYTE  cRedShift;
  BYTE  cGreenBits;
  BYTE  cGreenShift;
  BYTE  cBlueBits;
  BYTE  cBlueShift;
  BYTE  cAlphaBits;
  BYTE  cAlphaShift;
  BYTE  cAccumBits;
  BYTE  cAccumRedBits;
  BYTE  cAccumGreenBits;
  BYTE  cAccumBlueBits;
  BYTE  cAccumAlphaBits;
  BYTE  cDepthBits;
  BYTE  cStencilBits;
  BYTE  cAuxBuffers;
  BYTE  iLayerType;
  BYTE  bReserved;
  DWORD dwLayerMask;
  DWORD dwVisibleMask;
  DWORD dwDamageMask;
} PIXELFORMATDESCRIPTOR, *PPIXELFORMATDESCRIPTOR, *LPPIXELFORMATDESCRIPTOR;

Anggota

nSize

Menentukan ukuran struktur data ini. Nilai ini harus diatur ke sizeof(PIXELFORMATDESCRIPTOR).

nVersion

Menentukan versi struktur data ini. Nilai ini harus diatur ke 1.

dwFlags

Sekumpulan bendera bit yang menentukan properti buffer piksel. Properti umumnya tidak saling eksklusif; Anda dapat mengatur kombinasi bendera bit apa pun, dengan pengecualian yang dicatat. Konstanta bendera bit berikut didefinisikan.

Nilai Makna
PFD_DRAW_TO_WINDOW
0x00000004
Buffer dapat menggambar ke jendela atau permukaan perangkat.
PFD_DRAW_TO_BITMAP
0x00000008
Buffer dapat menggambar ke bitmap memori.
PFD_SUPPORT_GDI
0x00000010
Buffer mendukung gambar GDI. Bendera dan PFD_DOUBLEBUFFER ini saling eksklusif dalam implementasi generik saat ini.
PFD_SUPPORT_OPENGL
0x00000020
Buffer mendukung gambar OpenGL.
PFD_GENERIC_ACCELERATED
0x00001000
Format piksel didukung oleh driver perangkat yang mempercepat implementasi generik. Jika bendera ini jelas dan bendera PFD_GENERIC_FORMAT diatur, format piksel hanya didukung oleh implementasi generik.
PFD_GENERIC_FORMAT
0x00000040
Format piksel didukung oleh implementasi perangkat lunak GDI, yang juga dikenal sebagai implementasi generik. Jika bit ini jelas, format piksel didukung oleh driver perangkat atau perangkat keras.
PFD_NEED_PALETTE
0x00000080
Buffer menggunakan piksel RGBA pada perangkat yang dikelola palet. Palet logis diperlukan untuk mencapai hasil terbaik untuk jenis piksel ini. Warna dalam palet harus ditentukan sesuai dengan nilai anggota cRedBits, cRedShift, cGreenBits, cGreenShift, cBluebits, dan cBlueShift . Palet harus dibuat dan diwujudkan dalam konteks perangkat sebelum memanggil wglMakeCurrent.
PFD_NEED_SYSTEM_PALETTE
0x00000100
Ditentukan dalam deskriptor format piksel perangkat keras yang hanya mendukung satu palet perangkat keras dalam mode 256 warna. Agar sistem tersebut menggunakan akselerasi perangkat keras, palet perangkat keras harus dalam urutan tetap (misalnya, 3-3-2) ketika dalam mode RGBA atau harus cocok dengan palet logis saat dalam mode indeks warna. Ketika bendera ini diatur, Anda harus memanggil SetSystemPaletteUse dalam program Anda untuk memaksa pemetaan satu-ke-satu palet logis dan palet sistem. Jika perangkat keras OpenGL Anda mendukung beberapa palet perangkat keras dan driver perangkat dapat mengalokasikan palet perangkat keras cadangan untuk OpenGL, bendera ini biasanya jelas.

Bendera ini tidak diatur dalam format piksel generik.

PFD_DOUBLEBUFFER
0x00000001
Buffer di-buffer ganda. Bendera dan PFD_SUPPORT_GDI ini saling eksklusif dalam implementasi generik saat ini.
PFD_STEREO
0x00000002
Buffer adalah stereoskopis. Bendera ini tidak didukung dalam implementasi generik saat ini.
PFD_SWAP_LAYER_BUFFERS
0x00000800
Menunjukkan apakah perangkat dapat menukar bidang lapisan individual dengan format piksel yang menyertakan overlay buffer ganda atau bidang underlay. Jika tidak, semua bidang lapisan ditukar bersama-sama sebagai grup. Ketika bendera ini diatur, wglSwapLayerBuffers didukung.
 

Anda dapat menentukan bendera bit berikut saat memanggil ChoosePixelFormat.

Nilai Makna
PFD_DEPTH_DONTCARE
0x20000000
Format piksel yang diminta dapat memiliki atau tidak memiliki buffer kedalaman. Untuk memilih format piksel tanpa buffer kedalaman, Anda harus menentukan bendera ini. Format piksel yang diminta dapat dengan atau tanpa buffer kedalaman. Jika tidak, hanya format piksel dengan buffer kedalaman yang dipertimbangkan.
PFD_DOUBLEBUFFER_DONTCARE
0x40000000
Format piksel yang diminta dapat berupa buffer tunggal atau ganda.
PFD_STEREO_DONTCARE
0x80000000
Format piksel yang diminta dapat berupa monoskopik atau stereoskopis.
 

Dengan fungsi ekstensi glAddSwapHintRectWIN , dua bendera baru disertakan untuk struktur format piksel PIXELFORMATDESCRIPTOR .

Nilai Makna
PFD_SWAP_COPY
0x00000400
Menentukan konten buffer belakang di bidang warna utama yang di-buffer ganda setelah pertukaran buffer. Menukar buffer warna menyebabkan konten buffer belakang disalin ke buffer depan. Konten buffer belakang tidak terpengaruh oleh pertukaran. PFD_SWAP_COPY adalah petunjuk saja dan mungkin tidak disediakan oleh driver.
PFD_SWAP_EXCHANGE
0x00000200
Menentukan konten buffer belakang di bidang warna utama yang di-buffer ganda setelah pertukaran buffer. Menukar buffer warna menyebabkan pertukaran konten buffer belakang dengan konten buffer depan. Setelah pertukaran, konten buffer belakang berisi konten buffer depan sebelum pertukaran. PFD_SWAP_EXCHANGE adalah petunjuk saja dan mungkin tidak disediakan oleh driver.

iPixelType

Menentukan jenis data piksel. Jenis berikut didefinisikan.

Nilai Makna
PFD_TYPE_RGBA
0
Piksel RGBA. Setiap piksel memiliki empat komponen dalam urutan ini: merah, hijau, biru, dan alfa.
PFD_TYPE_COLORINDEX
1
Piksel indeks warna. Setiap piksel menggunakan nilai indeks warna.

cColorBits

Menentukan jumlah bitplanes warna di setiap buffer warna. Untuk jenis piksel RGBA, ini adalah ukuran buffer warna, tidak termasuk bitplanes alfa. Untuk piksel indeks warna, ini adalah ukuran buffer indeks warna.

cRedBits

Menentukan jumlah bitplanes merah di setiap buffer warna RGBA.

cRedShift

Menentukan jumlah shift untuk bitplane merah di setiap buffer warna RGBA.

cGreenBits

Menentukan jumlah bitplanes hijau di setiap buffer warna RGBA.

cGreenShift

Menentukan jumlah shift untuk bitplane hijau di setiap buffer warna RGBA.

cBlueBits

Menentukan jumlah bitplanes biru di setiap buffer warna RGBA.

cBlueShift

Menentukan jumlah shift untuk bitplanes biru di setiap buffer warna RGBA.

cAlphaBits

Menentukan jumlah bitplanes alfa di setiap buffer warna RGBA. Bitplanes alpha tidak didukung.

cAlphaShift

Menentukan jumlah shift untuk bitplanes alfa di setiap buffer warna RGBA. Bitplanes alpha tidak didukung.

cAccumBits

Menentukan jumlah total bitplanes dalam buffer akumulasi.

cAccumRedBits

Menentukan jumlah bitplanes merah dalam buffer akumulasi.

cAccumGreenBits

Menentukan jumlah bitplanes hijau dalam buffer akumulasi.

cAccumBlueBits

Menentukan jumlah bitplanes biru dalam buffer akumulasi.

cAccumAlphaBits

Menentukan jumlah bitplanes alfa dalam buffer akumulasi.

cDepthBits

Menentukan kedalaman buffer kedalaman (sumbu z).

cStencilBits

Menentukan kedalaman buffer stensil.

cAuxBuffers

Menentukan jumlah buffer tambahan. Buffer tambahan tidak didukung.

iLayerType

Diabaikan. Implementasi OpenGL sebelumnya menggunakan anggota ini, tetapi tidak lagi digunakan.

bReserved

Menentukan jumlah bidang overlay dan underlay. Bit 0 sampai 3 menentukan hingga 15 bidang overlay dan bit 4 sampai 7 menentukan hingga 15 bidang underlay.

dwLayerMask

Diabaikan. Implementasi OpenGL sebelumnya menggunakan anggota ini, tetapi tidak lagi digunakan.

dwVisibleMask

Menentukan warna transparan atau indeks bidang underlay. Ketika jenis piksel adalah RGBA, dwVisibleMask adalah nilai warna RGB transparan. Ketika jenis piksel adalah indeks warna, itu adalah nilai indeks transparan.

dwDamageMask

Diabaikan. Implementasi OpenGL sebelumnya menggunakan anggota ini, tetapi tidak lagi digunakan.

Keterangan

Perhatikan dengan cermat, seperti yang di dokumentasikan di atas, bahwa properti format piksel tertentu tidak didukung dalam implementasi generik saat ini. Implementasi generik adalah implementasi perangkat lunak Microsoft GDI dari OpenGL. Produsen perangkat keras dapat meningkatkan bagian OpenGL, dan dapat mendukung beberapa properti format piksel yang tidak didukung oleh implementasi generik.

Persyaratan

Persyaratan Nilai
Klien minimum yang didukung Windows 2000 Professional [hanya aplikasi desktop]
Server minimum yang didukung Windows 2000 Server [hanya aplikasi desktop]
Header wingdi.h

Lihat juga

PilihFormatPixel

DescribePixelFormat

GetPixelFormat

OpenGL di Windows

SetPixelFormat

Struktur