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
|
Buffer dapat menggambar ke jendela atau permukaan perangkat. |
PFD_DRAW_TO_BITMAP
|
Buffer dapat menggambar ke bitmap memori. |
PFD_SUPPORT_GDI
|
Buffer mendukung gambar GDI. Bendera dan PFD_DOUBLEBUFFER ini saling eksklusif dalam implementasi generik saat ini. |
PFD_SUPPORT_OPENGL
|
Buffer mendukung gambar OpenGL. |
PFD_GENERIC_ACCELERATED
|
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
|
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
|
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
|
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
|
Buffer di-buffer ganda. Bendera dan PFD_SUPPORT_GDI ini saling eksklusif dalam implementasi generik saat ini. |
PFD_STEREO
|
Buffer adalah stereoskopis. Bendera ini tidak didukung dalam implementasi generik saat ini. |
PFD_SWAP_LAYER_BUFFERS
|
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
|
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
|
Format piksel yang diminta dapat berupa buffer tunggal atau ganda. |
PFD_STEREO_DONTCARE
|
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
|
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
|
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
|
Piksel RGBA. Setiap piksel memiliki empat komponen dalam urutan ini: merah, hijau, biru, dan alfa. |
PFD_TYPE_COLORINDEX
|
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 |