OpenGL 블렌딩
이것을 코드로 표현하자면 아래와 같다. 우선 블렌딩을 활성화하고 사각형을 그리는데 블렌딩 옵션을 입력으로 들어오는 화소만 그려지라는 의미의 GL_ONE, GL_ZERO 로 주고 삼각형을 그린다. 그리고나서 블렌딩 옵션을 바꿔서 사각형을 그리면 된다.
glEnable(GL_BLEND); // 블렌딩활성화
glBlendFunc(GL_ONE, GL_ZERO); // 소스(Incoming) 만그리기
glBegin(GL_TRIANGLES); // Drawing Using Triangles
glColor4f(1.0f, 0.0f, 0.0f, 1.0f);
glVertex4f( 0.0f, 1.2f, 0.0f, 1.0f);
glVertex4f(-1.2f,-1.0f, 0.0f, 1.0f);
glVertex4f( 1.2f,-1.0f, 0.0f, 1.0f);
glEnd();
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
glBegin(GL_QUADS); // Draw A Quad
glColor4f(0.0f, 0.0f, 1.0f, 0.5f);
glVertex4f(-1.0f, 1.0f, 0.0f, 1.0f);
glVertex4f( 1.0f, 1.0f, 0.0f, 1.0f);
glVertex4f( 1.0f,-1.0f, 0.0f, 1.0f);
glVertex4f(-1.0f,-1.0f, 0.0f, 1.0f);
glEnd();
glEnable(GL_BLEND); // 블렌딩활성화
glBlendFunc(GL_SRC_ALPHA,GL_ONE);
glBegin(GL_TRIANGLES); // Drawing Using Triangles
glColor4f(1.0f, 1.0f, 1.0f, 0.33333f);
glVertex4f( 0.0f, 1.2f, 0.0f, 1.0f);
glVertex4f(-1.2f,-1.0f, 0.0f, 1.0f);
glVertex4f( 1.2f,-1.0f, 0.0f, 1.0f);
glEnd();
glBegin(GL_QUADS); // Draw A Quad
glColor4f(1.0f, 1.0f, 1.0f, 0.33333f);
glVertex4f(-1.0f, 1.0f, 0.0f, 1.0f);
glVertex4f( 1.0f, 1.0f, 0.0f, 1.0f);
glVertex4f( 1.0f,-1.0f, 0.0f, 1.0f);
glVertex4f(-1.0f,-1.0f, 0.0f, 1.0f);
glEnd();
glColor4f(1.0f, 1.0f, 1.0f, 0.33333f);
glutSolidSphere(1.0f, 36, 36);