glBlendFunc 함수
glBlendFunc 함수는 픽셀 산술 연산을 지정합니다.
구문
void WINAPI glBlendFunc(
GLenum sfactor,
GLenum dfactor
);
매개 변수
-
sfactor
-
빨강, 녹색, 파랑 및 알파 소스 혼합 요소를 계산하는 방법을 지정합니다. GL_ZERO, GL_ONE, GL_DST_COLOR, GL_ONE_MINUS_DST_COLOR, GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA, GL_DST_ALPHA, GL_ONE_MINUS_DST_ALPHA 및 GL_SRC_ALPHA_SATURATE 9개의 기호 상수가 허용됩니다.
-
dfactor
-
빨간색, 녹색, 파랑 및 알파 대상 혼합 요소를 계산하는 방법을 지정합니다. GL_ZERO, GL_ONE, GL_SRC_COLOR, GL_ONE_MINUS_SRC_COLOR, GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA, GL_DST_ALPHA 및 GL_ONE_MINUS_DST_ALPHA 8개의 기호 상수가 허용됩니다.
반환 값
이 함수는 값을 반환하지 않습니다.
오류 코드
glGetError 함수에서 다음 오류 코드를 검색할 수 있습니다.
Name | 의미 |
---|---|
|
인팩터 또는 dfactor는 허용되는 값이 아니었습니다. |
|
함수는 glBegin 호출과 glEnd에 대한 해당 호출 사이에 호출되었습니다. |
설명
RGB 모드에서는 들어오는(원본) RGBA 값을 프레임 버퍼(대상 값)에 이미 있는 RGBA 값과 혼합하는 함수를 사용하여 픽셀을 그릴 수 있습니다. 기본적으로 혼합은 사용하지 않도록 설정됩니다. glEnable 및 glDisable을 GL_BLEND 인수와 함께 사용하여 혼합을 사용하도록 설정하고 사용하지 않도록 설정합니다.
사용하도록 설정하면 glBlendFunc 는 혼합 작업을 정의합니다. sfactor 매개 변수는 소스 색 구성 요소의 크기를 조정하는 데 사용되는 9가지 메서드 중 어느 것을 지정합니다. dfactor 매개 변수는 대상 색 구성 요소의 크기를 조정하는 데 사용되는 8가지 메서드 중 어느 것을 지정합니다. 11개의 가능한 메서드는 다음 표에 설명되어 있습니다. 각 메서드는 빨강, 녹색, 파랑 및 알파에 대해 각각 하나씩 네 개의 배율 요소를 정의합니다.
테이블 및 후속 수식에서 원본 및 대상 색 구성 요소를 (R? , G? , B? , A? ) 및 (Rd , Gd , Bd , Ad )라고 합니다. 0과 (k R, k G, kR,kA) 사이에 정수 값이 있는 것으로 이해됩니다. 여기서
kR =2mR - 1
kG =2mG - 1
kB =2mB - 1
kA =2mA - 1
및 (mR , mG , mB , mA )는 빨간색, 녹색, 파란색 및 알파 비트플레인의 수입니다.
원본 및 대상 배율 인수를 (의R , sG , sB , sA ) 및 (dR , dG , dB , dA )라고 합니다. 표에 설명된 배율 인수(fR , fG , fB , fA )는 원본 또는 대상 요소를 나타냅니다. 모든 배율 계수의 범위는 [0,1]입니다.
매개 변수 | (fR , fG , fB , fA ) |
---|---|
GL_ZERO | (0,0,0,0) |
GL_ONE | (1,1,1,1) |
GL_SRC_COLOR | (R? / kR , G? / kG , B? / kB , A? / kA ) |
GL_ONE_MINUS_SRC_COLOR | (1,1,1,1) - (R? / kR , G? / kG , B? / kB , A? / kA ) |
GL_DST_COLOR | (Rd / kR , Gd / kG , Bd / kB , Ad / kA ) |
GL_ONE_MINUS_DST_COLOR | (1,1,1,1) - (Rd / kR , Gd / kG , Bd / kB , Ad / kA ) |
GL_SRC_ALPHA | (A? / kA , A? / kA , A? / kA , A? / kA ) |
GL_ONE_MINUS_SRC_ALPHA | (1,1,1,1) - (A? / kA , A? / kA , A? / kA , A? / kA ) |
GL_DST_ALPHA | (Ad / kA , Ad / kA , Ad / kA , Ad / kA ) |
GL_ONE_MINUS_DST_ALPHA | (1,1,1,1) - (Ad / kA , Ad / kA , Ad / kA , Ad / kA ) |
GL_SRC_ALPHA_SATURATE | (i,i,i, 1) |
테이블에서,
i = min (A? , kA - d ) / kA
RGBA 모드로 그릴 때 픽셀의 혼합된 RGBA 값을 결정하기 위해 시스템은 다음 수식을 사용합니다.
R (d) = min( kR , R? sR + d dR )
G (d) = min( kG , G? sG + GddG )
B (d) = min( kB, B? sB + d dB )
A (d) = min( kA , A? sA + d dA )
위의 수식의 정밀도에도 불구하고 혼합은 부정확한 정수 색 값으로 작동하기 때문에 혼합 산술을 정확히 지정하지 않습니다. 그러나 1과 같아야 하는 혼합 계수는 곱셈을 수정하지 않도록 보장되고 0과 같은 혼합 인수는 곱셈을 0으로 줄입니다. 예를 들어, 인팩터가 GL_SRC_ALPHA 경우 dfactor 는 GL_ONE_MINUS_SRC_ALPHA A인가요? 는 kA와 같으며 수식은 단순 대체로 줄어듭니다.
Rd = R?
Gd = G?
Bd = B?
D = A?
예제
투명도는 가장 먼 곳에서 가장 가까운 것으로 정렬된 기본 형식이 있는 glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA)를 사용하여 구현하는 것이 가장 좋습니다. 이 투명도 계산에는 프레임 버퍼에 알파 비트플레인이 필요하지 않습니다.
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA)를 사용하여 앤티앨리어싱된 점과 줄을 임의 순서로 렌더링할 수도 있습니다.
다각형 앤티앨리어싱을 최적화하려면 다각형이 가장 가까운 것에서 가장 먼 것으로 정렬된 glBlendFunc(GL_SRC_ALPHA_SATURATE, GL_ONE)를 사용합니다. 다각형 앤티앨리어싱에 대한 자세한 내용은 glEnable 의 GL_POLYGON_SMOOTH 인수를 참조하세요. 이 혼합 함수가 올바르게 작동하려면 있어야 하는 대상 알파 비트플레인은 누적된 적용 범위를 저장합니다.
들어오는(원본) 알파는 완전한 불투명도를 나타내는 1.0(KA )부터 완전한 투명도를 나타내는 0.0(0)까지의 재질 불투명도입니다.
그리기에 둘 이상의 색 버퍼를 사용하도록 설정하면 활성화된 각 버퍼가 개별적으로 혼합되고 버퍼의 내용이 대상 색에 사용됩니다. ( glDrawBuffer를 참조하세요.)
혼합은 RGBA 렌더링에만 영향을 줍니다. 색 인덱스 렌더러에서 무시됩니다.
다음 함수는 glBlendFunc와 관련된 정보를 검색합니다.
인수가 GL_BLEND_SRC glGet
인수가 GL_BLEND_DST glGet
인수가 GL_BLEND glIsEnabled
요구 사항
요구 사항 | 값 |
---|---|
지원되는 최소 클라이언트 |
Windows 2000 Professional[데스크톱 앱만] |
지원되는 최소 서버 |
Windows 2000 Server[데스크톱 앱만] |
헤더 |
|
라이브러리 |
|
DLL |
|