glDrawPixels 함수

glDrawPixels 함수는 프레임버퍼에 픽셀 블록을 씁니다.

구문

void WINAPI glDrawPixels(
         GLsizei width,
         GLsizei height,
         GLenum  format,
         GLenum  type,
   const GLvoid  *pixels
);

매개 변수

width

framebuffer에 쓸 픽셀 사각형의 너비 차원입니다.

height(높이)

framebuffer에 쓸 픽셀 사각형의 높이 차원입니다.

format

픽셀 데이터의 형식입니다. 허용되는 기호 상수는 다음과 같습니다.

의미
GL_COLOR_INDEX
각 픽셀은 단일 값인 색 인덱스입니다.
  1. glDrawPixels 함수는 메모리 데이터 형식에 관계없이 각 픽셀을 고정 소수점 형식으로 변환합니다. 이진 지점의 오른쪽에는 지정되지 않은 비트 수가 있습니다. 부동 소수점 값은 true 고정 소수점 값으로 변환합니다. glDrawPixels 함수는 모든 분수 비트가 0으로 설정된 부호 있는 정수 및 부호 없는 정수 데이터를 변환합니다. 함수는 비트맵 데이터를 0.0 또는 1.0으로 변환합니다.
  2. glDrawPixels 함수는 각 고정점 인덱스를 GL_INDEX_SHIFT 비트 왼쪽으로 이동하고 GL_INDEX_OFFSET 추가합니다. GL_INDEX_SHIFT 음수이면 오른쪽 시프트입니다. 두 경우 모두 0비트만 결과에 지정되지 않은 비트 위치를 채웁니다.
  3. RGBA 모드에서 glDrawPixels는 GL_PIXEL_MAP_I_TO_R, GL_PIXEL_MAP_I_TO_G, GL_PIXEL_MAP_I_TO_B 및 GL_PIXEL_MAP_I_TO_A 테이블을 사용하여 결과 인덱스를 RGBA 픽셀로 변환합니다. 색 인덱스 모드에서 GL_MAP_COLOR true이면 인덱스가 조회 테이블 GL_PIXEL_MAP_I_TO_I glDrawPixels가 참조하는 값으로 대체됩니다.
  4. 인덱스의 조회 대체가 수행되었는지 여부에 관계없이 인덱스의 정수 부분은 ANDed(2b - 1)입니다. 여기서 b는 색 인덱스 버퍼의 비트 수입니다.
  5. 그런 다음, 결과 인덱스 또는 RGBA 색은 현재 래스터 위치 z-coordinate 및 질감 좌표를 각 픽셀에 연결한 다음 x와 y 창 좌표를 n번째조각(예: x?)에 할당하여 조각으로 변환됩니다. = xr + n mod width
    y? = yr + n/width
    여기서 (xr , yr )은 현재 래스터 위치입니다.
  6. glDrawPixels 함수는 이러한 픽셀 조각을 점, 선 또는 다각형 래스터화에 의해 생성된 조각처럼 처리합니다. 프레임버퍼에 조각을 쓰기 전에 질감 매핑, 맵 및 모든 조각 작업을 적용합니다.
GL_STENCIL_INDEX
각 픽셀은 단일 값인 스텐실 인덱스입니다.
  1. glDrawPixels 함수는 메모리 데이터 형식에 관계없이 이진 지점의 오른쪽에 지정된 수의 비트가 있는 고정 소수점 형식으로 변환합니다. 부동 소수점 값은 true 고정 소수점 값으로 변환합니다. glDrawPixels 함수는 모든 분수 비트가 0으로 설정된 부호 있는 정수 및 부호 없는 정수 데이터를 변환합니다. 비트맵 데이터는 0.0 또는 1.0으로 변환됩니다.
  2. glDrawPixels 함수는 각 고정점 인덱스를 GL_INDEX_SHIFT 비트 왼쪽으로 이동하고 GL_INDEX_OFFSET 추가합니다. GL_INDEX_SHIFT 음수이면 오른쪽 시프트입니다. 두 경우 모두 0비트만 결과에 지정되지 않은 비트 위치를 채웁니다.
  3. GL_MAP_STENCIL true이면 인덱스가 조회 테이블 GL_PIXEL_MAP_S_TO_S glDrawPixels가 참조하는 값으로 대체됩니다.
  4. 인덱스의 조회 대체가 완료되었는지 여부에 관계없이 인덱스의 정수 부분은 AND로2b - 1로 처리됩니다. 여기서 b는 스텐실 버퍼의 비트 수입니다. 그러면 결과 스텐실 인덱스가 스텐실 버퍼에 기록되어 n번째인덱스가 위치 x?에 기록됩니다. = xr + n mod width
    y? = yr + n/width
    여기서 (xr , yr )은 현재 래스터 위치입니다. 픽셀 소유권 테스트, 가위 테스트 및 스텐실 쓰기 맵만 이러한 쓰기에 영향을 줍니다.
GL_DEPTH_COMPONENT
각 픽셀은 단일 깊이 구성 요소입니다.
  1. glDrawPixels 함수는 부동 소수점 데이터를 지정되지 않은 정밀도의 내부 부동 소수점 형식으로 직접 변환합니다. 부호 있는 정수 데이터는 가장 양수 표현 가능한 정수 값이 1.0에 매핑되고 가장 음의 표현 가능한 값이 -1.0에 매핑되는 내부 부동 소수점 형식에 선형으로 매핑됩니다. 부호 없는 정수 데이터는 비슷하게 매핑됩니다. 가장 큰 정수 값은 1.0에 매핑되고 0은 0.0에 매핑됩니다.
  2. glDrawPixels 함수는 결과 부동 소수점 깊이 값을 GL_DEPTH_SCALE 곱하고 GL_DEPTH_BIAS 추가합니다. 결과는 [0,1] 범위로 고정됩니다.
  3. glDrawPixels 함수는 현재 래스터 위치 색이나 색 인덱스 및 질감 좌표를 각 픽셀에 연결한 다음 x와 y 창 좌표를 n번째 조각에 할당하여 결과 깊이 구성 요소를 조각으로 변환합니다. = xr + n mod width
    y? = yr + n/width
    여기서 ( xr ,yr )은 현재 래스터 위치입니다.
  4. 이러한 픽셀 조각은 점, 선 또는 다각형 래스터화에 의해 생성된 조각처럼 처리됩니다. glDrawPixels 함수는 조각을 framebuffer에 쓰기 전에 질감 매핑, 작업 및 모든 조각 작업을 적용합니다.
GL_RGBA
각 픽셀은 빨간색, 녹색, 파랑, 알파 순으로 구성된 4개 구성 요소 그룹입니다.
  1. glDrawPixels 함수는 부동 소수점 값을 지정되지 않은 정밀도의 내부 부동 소수점 형식으로 직접 변환합니다. 부호 있는 정수 값은 가장 양수 표현 가능한 정수 값이 1.0에 매핑되고 가장 음의 표현 가능한 값이 -1.0에 매핑되는 내부 부동 소수점 형식에 선형으로 매핑됩니다. 부호 없는 정수 데이터는 비슷하게 매핑됩니다. 가장 큰 정수 값은 1.0에 매핑되고 0은 0.0에 매핑됩니다.
  2. glDrawPixels 함수는 결과 부동 소수점 색 값을 GL_c_SCALE 곱하고 GL_c_BIAS 추가합니다. 여기서 c는 해당 색 구성 요소에 대해 RED, GREEN, BLUE 및 ALPHA입니다. 결과는 [0,1] 범위로 고정됩니다.
  3. GL_MAP_COLOR true이면 glDrawPixels는 조회 테이블 GL_PIXEL_MAP_c_TO_c 크기별로 각 색 구성 요소의 크기를 조정한 다음 구성 요소를 해당 테이블에서 참조하는 값으로 대체합니다. c는 각각 R, G, B 또는 A입니다.
  4. glDrawPixels 함수는 현재 래스터 위치 z-coordinate 및 질감 좌표를 각 픽셀에 연결한 다음 x와 y 창 좌표를 n번째 조각에 할당하여 결과 RGBA 색을 조각으로 변환합니다. = xr + n mod width
    y? = yr + n /width
    여기서 (xr ,yr )은 현재 래스터 위치입니다.
  5. 이러한 픽셀 조각은 점, 선 또는 다각형 래스터화에 의해 생성된 조각처럼 처리됩니다. glDrawPixels 함수는 조각을 framebuffer에 쓰기 전에 질감 매핑, 작업 및 모든 조각 작업을 적용합니다.
GL_RED
각 픽셀은 단일 빨간색 구성 요소입니다.
glDrawPixels 함수는 RGBA 픽셀의 빨간색 구성 요소와 동일한 방식으로 이 구성 요소를 내부 부동 소수점 형식으로 변환한 다음 녹색과 파란색이 0.0으로 설정된 RGBA 픽셀로 변환하고 알파는 1.0으로 설정합니다. 이 변환 후 픽셀은 RGBA 픽셀로 읽은 것처럼 처리됩니다.
GL_GREEN
각 픽셀은 단일 녹색 구성 요소입니다.
glDrawPixels 함수는 RGBA 픽셀의 녹색 구성 요소와 동일한 방식으로 이 구성 요소를 내부 부동 소수점 형식으로 변환한 다음, 빨간색과 파란색이 0.0으로 설정되고 알파가 1.0으로 설정된 RGBA 픽셀로 변환합니다. 이 변환 후 픽셀은 RGBA 픽셀로 읽은 것처럼 처리됩니다.
GL_BLUE
각 픽셀은 단일 파란색 구성 요소입니다.
glDrawPixels 함수는 RGBA 픽셀의 파란색 구성 요소와 동일한 방식으로 이 구성 요소를 내부 부동 소수점 형식으로 변환한 다음 빨강과 녹색이 0.0으로 설정되고 알파가 1.0으로 설정된 RGBA 픽셀로 변환합니다. 이 변환 후 픽셀은 RGBA 픽셀로 읽은 것처럼 처리됩니다.
GL_ALPHA
각 픽셀은 단일 알파 구성 요소입니다.
glDrawPixels 함수는 RGBA 픽셀의 알파 구성 요소와 동일한 방식으로 이 구성 요소를 내부 부동 소수점 형식으로 변환한 다음 빨강, 녹색 및 파란색이 0.0으로 설정된 RGBA 픽셀로 변환합니다. 이 변환 후 픽셀은 RGBA 픽셀로 읽은 것처럼 처리됩니다.
GL_RGB
각 픽셀은 빨간색, 녹색, 파란색의 세 가지 구성 요소로 구성된 그룹입니다. glDrawPixels 함수는 RGBA 픽셀의 빨강, 녹색 및 파랑 구성 요소와 동일한 방식으로 각 구성 요소를 내부 부동 소수점 형식으로 변환합니다. 3 색은 알파를 1.0로 설정 하 여 RGBA 픽셀으로 변환 됩니다. 이 변환 후 픽셀은 RGBA 픽셀로 읽은 것 처럼 처리 됩니다.
GL_LUMINANCE
각 픽셀은 단일 광도 구성 요소입니다.
이 구성 요소는 RGBA 픽셀의 빨강 구성 요소와 같은 방식으로이 구성 요소를 내부 부동 소수점 형식으로 변환한 다음 빨강, 녹색 및 파랑을 변환 된 광도 값으로 설정 하 고 알파를 1.0로 설정 하 여 RGBA 픽셀로 변환 합니다. 이 변환 후 픽셀은 RGBA 픽셀로 읽은 것 처럼 처리 됩니다.
GL_LUMINANCE_ALPHA
각 픽셀은 두 구성 요소 (광도, 알파)의 그룹입니다.
글 수 픽셀 함수는 RGBA 픽셀의 빨강 구성 요소와 같은 방식으로 두 구성 요소를 내부 부동 소수점 형식으로 변환한 다음 빨강, 녹색 및 파랑을 변환 된 광도 값으로 설정 하 고 알파를 변환 된 알파 값으로 설정 하 여 RGBA 픽셀로 변환 합니다. 이 변환 후 픽셀은 RGBA 픽셀로 읽은 것 처럼 처리 됩니다.
GL_BGR_EXT
각 픽셀은 파란색, 녹색, 빨강의 세 가지 구성 요소로 구성 된 그룹입니다.
GL_BGR_EXT은 Windows 장치 독립적 비트맵 (dib)의 메모리 레이아웃에 일치 하는 형식을 제공 합니다. 따라서 응용 프로그램은 Windows 함수 호출 및 OpenGL 픽셀 함수 호출과 함께 동일한 데이터를 사용할 수 있습니다.
GL_BGRA_EXT
각 픽셀은 파랑, 녹색, 빨강, 알파의 네 가지 구성 요소로 구성 된 그룹입니다.
GL_BGRA_EXT은 Windows 장치 독립적 비트맵 (dib)의 메모리 레이아웃에 일치 하는 형식을 제공 합니다. 따라서 응용 프로그램은 Windows 함수 호출 및 OpenGL 픽셀 함수 호출과 함께 동일한 데이터를 사용할 수 있습니다.

type

픽셀 의 데이터 형식입니다. 다음은 허용 되는 기호화 된 상수 및 해당 의미입니다.

의미
GL _ 부호 없는 _ 바이트
부호 없는 8비트 정수
GL _ 바이트
부호 있는 8비트 정수
GL _ 비트맵
부호 없는 8 비트 정수의 단일 비트
GL _ UNSIGNED _ SHORT
부호 없는 16비트 정수
GL _ SHORT
부호 있는 16비트 정수
GL _ UNSIGNED _ INT
부호 없는 32비트 정수
GL _ INT
32비트 정수
GL _ FLOAT
단 정밀도 부동 소수점

픽셀

픽셀 데이터에 대 한 포인터입니다.

반환 값

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

오류 코드

다음 오류 코드는 영향을 받은 Geterror 함수에서 검색할 수 있습니다.

Name 의미
GL _ 잘못 된 _ 값
너비나 높이가 음수입니다.
GL _ 잘못 된 _ 열거형
형식 또는 형식 중 하나가 허용 되는 값이 아닙니다.
GL _ 잘못 된 _ 작업
형식은 gl _ RED, GL _ 녹색, gl _ 파랑, gl _ 알파, gl _ RGB, GL _ RGBA, gl _ BGR로 _ EXT, gl _ Bgra _ EXT, gl _ 광도 또는 gl _ 광도 알파 이며 _ OpenGL은 색 인덱스 모드에 있습니다.
GL _ 잘못 된 _ 열거형
형식이 gl _ 비트맵이 고 형식이 gl _ 색 _ 인덱스 또는 gl _ 스텐실 _ 인덱스 중 하나가 아닙니다.
GL _ 잘못 된 _ 작업
형식이 GL _ 스텐실 _ 인덱스이 고 스텐실 버퍼가 없습니다.
GL _ 잘못 된 _ 작업
이 함수는에 대 한 호출을 호출 하 고, 이 함수를 호출 하 여 이를 호출 했습니다.

설명

메모리에서 픽셀 데이터 를 읽고 현재 래스터 위치를 기준으로 프레임 버퍼에 씁니다. GlRasterPos 를 사용 하 여 현재 래스터 위치를 설정 하 고 인수 GL 현재 래스터 위치를 사용 하 여이 를 사용 하 여 _ _ _ 래스터 위치를 쿼리 합니다.

여러 매개 변수는 메모리의 픽셀 데이터 인코딩을 정의 하 고 프레임 버퍼에 배치 되기 전에 픽셀 데이터의 처리를 제어 합니다. 이러한 매개 변수는 glPixelStore, glPixelTransfer, glPixelMapglPixelZoom의 네 가지 함수로 설정 됩니다. 이 항목에서는 이러한 4 가지 함수에서 지정 된 매개 변수 중 일부에만 영향을 주는 영향에 대해 설명 합니다.

문자 는 부호 있는 또는 부호 없는 바이트, 부호 있는 또는 부호 없는 유니폼 지정, 부호 있는 정수 또는 부호 없는 정수, 부호 있는 정수 또는 부호 없는 정수, 형식에 따라 단 정밀도 부동 소수점 값의 시퀀스로 데이터를 읽습니다 . 이러한 각 바이트, 유니폼, 정수 또는 부동 소수점 값은 형식 에 따라 하나의 색 또는 깊이 구성 요소나 하나의 인덱스로 해석 됩니다. 인덱스는 항상 개별적으로 처리 됩니다. 색 구성 요소는 형식 에 따라 1, 2, 3 또는 4 값의 그룹으로 처리 됩니다. 개별 인덱스와 구성 요소 그룹을 모두 픽셀 이라고 합니다. 형식이 gl 비트맵 인 경우 _ 데이터는 부호 없는 바이트 여야 하며 형식은 gl _ 색 _ 인덱스 또는 gl _ 스텐실 _ 인덱스 여야 합니다. 각 부호 없는 바이트는 먼저 GL 압축 풀기 LSB에서 결정 한 비트 순서로 8 1 비트 픽셀로 처리 됩니다 _ _ _ ( glPixelStore참조).

높이 너비 ( 픽셀)는 위치 픽셀 에서 시작 하 여 메모리에서 읽습니다. 기본적으로 이러한 픽셀은 인접 한 메모리 위치에서 가져옵니다. 단, 모든 너비 픽셀을 읽은 후에는 읽기 포인터가 다음 4 바이트 경계로 이동 합니다. GlPixelStore 함수는 인수의 GL 압축 풀기 맞춤을 사용 하 여 4 바이트 행 맞춤 _ 을 지정 _ 하 고이를 1, 2, 4 또는 8 바이트로 설정할 수 있습니다. 다른 픽셀 저장소 매개 변수는 첫 번째 픽셀을 읽기 전과 모든 너비 픽셀을 읽은 후 다른 읽기 포인터의 고급을 지정 합니다. GlPixelStore 함수는 glPixelTransferglPixelMap로 지정 된 여러 매개 변수의 값에 따라 동일한 방식으로 메모리에서 읽는 각 높이 x 픽셀에 대해 작동 합니다. 이러한 작업의 세부 정보와 픽셀을 그리는 대상 버퍼는 형식 에 지정 된 대로 픽셀의 형식에 따라 다릅니다.

지금까지 설명한 래스터화는 픽셀 확대/축소 요소 1.0을 가정 합니다. GlPixelZoom 를 사용 하 여 xy 픽셀 확대/축소 비율을 변경 하는 경우 다음과 같이 픽셀이 조각으로 변환 됩니다. (Xr, 년)가 현재 래스터 위치인 경우 지정 된 픽셀이 픽셀 사각형의 n 번째 열 및 m 번째 행에 있으면 조각이의 모퉁이가 있는 사각형에 있는 픽셀로 생성 됩니다.

(xr + 확대/축소 n, yr + 확대/축소y m)

(xr + 확대/축소 (n + 1), yr + 확대/축소y (m + 1))

확대/축소 는 GL 확대/축소 _ _ X 및 확대/축소 값이 gl _ 확대/축소 값입니다 _ .

다음 함수는에 대 한 정보를 검색 합니다.

인수 GL _ 현재 _ 래스터 _ 위치를 사용 하는 글 get

인수 GL _ 현재 _ 래스터 _ 위치가 _ 유효한 인 글 get

요구 사항

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

참고 항목

glAlphaFunc

글 제 시작

글 Blendfunc

glCopyPixels

glDepthFunc

글 끝

글 Get

glLogicOp

glPixelMap

glPixelStore

glPixelTransfer

glPixelZoom

glRasterPos

글 Read픽셀

글 위

glStencilFunc