본문 바로가기

C/C++

[C++]OpenGL, OpenCV를 이용하여, PNG파일 불러오기(초간단)

OpenGL에서 투명한 이미지를 쓰기위해, mask를 이용하였다.(OpenGL 기본 제공이 Bitmap이다보니..) 

하지만, mask를 이용하여도 외곽선 부분이 깔끔하지 못한 문제점이 발생하였다.

libpng를 사용하려 했지만... 알수없는 오류가 계속 발생하여 사용 불가..ㅠㅠ

그래서 OpenCV를 이용하여, PNG파일을 Load한 후, OpenGL에서 Alpha채널을 제외하고 출력하니, 투명하게 출력이 된다! 


//OpenCV 변수 선언

IplImage *img = cvLoadImage ("Image/24.png", CV_LOAD_IMAGE_UNCHANGED); //두번째 매개변수가 중요하다!


//OpenGL출력

glEnable(GL_BLEND); //blend옵션을 활성화 한다.

glBlendFunc(GL_SRC_ALPHA,GL_ONE_MINUS_SRC_ALPHA); //알파값을 가진 픽셀을 투명하게 처리한다.

//glPixelZoom(1, -1); //이미지가 뒤집어서 출력된 경우, y축 기준으로 다시 뒤집어서 출력한다.


glDrawPixels(320, 421, GL_BGRA,  GL_UNSIGNED_BYTE, img->imageData); //png 이미지 출력


'C/C++' 카테고리의 다른 글

[스크랩] C언어 가변인자(가변파라미터)를 사용해보자  (0) 2014.06.11
wchar_t <-> char  (0) 2013.05.30
[C언어] 문자열 치환함수  (0) 2012.04.27
포인터  (0) 2012.03.28
scanf() newline 문제  (1) 2012.03.20