PIXELFORMATDESCRIPTOR 構造体 (wingdi.h)
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 色モードでのみ 1 つのハードウェア パレットをサポートするハードウェアのピクセル形式記述子で定義されます。 このようなシステムでハードウェア アクセラレーションを使用するには、RGBA モードの場合はハードウェア パレットが固定順序 (3-3-2 など) であるか、カラー インデックス モードの場合は論理パレットと一致する必要があります。このフラグが設定されている場合は、プログラムで SetSystemPaletteUse を呼び出して、論理パレットとシステム パレットの 1 対 1 のマッピングを強制する必要があります。 OpenGL ハードウェアが複数のハードウェア パレットをサポートしており、デバイス ドライバーが OpenGL 用の予備のハードウェア パレットを割り当てることができる場合、このフラグは通常明確です。
このフラグは、汎用ピクセル形式では設定されません。 |
PFD_DOUBLEBUFFER
|
バッファーは 2 つのバッファーに格納されます。 このフラグとPFD_SUPPORT_GDIは、現在のジェネリック実装では相互に排他的です。 |
PFD_STEREO
|
バッファーはステレオスコピックです。 このフラグは、現在のジェネリック実装ではサポートされていません。 |
PFD_SWAP_LAYER_BUFFERS
|
デバイスが、ダブルバッファーオーバーレイまたはアンダーレイ平面を含むピクセル形式で個々のレイヤープレーンをスワップできるかどうかを示します。 それ以外の場合、すべてのレイヤー プレーンがグループとして一緒にスワップされます。 このフラグを設定すると、 wglSwapLayerBuffers がサポートされます。 |
ChoosePixelFormat を呼び出すときに、次のビット フラグを指定できます。
値 | 意味 |
---|---|
PFD_DEPTH_DONTCARE
|
要求されたピクセル形式は、深度バッファーを持つか持たないかのどちらかになります。 深度バッファーのないピクセル形式を選択するには、このフラグを指定する必要があります。 要求されたピクセル形式は、深度バッファーの有無にかかわらず指定できます。 それ以外の場合は、深度バッファーを持つピクセル形式のみが考慮されます。 |
PFD_DOUBLEBUFFER_DONTCARE
|
要求されたピクセル形式は、単一バッファーまたはダブルバッファーのいずれかです。 |
PFD_STEREO_DONTCARE
|
要求されたピクセル形式は、単視的または立体的にすることができます。 |
glAddSwapHintRectWIN 拡張関数を使用すると、PIXELFORMATDESCRIPTOR ピクセル形式構造に対して 2 つの新しいフラグが含まれます。
値 | 意味 |
---|---|
PFD_SWAP_COPY
|
バッファー スワップの後に、ダブル バッファーメインカラー プレーン内のバック バッファーの内容を指定します。 カラー バッファーをスワップすると、バック バッファーの内容がフロント バッファーにコピーされます。 バック バッファーの内容は、スワップの影響を受けません。 PFD_SWAP_COPYはヒントのみであり、ドライバーによって提供されない場合があります。 |
PFD_SWAP_EXCHANGE
|
バッファー スワップの後に、ダブル バッファーメインカラー プレーン内のバック バッファーの内容を指定します。 カラー バッファーをスワップすると、バック バッファーのコンテンツがフロント バッファーのコンテンツと交換されます。 スワップの後、バック バッファーのコンテンツには、スワップ前のフロント バッファーのコンテンツが含まれます。 PFD_SWAP_EXCHANGEはヒントのみであり、ドライバーによって提供されない場合があります。 |
iPixelType
ピクセル データの種類を指定します。 次の型が定義されています。
値 | 意味 |
---|---|
PFD_TYPE_RGBA
|
RGBA ピクセル。 各ピクセルには、赤、緑、青、アルファの 4 つのコンポーネントがあります。 |
PFD_TYPE_COLORINDEX
|
色インデックスのピクセル。 各ピクセルは、色インデックス値を使用します。 |
cColorBits
各カラー バッファー内のカラー ビットプレーンの数を指定します。 RGBA ピクセル タイプの場合、アルファ ビットプレーンを除くカラー バッファーのサイズです。 色インデックス ピクセルの場合は、色インデックス バッファーのサイズです。
cRedBits
各 RGBA カラー バッファー内の赤いビットプレーンの数を指定します。
cRedShift
各 RGBA カラー バッファー内の赤いビットプレーンのシフト数を指定します。
cGreenBits
各 RGBA カラー バッファー内の緑色のビットプレーンの数を指定します。
cGreenShift
各 RGBA カラー バッファーの緑色のビットプレーンのシフト数を指定します。
cBlueBits
各 RGBA カラー バッファー内の青いビットプレーンの数を指定します。
cBlueShift
各 RGBA カラー バッファーの青いビットプレーンのシフト数を指定します。
cAlphaBits
各 RGBA カラー バッファー内のアルファ ビットプレーンの数を指定します。 アルファ ビットプレーンはサポートされていません。
cAlphaShift
各 RGBA カラー バッファー内のアルファ ビットプレーンのシフト数を指定します。 アルファ ビットプレーンはサポートされていません。
cAccumBits
累積バッファー内のビットプレーンの合計数を指定します。
cAccumRedBits
累積バッファー内の赤いビットプレーンの数を指定します。
cAccumGreenBits
累積バッファー内の緑色のビットプレーンの数を指定します。
cAccumBlueBits
累積バッファー内の青いビットプレーンの数を指定します。
cAccumAlphaBits
累積バッファー内のアルファ ビットプレーンの数を指定します。
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 [デスクトップ アプリのみ] |
Header | wingdi.h |