(wingdi.h) 的 PIXELFORMATDESCRIPTOR 結構
PIXELFORMATDESCRIPTOR 結構描述繪圖介面的像素格式。
語法
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;
成員
nSize
指定這個數據結構的大小。 此值應該設定為 sizeof (PIXELFORMATDESCRIPTOR) 。
nVersion
指定這個數據結構的版本。 此值應該設定為 1。
dwFlags
指定像素緩衝區屬性的一組位旗標。 屬性通常不互斥;您可以設定任何位旗標組合,但有例外狀況。 定義下列位旗標常數。
值 | 意義 |
---|---|
PFD_DRAW_TO_WINDOW
|
緩衝區可以繪製到視窗或裝置介面。 |
PFD_DRAW_TO_BITMAP
|
緩衝區可以繪製到記憶體位圖。 |
PFD_SUPPORT_GDI
|
緩衝區支援 GDI 繪圖。 這個旗標和PFD_DOUBLEBUFFER在目前的泛型實作中互斥。 |
PFD_SUPPORT_OPENGL
|
緩衝區支援 OpenGL 繪圖。 |
PFD_GENERIC_ACCELERATED
|
加速泛型實作的裝置驅動程序支援圖元格式。 如果此旗標清楚且已設定PFD_GENERIC_FORMAT旗標,則泛型實作僅支援圖元格式。 |
PFD_GENERIC_FORMAT
|
GDI 軟體實作支援圖元格式,也稱為泛型實作。 如果這個位清楚,設備驅動器或硬體支援圖元格式。 |
PFD_NEED_PALETTE
|
緩衝區會在調色盤管理的裝置上使用 RGBA 圖元。 需要邏輯調色盤,才能達到此像素類型的最佳結果。 調色盤中的色彩應該根據 cRedBits、cRedShift、cGreenBits、cGreenShift、cBluebits 和cBlueShift 成員的值來指定。 呼叫 wglMakeCurrent 之前,應該先在裝置內容中建立並實現調色盤。 |
PFD_NEED_SYSTEM_PALETTE
|
定義於僅支援 256 色彩模式中一個硬體調色盤之硬體的圖元格式描述元中。 若要讓這類系統使用硬體加速,硬體調色盤必須依固定順序 (例如,在 RGBA 模式中為 3-3-2) ,或在色彩索引模式中必須符合邏輯調色盤。設定此旗標時,您必須在程式中呼叫 SetSystemPaletteUse ,以強制邏輯調色盤和系統調色盤的一對一對應。 如果您的 OpenGL 硬體支援多個硬體選擇區,且設備驅動器可以配置 OpenGL 的備用硬體選擇區,則通常清楚顯示此旗標。
此旗標不是以泛型像素格式設定。 |
PFD_DOUBLEBUFFER
|
緩衝區會以雙緩衝處理。 這個旗標和PFD_SUPPORT_GDI在目前的泛型實作中互斥。 |
PFD_STEREO
|
緩衝區是立體聲。 目前的泛型實作不支援此旗標。 |
PFD_SWAP_LAYER_BUFFERS
|
指出裝置是否可以使用包含雙緩衝重疊或底底平面的圖元格式來交換個別圖層平面。 否則,所有圖層平面都會以群組的形式交換在一起。 設定此旗標時,支援 wglSwapLayerBuffers 。 |
呼叫 ChoosePixelFormat 時,您可以指定下列位旗標。
值 | 意義 |
---|---|
PFD_DEPTH_DONTCARE
|
要求的圖元格式可以有或沒有深度緩衝區。 若要選取不含深度緩衝區的圖元格式,您必須指定此旗標。 要求的圖元格式可以是具有或不含深度緩衝區。 否則,只會考慮具有深度緩衝區的圖元格式。 |
PFD_DOUBLEBUFFER_DONTCARE
|
要求的圖元格式可以是單一或雙緩衝。 |
PFD_STEREO_DONTCARE
|
要求的像素格式可以是monoscopic或 stereoscopic。 |
使用 glAddSwapHintRectWIN 擴充功能函式時, PIXELFORMATDESCRIPTOR 像素格式結構會包含兩個新的旗標。
值 | 意義 |
---|---|
PFD_SWAP_COPY
|
在緩衝區交換之後,指定雙緩衝主要色彩平面中後台緩衝區的內容。 交換色彩緩衝區會導致將後台緩衝區的內容複製到前端緩衝區。 後台緩衝區的內容不會受到交換的影響。 PFD_SWAP_COPY只是提示,可能不是由驅動程式提供。 |
PFD_SWAP_EXCHANGE
|
在緩衝區交換之後,指定雙緩衝主要色彩平面中後台緩衝區的內容。 交換色彩緩衝區會導致後台緩衝區的內容與前端緩衝區的內容交換。 在交換之後,後台緩衝區的內容會包含交換前緩衝區的內容。 PFD_SWAP_EXCHANGE只是提示,可能不是由驅動程式提供。 |
iPixelType
指定像素數據類型。 定義下列類型。
值 | 意義 |
---|---|
PFD_TYPE_RGBA
|
RGBA 圖元。 每個圖元都有四個依此順序的元件:紅色、綠色、藍色和Alpha。 |
PFD_TYPE_COLORINDEX
|
色彩索引圖元。 每個像素都會使用色彩索引值。 |
cColorBits
指定每個色彩緩衝區中的色彩位平面數目。 針對 RGBA 像素類型,它是色彩緩衝區的大小,不包括 Alpha 位平面。 針對色彩索引圖元,它是色彩索引緩衝區的大小。
cRedBits
指定每個 RGBA 色彩緩衝區中的紅色位平面數目。
cRedShift
指定每個 RGBA 色彩緩衝區中紅色位平面的移位計數。
cGreenBits
指定每個 RGBA 色彩緩衝區中的綠色位平面數目。
cGreenShift
指定每個 RGBA 色彩緩衝區中綠色位平面的班次計數。
cBlueBits
指定每個 RGBA 色彩緩衝區中的藍色位平面數目。
cBlueShift
指定每個 RGBA 色彩緩衝區中藍色位平面的移位計數。
cAlphaBits
指定每個 RGBA 色彩緩衝區中的 Alpha 位平面數目。 不支援Alpha位平面。
cAlphaShift
指定每個 RGBA 色彩緩衝區中 Alpha 位平面的移位計數。 不支援Alpha位平面。
cAccumBits
指定累積緩衝區中的位平面總數。
cAccumRedBits
指定累積緩衝區中的紅色位平面數目。
cAccumGreenBits
指定累積緩衝區中的綠色位平面數目。
cAccumBlueBits
指定累積緩衝區中的藍色位平面數目。
cAccumAlphaBits
指定累積緩衝區中的Alpha位平面數目。
cDepthBits
指定 (z 軸) 緩衝區的深度。
cStencilBits
指定樣板緩衝區的深度。
cAuxBuffers
指定輔助緩衝區的數目。 不支援輔助緩衝區。
iLayerType
忽略。 舊版 OpenGL 實作使用此成員,但不再使用。
bReserved
指定重疊和底底平面的數目。 位 0 到 3 指定最多 15 個重疊平面,而位 4 到 7 最多指定 15 個底底平面。
dwLayerMask
忽略。 舊版 OpenGL 實作使用此成員,但不再使用。
dwVisibleMask
指定底線平面的透明色彩或索引。 當像素類型為 RGBA 時, dwVisibleMask 是透明的 RGB 色彩值。 當像素類型為色彩索引時,它是透明索引值。
dwDamageMask
忽略。 舊版 OpenGL 實作使用此成員,但不再使用。
備註
請注意,如上所述,目前泛型實作不支援某些圖元格式屬性。 泛型實作是 OpenGL 的 Microsoft GDI 軟體實作。 硬體製造商可能會增強 OpenGL 的元件,而且可能支援泛型實作不支援某些圖元格式屬性。
規格需求
需求 | 值 |
---|---|
最低支援的用戶端 | Windows 2000 Professional [僅限傳統型應用程式] |
最低支援的伺服器 | Windows 2000 Server [僅限桌面應用程式] |
標頭 | wingdi.h |