안드로이드 개발 질문/답변
(글 수 45,052)
openGL을 이용해서 비트맵을 표시하려고 합니다.
에뮬레이터에서는 정상적으로 표시가 되었는데,
실제 스마트폰(디자이어, 갤럭시탭)에 올렸더니
디자이어에서는 비트맵의 크기가 가로, 세로 각각 반으로 줄어들어 표시가 됩니다..
이유가 무엇인지 알수가 없네요,,
비트맵의 크기는 2의 승수로 만들었습니다
(디자이어에서 512 x 256)
화면을 세로로 2등분하여 아랫부분에 리스트뷰를 표시하였고,
그 리스트뷰를 캡쳐하여
사이즈를 읽어와
그 사이즈보다 큰 사이즈 중 가장 작은 2의 승수의 크기로 변환하고
화면에 뿌려주었는데
실제 리스트뷰 영역의 1/4 정도의 크기로 줄어들었고,
이 줄어든 크기의 비트맵이 가로로 두개 나타나네요....
갤럭시탭에서는 아예 openGL렌더링 불러오는 순간에 에러나버리구....
에뮬에서는 정상적으로 동작합니다..
처음에는 2의 승수 크기가 아니라 그럴 것이라고 생각하고 처리를 해주었는데도 정상적으로 안나오네요..
OPENGL 다룰 줄 아시는 분들 정말 부탁부탁 드려요....ㅜㅜㅜㅜ
2011.06.28 10:52:26
GLSurfaceView.getHolder().setFormat(PixelFormat.RGBA_8888);
이 구문을 지우니 에뮬과 같게 정상동작 하네요..
근데 저 구문으로 뭘 하는 건가요?ㅠㅠ
PixelFormat의 모든 값을 다 테스트 해봤더니
디자이어 에서는 RGBA_4444, OPQUE, RGB_565 로 한 경우 정상동작, 혹은 아예 setFormat을 하지 않은경우 정상동작하고
나머지는 오류발생 혹은 이상한 동작을 하는데...
솔직히 저 setFormat 으로 뭘 하는지 이해가 잘 안가네요..
api를 봐도 각각의 포맷값에 대한 설명이 나와있지 않고....
혹시 아시나요?ㅠㅠ 코드는 아래 첨부햇습니다~
2011.06.28 13:20:04
RGBA_8888 - Red 8bit, Green 8bit, Blue 8bit, Alpha 8bit - 32bit를 사용해서 한 pixel 표현
RGBA_4444 - 위에게 4bit로 줄어듬 - 16bit/pixel
OPQUE - 저도잘
RGB_565 - Red 5bit, Green 6bit, Blue 5bit - 16bit/pixel - alpha값 없음
색상값을 어떤 식으로 사용하는지에 대한 정의입니다.
아마도 각각의 display가 다르기때문에 해당 format을 지원하지 못하면 나오지 않는 것으로 보이네요



