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
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 픽셀을 사용합니다. 이 픽셀 형식에 대한 최상의 결과를 얻으려면 논리적 팔레트가 필요합니다. 색상표의 색은 cRedBits, cRedShift, cGreenBits, cGreenShift, cBluebitscBlueShift 멤버의 값에 따라 지정되어야 합니다. 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
요청된 픽셀 형식은 단색 또는 입체적일 수 있습니다.
 

glAddSwapHintRectWIN 확장 함수를 사용하면 PIXELFORMATDESCRIPTOR 픽셀 형식 구조에 대해 두 개의 새 플래그가 포함됩니다.

의미
PFD_SWAP_COPY
0x00000400
버퍼 스왑 후 이중 버퍼링된 기본 색 평면에서 백 버퍼의 내용을 지정합니다. 색 버퍼를 교환하면 백 버퍼의 내용이 전면 버퍼에 복사됩니다. 백 버퍼의 콘텐츠는 스왑의 영향을 받지 않습니다. PFD_SWAP_COPY 힌트일 뿐이며 드라이버에서 제공하지 않을 수 있습니다.
PFD_SWAP_EXCHANGE
0x00000200
버퍼 스왑 후 이중 버퍼링된 기본 색 평면에서 백 버퍼의 내용을 지정합니다. 색 버퍼를 교환하면 백 버퍼의 콘텐츠를 전면 버퍼의 콘텐츠와 교환합니다. 교환 후 백 버퍼의 콘텐츠에는 스왑 전에 프런트 버퍼의 콘텐츠가 포함됩니다. PFD_SWAP_EXCHANGE 힌트일 뿐이며 드라이버에서 제공하지 않을 수 있습니다.

iPixelType

픽셀 데이터의 형식을 지정합니다. 다음 형식이 정의됩니다.

의미
PFD_TYPE_RGBA
0
RGBA 픽셀 각 픽셀에는 빨간색, 녹색, 파랑 및 알파의 네 가지 구성 요소가 순서대로 있습니다.
PFD_TYPE_COLORINDEX
1
색 인덱스 픽셀입니다. 각 픽셀은 색 인덱스 값을 사용합니다.

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[데스크톱 앱만]
머리글 wingdi.h

추가 정보

PixelFormat 선택

DescribePixelFormat

GetPixelFormat

Windows의 OpenGL

SetPixelFormat

구조체