OpenGL을 쓰고 항시 API를 쓰고 다시 해제해주어야 하는 API들은 해제 해주는것을 잊지 마세요
예로들어 wglMakeCurrent(...)로 들자면
HDC hdc = getHDC();
HGLRC hglrc = getHGLRCRES_GL();
::wglMakeCurrent(hdc, hglrc); //사용
위와같이 wglMakeCurrent(...) 랜더링 부분에 Api 사용과 해제 부분을 제대로 하지 않으면 다른
위치의 wglMakeCurrent(...) 를 사용시 문제가 생길수 있습니다.
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
출처: http://diehard98.tistory.com/m/entry/OpenGL-%EB%B8%94%EB%A0%8C%EB%94%A9
이것을 코드로 표현하자면 아래와 같다. 우선 블렌딩을 활성화하고 사각형을 그리는데 블렌딩 옵션을 입력으로 들어오는 화소만 그려지라는 의미의 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);
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
'프로그래밍 관련 > 3D,2D DRAW 관련' 카테고리의 다른 글
OpenGL glPolygonMode()와 glCullFace() (0) | 2017.08.18 |
---|---|
OpenGL Viewing - Viewing, Modeling, Projection, Viewport transformation (0) | 2017.08.18 |
OpenGL FBO (FrameBuffer Object) 사용하기 (0) | 2017.08.18 |
OpenGL MFC, WIN32 배경투명하게 transparent, glClearColor, Clear 하기 (0) | 2017.07.14 |
3D구현 - 2D 물체 겹침 표현하기 관련 (0) | 2017.07.12 |
댓글 영역