SetPixelFormat 함수(wingdi.h)
SetPixelFormat 함수는 지정된 디바이스 컨텍스트의 픽셀 형식을 iPixelFormat 인덱스에 지정된 형식으로 설정합니다.
구문
BOOL SetPixelFormat(
HDC hdc,
int format,
const PIXELFORMATDESCRIPTOR *ppfd
);
매개 변수
hdc
함수가 설정하려고 시도하는 픽셀 형식의 디바이스 컨텍스트를 지정합니다.
format
설정할 픽셀 형식을 식별하는 인덱스입니다. 디바이스 컨텍스트에서 지원하는 다양한 픽셀 형식은 하나의 기반 인덱스로 식별됩니다.
ppfd
논리적 픽셀 형식 사양을 포함하는 PIXELFORMATDESCRIPTOR 구조체에 대한 포인터입니다. 시스템의 메타파일 구성 요소는 이 구조를 사용하여 논리적 픽셀 형식 사양을 기록합니다. 구조체는 SetPixelFormat 함수의 동작에 다른 영향을 주지 않습니다.
반환 값
함수가 성공하면 반환 값은 TRUE입니다.
함수가 실패하면 반환 값은 FALSE입니다. 확장 오류 정보를 가져오려면 GetLastError를 호출합니다.
설명
hdc가 창을 참조하는 경우 SetPixelFormat 함수를 호출하면 창의 픽셀 형식도 변경됩니다. 창의 픽셀 형식을 두 번 이상 설정하면 창 관리자와 다중 스레드 애플리케이션에 상당한 복잡성이 발생할 수 있으므로 허용되지 않습니다. 애플리케이션은 창의 픽셀 형식을 한 번만 설정할 수 있습니다. 창의 픽셀 형식이 설정되면 변경할 수 없습니다.
wglCreateContext 함수를 호출하기 전에 디바이스 컨텍스트에서 픽셀 형식을 선택해야 합니다. wglCreateContext 함수는 디바이스 컨텍스트의 선택한 픽셀 형식으로 디바이스에 그리기 위한 렌더링 컨텍스트를 만듭니다.
OpenGL 창에는 고유한 픽셀 형식이 있습니다. 따라서 OpenGL 창의 클라이언트 영역에 대해 검색된 디바이스 컨텍스트만 창에 그릴 수 있습니다. 따라서 WS_CLIPCHILDREN 및 WS_CLIPSIBLINGS 스타일을 사용하여 OpenGL 창을 만들어야 합니다. 또한 창 클래스 특성에는 CS_PARENTDC 스타일이 포함되어서는 안 됩니다.
예제
다음 코드 예제에서는 SetPixelFormat 사용량을 보여 줍니다.
PIXELFORMATDESCRIPTOR pfd = {
sizeof(PIXELFORMATDESCRIPTOR), // size of this pfd
1, // version number
PFD_DRAW_TO_WINDOW | // support window
PFD_SUPPORT_OPENGL | // support OpenGL
PFD_DOUBLEBUFFER, // double buffered
PFD_TYPE_RGBA, // RGBA type
24, // 24-bit color depth
0, 0, 0, 0, 0, 0, // color bits ignored
0, // no alpha buffer
0, // shift bit ignored
0, // no accumulation buffer
0, 0, 0, 0, // accum bits ignored
32, // 32-bit z-buffer
0, // no stencil buffer
0, // no auxiliary buffer
PFD_MAIN_PLANE, // main layer
0, // reserved
0, 0, 0 // layer masks ignored
};
HDC hdc;
int iPixelFormat;
// get the best available match of pixel format for the device context
iPixelFormat = ChoosePixelFormat(hdc, &pfd);
// make that the pixel format of the device context
SetPixelFormat(hdc, iPixelFormat, &pfd);
요구 사항
요구 사항 | 값 |
---|---|
지원되는 최소 클라이언트 | Windows 2000 Professional[데스크톱 앱만] |
지원되는 최소 서버 | Windows 2000 Server[데스크톱 앱만] |
대상 플랫폼 | Windows |
헤더 | wingdi.h |
라이브러리 | Gdi32.lib |
DLL | Gdi32.dll |