그냥 SurfaceView 쓸 때는 픽셀단위로 계산해서 움직였는데
OpenGL은 제가 정해놓은 무한좌표계? 인가 그걸로 한다면서
1 -1 -0.5 뭐 이렇게만 되니
아직 적응이 안되서 그런지 무지 감잡기 어렵네요 ㅠㅠ


glOrtho 는 작업공간.. 즉 본인좌표계가 480 x 800 기준으로 레이아웃을 잡았다면
viewPort에서는 해당단말기의 좌표계.. 즉 갤럭시노트라면 1280 x 800으로 설정해주시면
알아서 viewPort에 맞게 설정을 해주더군요.. 모든 보이는것을요(아마도 카메라개념이 아닌가 싶습니다만)
뷰포트의 크기는 관계없이 직교좌표계로 정해놓은 크기대로 움직여집니다.
예를들어 -100, 100 -50, 50 으로 직교좌표계를 정하면 2d 좌표계는 화면 정중앙이 0 , 0 으로 맞춰지고 크기는 가로 200, 세로 100의
화면이 만들어집니다. 어떤 단말, 디바이스도 맞춰지죠. 스크린 사이즈가 아닌 선후님 자신이 원하는 크기를 넣으면 됩니다.
즉, 800, 480 으로 맞추고 싶으시다면 -400, 400, -240, 240 으로 화면 정중앙이 원점이 됩니다.
단, openGL의 좌표계는 좌상단이 기준으로 +y 축이 아래로 내려오는 일반적인 좌표계가 아닌 좌하단이 기준으로 윗쪽이 +y축이됩니다.
고로 디바이스의 터치 좌표와는 y축이 바뀌는점과 터치좌표의 경우 디바이스의 해상도를 계승받는다는 점을 가만하시고 작업해야 합니다.
개념상 뷰포트와 관련이 있는건 직교좌표계가 아닌 빌보드라고 봐야 할껍니다.
3D가 아닌 2d를 하실꺼라면 뷰포트는 신경 안쓰셔도 됩니다.

좌표 2D 좌표로 사용할 수 있습니다.
gl.glViewport(0, 0, 넓이,높이);
gl.glMatrixMode(GL11.GL_PROJECTION);
gl.glLoadIdentity();
gl.glOrthof(-0.0f, (float)넓이,(float)높이, -0.0f , -32768.0f, 32767.0f);
gl.glViewport(0,0,넓이,높이);
이렇게 해보세요.

음.... 모든 분들이 다 고수이시군요 ㅠㅠ
아 GL 이해하는게 어렵네요 ㅠㅠ
댓글을 보면서 감을 잡으려고 노력하고 있습니다. ㅠㅠ 흑 전 멍청한듯 ㅠㅠ
익숙해지면 편합니다.
전체 크기를 개발자 맘대로 잡고 그걸 늘렸다 줄였다 하기 편한 구조거든요.
현실 세계의 cm 나 m 를 기준으로 아이템 상자나 캐릭터 크기를 대충 예측하고 그대로 코딩해도 되요.
이렇게 하면 점프 높이나 가속도 등의 물리 공식을 적용할 때 좀 더 현실적인 값을 넣을 수 있게 됩니다.
무한좌표계에 겁먹지 마시고 GL 입장에서 원하는 세계를 맘껏 표현하시고
Perspective Matrix 모드 에서
glOrtho 혹은 glPerspective 함수로 보시고 싶은 부분의 영역(Volume)크기를 잡으시고
ModelView 모드에서 시점위치를 정하시면
정하신 시점에서 정한 영역만큼만 보이는걸 GL 이 알아서 viewport 에 담아줍니다.
이것은 GL 이 최종적으로 화면에 렌더링 하기 이전에 모든 좌표계를 정규화 하여 -1.0 ~ 1.0 으로 만들기 때문에 여기에 뷰포트 해상도만 곱해주면 제대로 viewport로 매핑이 됩니다.
glOrtho 범위를 다르게 주면 안되나요?
아마 지금은 glOrtho(-1, 1, -1, 1, -1, 1) 이런 식으로 쓰실거 같은데
ortho값을 스크린 사이즈로 하시면 픽셀단위로 움직일 수 있을 거 같습니다.
다만 viewport가 스크린 사이즈와 다를 경우에는 조금 생각을 해보셔야할 거 같은데,, 저도 다시 공부해야하는 처지라 정확히 생각이 안나네요-_-;;
어쨌든 현재 선후님께서 겪고 있는 문제는 glOrtho문제인 것 같네요.ㅎ