기존에 canvas로 게임을 만들다 바야바님의 권고에 따라 이번에 처음으로 opengl을 사용하여 만들어 보았습니다.
시작할 때는 별탈없이 잘 됬습니다.
테스트폰으로 모토쿼티, 갤럭시탭, 갤2 lte 이렇게 세대를 사용했습니다.
첨에 갤2 lte 만 가지고 테스트를 해서 잘 되는구나하고 다음다음으로 진행해 나갔죠.
어느 순간에 모토쿼티에서 테스트 해보자 하고 돌렸습니다.
모든 이미지가 흰색으로 나오더군요.
전에 2의승수 얘길 들은 지라 별개의 이미지를 통이미지로 바꾸고 좌표가 저장된 텍스트파일을 파싱을 해서 보여주는 방식으로 하니 잘 나왔습니다.
근데 480*800 에 맞추어 진행한지라 갤럭시탭에선 다른 이미지에서 불러올려고 갤탭 해상도에 맞게 다시 통이미지를 만들고 600*1024일 경우에 그 이미지를 불러오도록 했습니다.
갤탭은 항상 저한테 있는 단말기가 아니라서 예뮬에서 돌렸습니다. 잘 나옵니다.
한참 진행을 하다가 갤탭으로 테스트를 하게 됬는데 또 흰색으로 나옵니다. 헐~
480*800 이미지를 불러와서 그냥 화면 정 가운데 뿌려주는 식으로 하니 잘 되었습니다. 통 이미지가 커도 문제가 되는 모양입니다.
이제 마무리 단계에서 광고를 붙이니 잘 나옵니다. 이제 마켓에 업로드 했죠.
그리고 잘 돌아가나 다운받아서 해봤습니다. 잘 도라갑니다.
심심해서 광고한번 클릭해보았습니다. 근데~ 모토쿼티에서 광고보고 백눌러서 게임으로 돌아오면 또 흰색으로 돌아옵니다. 돌아버리는줄 알았죠. 갤투에선 잘 나옵니다.
게시중지 시키고 머리싸매고 헤매기 시작했죠 검색해도 안나오고~
온갖삽질 끝에 onSurfaceChanged 이미지를 다시 로딩하고 뭐하고 하니 모토쿼티에서 일단 잘 나왔습니다.
자 이게 갤투에서 돌렸습니다. 근데~
잘 나왔었는데 이번엔 아무것도 안나옵니다. 아 진짜 돌겠네~ 실력도 안되는게 괜한 짓을 했나 싶은생각이 머리끝까지 올라왔죠.
그래도 시작은 했는데 어쩌나 싶어 또 머리싸매고 헤매기 시작합니다.
소스를 원위치로 돌려놓고 도대체 뭐가 바꼈는지 확인해 보았습니다.
아무리 찾아봐도 없습니다. 혹시 아까 삽질할때 draw하기전 gl.glLoadIdentity();를 빼놔서 그런가 하고 다시 넣으니 됩니다.
gl.glLoadIdentity() 이게 있고 없고가 단말기마다 다 다른가 봅니다.
일단 지금 상황에선 잘 돌아가는 듯 싶어 마켓에 올렸습니다. 또 어디서 문제가 생길지 모르지만..
또 어느 단말에서 안돌아갈지 모르겠네요...
이상 허접게임만들기 삽질기였습니다.
근데 내가 이걸 왜 썻지?? ㅋ
OpenGL이 단말기에 따라 이미지가 2의 제곱이 아닐때 이미지가 나오는 것도 있고 안나오는 것도 있고
위 말씀하신것 처럼 화면 전환 후 좌표계를 초기화 시켜주는 것, 텍스쳐 로딩할때 쓰레드가 돌고 있으면 이미지가 안들어가는 등등...
좀 신경쓸것이 많은것 같습니다.. ndk로 샘플을 만들고 있는데 ndk는 또 다르내요......헝헣어허어허
저도 초기에 모토쿼티 문제가 많았습니다. 쿼티열때 화면전환되서 activity가 다시 로딩되서 발생하는 문제등. ㅋ
확실히 opengl이 신경쓸게 많아서 영어도 좀 해야 검색이라도 해서 찾을 것인데 울나라 커뮤니티사이트에 질문올려도 답변이 잘 안올라옵니다 ㅠㅠ
canvas는 이미지나오는거 확실히 보장은 되지만 scale rotate 같은 거 할라면 Bitmap을 모두 크기 회전별로 각각 만들어 뿌려야하는 번거로움이 있더군요. 그렇다고 Bitmap로 안하고 Drawale로 하면 프레임수 확 떨어집니다. 초기에 이것도 모르고 게임에 배경이미지를 못넣고 paint로 단색을 넣었습니다. ㅠ 근데 opengl은 텍스트처리할때 바로 안되고 BItmap으로 만들어서 처리해야하는 치명적인 단점이 있더군요. 이거 엄청번거롭더군요. 특히 숫자처리할때..
버전은 어떻게 확인하는지 모르겠네요.
저도 T스토어 검증할때도 맨날 문제가 되는게 바로 모토쿼티에요.
노이로제에 걸려서 이제는 항상 검증할때 모토쿼티만 빼고 신청합니다.