Viewport란 무엇일까요?
좀 추상적인 개념이라 사전 정의를 설명해도 이해가 잘 안갈것 같아서
대강 감만 잡아보자면 일종의 서브 윈도우라고 할 수 있습니다.
우리에게 익숙한 윈도우에서는 그 안쪽에서 어떤 장난을 해도 결코 그 내용물이 바깥으로 나가지 않습니다.
마찬가지로 뷰포트 내에서는 어떤 것을 그리고 움직이고 뒤집고 비틀어도 뷰포트 밖으로 나갈 수 없어야 합니다.
이런 느낌이겠죠...?
생각해보면 일단 우리가 대면하고 있는 모니터 자체가 가장 큰 뷰포트라고 할 수 있겠습니다.
이를 이용하면 거울의 반사 표현도 가능하고, 풀스크린 게임을 하면서도 놓쳤던 예능프로그램을 화면에 띄우는 기능 같은 것도 만들 수 있습니다.
공부좀 하셨던 분들은 아마 제목을 봤을 때부터 한 단어가 떠올랐을 겁니다. 바로 클리핑입니다.
사실 클리핑이란 용어 자체가 '표시 화면에서 벗어난 부분과 벗어나지 않은 부분으로 나누어서 후자만을 남기는 조작'으로 정의되어 있지요 -_-..
(출처: http://terms.naver.com/entry.nhn?docId=614360&mobile&categoryId=2911)
이 잘라내기 연산에 대해 더 궁금하신 분은 'http://en.wikipedia.org/wiki/Clipping_(computer_graphics)'을 참고하시면 좋습니다.
(한글 위키는 아직 글이 없군요)
그렇다면 이것을 어떻게 3D에서 구현해야 할까요?
사실 jPCT 자체에서 클리핑 기능을 지원하긴 하지만, 그 클리핑이란 것이 위의 사진처럼 우리맘대로 화면 일부를 클리핑하는 기능이 아니라 오로지 스크린 전체만 클리핑합니다.
'Programming > Graphics' 카테고리의 다른 글
[OpenGL] 수직동기화 끄기 (0) | 2014.02.01 |
---|---|
2D 물체 겹침 표현하기 (0) | 2012.08.07 |
jPCT로 2D 렌더링을 구현해보자 - line, fillRect (0) | 2012.07.28 |
jPCT-AE(1) - main activity부터! (2) | 2012.06.30 |
Java를 위한 3D 엔진, jPCT (2) | 2012.06.28 |