共用方式為


(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
0x00000004
緩衝區可以繪製到視窗或裝置介面。
PFD_DRAW_TO_BITMAP
0x00000008
緩衝區可以繪製到記憶體位圖。
PFD_SUPPORT_GDI
0x00000010
緩衝區支援 GDI 繪圖。 這個旗標和PFD_DOUBLEBUFFER在目前的泛型實作中互斥。
PFD_SUPPORT_OPENGL
0x00000020
緩衝區支援 OpenGL 繪圖。
PFD_GENERIC_ACCELERATED
0x00001000
加速泛型實作的裝置驅動程序支援圖元格式。 如果此旗標清楚且已設定PFD_GENERIC_FORMAT旗標,則泛型實作僅支援圖元格式。
PFD_GENERIC_FORMAT
0x00000040
GDI 軟體實作支援圖元格式,也稱為泛型實作。 如果這個位清楚,設備驅動器或硬體支援圖元格式。
PFD_NEED_PALETTE
0x00000080
緩衝區會在調色盤管理的裝置上使用 RGBA 圖元。 需要邏輯調色盤,才能達到此像素類型的最佳結果。 調色盤中的色彩應該根據 cRedBitscRedShiftcGreenBitscGreenShift、cBluebits 和cBlueShift 成員的值來指定。 呼叫 wglMakeCurrent 之前,應該先在裝置內容中建立並實現調色盤。
PFD_NEED_SYSTEM_PALETTE
0x00000100
定義於僅支援 256 色彩模式中一個硬體調色盤之硬體的圖元格式描述元中。 若要讓這類系統使用硬體加速,硬體調色盤必須依固定順序 (例如,在 RGBA 模式中為 3-3-2) ,或在色彩索引模式中必須符合邏輯調色盤。設定此旗標時,您必須在程式中呼叫 SetSystemPaletteUse ,以強制邏輯調色盤和系統調色盤的一對一對應。 如果您的 OpenGL 硬體支援多個硬體選擇區,且設備驅動器可以配置 OpenGL 的備用硬體選擇區,則通常清楚顯示此旗標。

此旗標不是以泛型像素格式設定。

PFD_DOUBLEBUFFER
0x00000001
緩衝區會以雙緩衝處理。 這個旗標和PFD_SUPPORT_GDI在目前的泛型實作中互斥。
PFD_STEREO
0x00000002
緩衝區是立體聲。 目前的泛型實作不支援此旗標。
PFD_SWAP_LAYER_BUFFERS
0x00000800
指出裝置是否可以使用包含雙緩衝重疊或底底平面的圖元格式來交換個別圖層平面。 否則,所有圖層平面都會以群組的形式交換在一起。 設定此旗標時,支援 wglSwapLayerBuffers
 

呼叫 ChoosePixelFormat 時,您可以指定下列位旗標。

意義
PFD_DEPTH_DONTCARE
0x20000000
要求的圖元格式可以有或沒有深度緩衝區。 若要選取不含深度緩衝區的圖元格式,您必須指定此旗標。 要求的圖元格式可以是具有或不含深度緩衝區。 否則,只會考慮具有深度緩衝區的圖元格式。
PFD_DOUBLEBUFFER_DONTCARE
0x40000000
要求的圖元格式可以是單一或雙緩衝。
PFD_STEREO_DONTCARE
0x80000000
要求的像素格式可以是monoscopic或 stereoscopic。
 

使用 glAddSwapHintRectWIN 擴充功能函式時, PIXELFORMATDESCRIPTOR 像素格式結構會包含兩個新的旗標。

意義
PFD_SWAP_COPY
0x00000400
在緩衝區交換之後,指定雙緩衝主要色彩平面中後台緩衝區的內容。 交換色彩緩衝區會導致將後台緩衝區的內容複製到前端緩衝區。 後台緩衝區的內容不會受到交換的影響。 PFD_SWAP_COPY只是提示,可能不是由驅動程式提供。
PFD_SWAP_EXCHANGE
0x00000200
在緩衝區交換之後,指定雙緩衝主要色彩平面中後台緩衝區的內容。 交換色彩緩衝區會導致後台緩衝區的內容與前端緩衝區的內容交換。 在交換之後,後台緩衝區的內容會包含交換前緩衝區的內容。 PFD_SWAP_EXCHANGE只是提示,可能不是由驅動程式提供。

iPixelType

指定像素數據類型。 定義下列類型。

意義
PFD_TYPE_RGBA
0
RGBA 圖元。 每個圖元都有四個依此順序的元件:紅色、綠色、藍色和Alpha。
PFD_TYPE_COLORINDEX
1
色彩索引圖元。 每個像素都會使用色彩索引值。

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

另請參閱

ChoosePixelFormat

DescribePixelFormat

GetPixelFormat

Windows 上的 OpenGL

SetPixelFormat

結構