glCopyPixels 함수

glCopyPixels 함수는 프레임 버퍼의 픽셀을 복사합니다.

구문

void WINAPI glCopyPixels(
   GLint   x,
   GLint   y,
   GLsizei width,
   GLsizei height,
   GLenum  type
);

매개 변수

x

복사할 픽셀의 사각형 영역 왼쪽 아래 모서리에 대한 창 x 평면 좌표입니다.

y

복사할 픽셀의 사각형 영역 왼쪽 아래 모서리에 대한 창 y 평면 좌표입니다.

width

복사할 픽셀의 사각형 영역 너비 차원입니다. 음수가 아니어야 합니다.

height(높이)

복사할 픽셀의 사각형 영역 높이 차원입니다. 음수가 아니어야 합니다.

type

glCopyPixels가 색 값, 깊이 값 또는 스텐실 값을 복사할지 여부를 지정합니다. 허용되는 기호 상수는 입니다.

의미
GL_COLOR
glCopyPixels 함수는 현재 읽기 원본 버퍼로 지정된 버퍼에서 인덱스 또는 RGBA 색을 읽습니다(glReadBuffer 참조).
OpenGL이 색 인덱스 모드인 경우:
  1. 이 버퍼에서 읽은 각 인덱스는 이진 지점의 오른쪽에 지정되지 않은 수의 비트가 있는 고정 소수점 형식으로 변환됩니다.
  2. 각 인덱스는 GL_INDEX_SHIFT 비트로 왼쪽으로 이동하고 GL_INDEX_OFFSET 추가됩니다. GL_INDEX_SHIFT 음수이면 오른쪽으로 이동됩니다. 두 경우 모두 0비트 는 결과에 지정되지 않은 비트 위치를 채웁니다.
  3. GL_MAP_COLOR true이면 인덱스가 조회 테이블 GL_PIXEL_MAP_I_TO_I 참조하는 값으로 바뀝니다.
  4. 인덱스의 조회 대체가 수행되었는지 여부에 관계없이 인덱스의 정수 부분은 ANDed가 2b 1로 지정됩니다. 여기서 b 는 색 인덱스 버퍼의 비트 수입니다.
OpenGL이 RGBA 모드인 경우:
  1. 읽는 각 픽셀의 빨강, 녹색, 파랑 및 알파 구성 요소는 지정되지 않은 정밀도의 내부 부동 소수점 형식으로 변환됩니다.
  2. 변환은 가장 큰 표현 가능한 구성 요소 값을 1.0으로 매핑하고 구성 요소 값 0을 0.0으로 매핑합니다.
  3. 그러면 결과 부동 소수점 색 값에 GL_c_SCALE 곱하고 GL_c_BIAS 추가됩니다. 여기서 c 는 해당 색 구성 요소에 대해 RED, GREEN, BLUE 및 ALPHA입니다.
  4. 결과는 [0,1] 범위로 고정됩니다.
  5. GL_MAP_COLOR true이면 각 색 구성 요소가 조회 테이블 GL_PIXEL_MAP_c_TO_c 크기로 조정된 다음 해당 테이블에서 참조하는 값으로 바뀝니다. c 는 각각 R, G, B 또는 A입니다. 결과 인덱스 또는 RGBA 색은 각 픽셀에 현재 래스터 위치 z 좌표 및 텍스처 좌표를 연결한 다음 창 좌표(xr + i, yr + j)를 할당하여 조각으로 변환됩니다. 여기서 (xr , yr )는 현재 래스터 위치이고 픽셀은 j 행의 i 위치에 있는 픽셀이었습니다. 그런 다음 이러한 픽셀 조각은 점, 선 또는 다각형을 래스터화하여 생성된 조각처럼 처리됩니다. 텍스처 매핑, 안개 및 모든 조각 작업은 조각이 프레임 버퍼에 기록되기 전에 적용됩니다.
GL_DEPTH
깊이 값은 깊이 버퍼에서 읽고 지정되지 않은 정밀도로 내부 부동 소수점 형식으로 직접 변환됩니다. 그러면 결과 부동 소수점 깊이 값에 GL_DEPTH_SCALE 곱하고 GL_DEPTH_BIAS 추가됩니다. 결과는 [0,1] 범위로 고정됩니다.
그런 다음 결과 깊이 구성 요소는 현재 래스터 위치 색 또는 색 인덱스 및 텍스처 좌표를 각 픽셀에 연결한 다음 창 좌표(xr + i, yr + j)를 할당하여 조각으로 변환됩니다. 여기서 (xr , yr )는 현재 래스터 위치이고 픽셀은 j 행의 i 위치에 있는 픽셀이었습니다. 그런 다음 이러한 픽셀 조각은 점, 선 또는 다각형을 래스터화하여 생성된 조각처럼 처리됩니다. 텍스처 매핑, 안개 및 모든 조각 작업은 조각이 프레임 버퍼에 기록되기 전에 적용됩니다.
GL_STENCIL
스텐실 인덱스는 스텐실 버퍼에서 읽고 이진 지점의 오른쪽에 지정되지 않은 수의 비트가 있는 내부 고정 소수점 형식으로 변환됩니다. 그런 다음 각 고정 소수점 인덱스가 GL_INDEX_SHIFT 비트씩 왼쪽으로 이동하고 GL_INDEX_OFFSET 추가됩니다. GL_INDEX_SHIFT 음수이면 오른쪽으로 이동됩니다. 두 경우 모두 0비트 는 결과에 지정되지 않은 비트 위치를 채웁니다. GL_MAP_STENCIL true이면 인덱스가 조회 테이블 GL_PIXEL_MAP_S_TO_S 참조하는 값으로 바뀝니다. 인덱스의 조회 대체가 수행되었는지 여부에 관계없이 인덱스의 정수 부분은 ANDed로 2b - 1이 됩니다. 여기서 b 는 스텐실 버퍼의 비트 수입니다. 결과 스텐실 인덱스는 j 행의 i 위치에서 읽은 인덱스가 위치(xri, yr + + j)에 기록되도록 스텐실 버퍼에 기록됩니다. 여기서 (xr , yr )는 현재 래스터 위치입니다. 픽셀 소유권 테스트, 가위 테스트 및 스텐실 쓰기 마스크만 이러한 쓰기에 영향을 줍니다.

반환 값

이 함수는 값을 반환하지 않습니다.

오류 코드

glGetError 함수에서 다음 오류 코드를 검색할 수 있습니다.

Name 의미
GL_INVALID_ENUM
형식 이 허용되는 값이 아닙니다.
GL_INVALID_VALUE
너비 또는 높이가 음수입니다.
GL_INVALID_OPERATION
형식 이 GL_DEPTH 깊이 버퍼가 없습니다.
GL_INVALID_OPERATION
형식 이 GL_STENCIL 스텐실 버퍼가 없습니다.
GL_INVALID_OPERATION
함수는 glBegin 호출과 glEnd에 대한 해당 호출 간에 호출되었습니다.

설명

glCopyPixels 함수는 지정된 프레임 버퍼 위치에서 현재 래스터 위치를 기준으로 한 영역으로 화면 정렬 픽셀 사각형을 복사합니다. 해당 작업은 전체 픽셀 원본 영역이 창의 노출된 부분 내에 있는 경우에만 잘 정의됩니다. 창 외부 또는 노출되지 않은 창 영역의 복사본 결과는 하드웨어에 종속되고 정의되지 않습니다.

xy 매개 변수는 복사할 사각형 영역의 왼쪽 아래 모서리에 대한 창 좌표를 지정합니다. 너비높이 매개 변수는 복사할 사각형 영역의 크기를 지정합니다. 너비높이 모두 무수한이어야 합니다.

여러 매개 변수가 복사되는 동안 픽셀 데이터의 처리를 제어합니다. 이러한 매개 변수는 glPixelTransfer, glPixelMap 및 glPixelZoom의 세 가지 함수로 설정됩니다. 이 항목에서는 이러한 세 함수에서 지정한 매개 변수 중 대부분(전부는 아님)의 glCopyPixels 에 미치는 영향에 대해 설명합니다.

glCopyPixels 함수는 각 픽셀의 값을 왼쪽 아래 모서리(x + i, y + j)에서 0 = i<너비 및 0 = j<높이로 복사합니다. 이 픽셀은 j 행의 i 픽셀이라고 합니다. 픽셀은 각 행에서 왼쪽에서 오른쪽으로 가장 낮은 행에서 가장 높은 행으로 행 순서로 복사됩니다.

type 매개 변수는 색, 깊이 또는 스텐실 데이터를 복사할지 여부를 지정합니다.

지금까지 설명한 래스터화에서는 픽셀 확대/축소 요소가 1.0이라고 가정합니다. glPixelZoom을 사용하여 xy 픽셀 확대/축소 인수를 변경하는 경우 픽셀은 다음과 같이 조각으로 변환됩니다. (xr , yr )이 현재 래스터 위치이고 지정된 픽셀이 원본 픽셀 사각형의 j 행에 있는 i 위치에 있는 경우 모서리가 있는 사각형에 있는 픽셀에 대해 조각이 생성됩니다.

(xr + 확대/축소? i, yr + zoomyj)

(xr + 확대/축소? (i + 1), yr + zoomy (j + 1))

여기서 확대/축소? 는 GL_ZOOM_X 값이고 확대/축소y 는 GL_ZOOM_Y 값입니다.

glPixelStore로 지정된 모드는 glCopyPixels 작업에 영향을 주지 않습니다.

다음 함수는 glCopyPixels와 관련된 정보를 검색합니다.

인수가 GL_CURRENT_RASTER_POSITION glGet

인수가 GL_CURRENT_RASTER_POSITION_VALID glGet

창의 왼쪽 아래 모서리에 있는 색 픽셀을 현재 래스터 위치에 복사하려면

glCopyPixels( 0, 0, 1, 1, GL_COLOR );

요구 사항

요구 사항
지원되는 최소 클라이언트
Windows 2000 Professional[데스크톱 앱만]
지원되는 최소 서버
Windows 2000 Server[데스크톱 앱만]
헤더
Gl.h
라이브러리
Opengl32.lib
DLL
Opengl32.dll

추가 정보

glBegin

glDepthFunc

glDrawBuffer

glDrawPixels

glEnd

glGet

glPixelMap

glPixelStore

glPixelTransfer

glPixelZoom

glRasterPos

glReadBuffer

glReadPixels

glStencilFunc