아이폰 프로그래밍 첫 연습작

openGL_ImageViewer

맥 추종자들이 보면 열폭하겠지만 이건 확실히 해두고 싶다.

빌어먹을 Mac Os X

빌어먹을  X Cdoe

빌어먹을 Objective C

빌어먹을 COCOA프레임웍

‘쓰.레.기.같.아’

하여간.

예전부터 불만이 많았는데 아이폰에는 제대로된 이미지뷰어가 거의 없다.

코코아터치에서 지원해주는 컴포넌트만 사용하니 빅사이즈 이미지를 제대로 보여주지 못한다. 모바일에서 그런 큰 이미지를 뭐하러 보냐…라고 반문할수도 있겠지만 DSLR로 찍은 사진들 갖고 다니면서 보려면 리사이즈 하기도 짜증나고 때로는 세세하게 보는걸 원할수도 있다.

가로세로 2000픽셀 이상의 이미지를 제대로 보여주는 뷰어가 딱 두개 있다.

GoodReader와 ImageViewer라는 어플인데 이것도 파일이 커지면 두 녀석 다 다운된다. Image Viewer는 어느 정도 크기 이후로는 자동 리사이드 된 상태로 로딩되는지 1:1 픽셀을 보여주지 못한다.

GoodReader는 다운만 안되면 1:1픽셀로 제대로 보여주는데 아이폰3GS에서는 대충 3MB이상의 파일을 로드하면 다운된다.

아이폰4에서는 정상작동을 확인했다.

GoodReader의 경우엔 너무 큰 텍스쳐를 할당할 수 없거나 디코딩된 이미지를 보관할 메모리가 없어서 크래시하는거 같다.

[이미지를 인코딩된 상태로(압축이 풀리지 않은 상태로) 메모리에 들고 있다가 화면에 렌더링 될 영역만큼만 화면 사이즈와 대응되는 텍스쳐에 실시간으로 디코딩해서 써주면 4000*4000정도 이미지는 출력할 수 있을거 같다.]

라고 전략을 세웠다.

일단 xcode에서 openGL프로젝트로 시작, 텍스쳐 생성하고 업데이트 해주고 이미지 로딩하는 코드는 싹 c++로 작성했다.

터치 입력 코드도 c++코드쪽으로 리다이렉션시켰다.

일단 OpenGL ES를 사용해서 텍스쳐 한장에다가 실시간으로 이미지를 카피해와서 출력하는 코드는 작성완료. 스크롤시켜가면서 볼 수 있게는 만들었다.

아직 테스트니까 리소스에다 이미지를 직접 넣었는데 아이튠즈에서 파일을 넣고 폰에서 골라서 읽을 수 있게 해야한다. 그런데 어떻게 하는지 전혀 모르겠다. 이게 3.0 SDK때는 없던 기능이기도 하고… 한참 찾아봐야할듯.

개선해야할 점

1.현재는 1:1픽셀로 보여주고 있으므로 축소기능을 넣어야한다.

2.아이튠즈에서 넣어주는 파일을 셀렉트할 수 있도록 해야한다.

3.현재는 tga포맷을 사용하므로 jpg파일 디코딩기능을 넣어야한다.


답글 남기기

댓글을 게시하려면 다음의 방법 중 하나를 사용하여 로그인 하세요:

WordPress.com 로고

WordPress.com의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

Facebook 사진

Facebook의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

%s에 연결하는 중