. 다른 하나는이 경우 알파 채널을 전혀 존중하지 않으며 간단하게 소스 및 대상 색상을 요약합니다.
참고해야 할 것이 하나 있습니다. 이렇게하면 색상이 잘 작동하지만 대상 알파 채널은 올바르지 않습니다. 대부분의 경우에는 사용하지 않지만 알파 채널이있는 버퍼에서 이미지를 추출하려면 FBO를 사용하고 텍스처를 투명도로 재사용 할 때도 마찬가지입니다. 이 경우 glBlendFunc(GL_ONE_MINUS_DST_ALPHA, GL_ONE)
을 사용하여 알파 채널을 별도로 그려야합니다. 이는 드로 콜을 두 배로하는 것을 의미합니다 (최소한 셰이더가없는 더 좋은 솔루션은 생각할 수 없습니다). 색으로 그리려면 당신 만 glColorMask(GL_TRUE, GL_TRUE, GL_TRUE, GL_FALSE)
을 설정하고 알파 만 사용 그릴이 glColorMask(GL_FALSE, GL_FALSE, GL_FALSE, GL_TRUE)
요약하면 :
glEnable(GL_BLEND);
glColorMask(GL_TRUE, GL_TRUE, GL_TRUE, GL_FALSE);
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
//draw the scene
glColorMask(GL_FALSE, GL_FALSE, GL_FALSE, GL_TRUE);
glBlendFunc(GL_ONE_MINUS_DST_ALPHA, GL_ONE);
//draw the scene
glDisable(GL_ALPHA_TEST);
glDisable(GL_BLEND);