Viewport 구현하기

Programming/Graphics 2012. 8. 20. 20:46 by 빠재


Viewport란 무엇일까요?



좀 추상적인 개념이라 사전 정의를 설명해도 이해가 잘 안갈것 같아서 



대강 감만 잡아보자면 일종의 서브 윈도우라고 할 수 있습니다.



우리에게 익숙한 윈도우에서는 그 안쪽에서 어떤 장난을 해도 결코 그 내용물이 바깥으로 나가지 않습니다.



마찬가지로 뷰포트 내에서는 어떤 것을 그리고 움직이고 뒤집고 비틀어도 뷰포트 밖으로 나갈 수 없어야 합니다.



이런 느낌이겠죠...?







생각해보면 일단 우리가 대면하고 있는 모니터 자체가 가장 큰 뷰포트라고 할 수 있겠습니다.



이를 이용하면 거울의 반사 표현도 가능하고, 풀스크린 게임을 하면서도 놓쳤던 예능프로그램을 화면에 띄우는 기능 같은 것도 만들 수 있습니다.







공부좀 하셨던 분들은 아마 제목을 봤을 때부터 한 단어가 떠올랐을 겁니다. 바로 클리핑입니다.



사실 클리핑이란 용어 자체가 '표시 화면에서 벗어난 부분과 벗어나지 않은 부분으로 나누어서 후자만을 남기는 조작'으로 정의되어 있지요 -_-..

(출처: http://terms.naver.com/entry.nhn?docId=614360&mobile&categoryId=2911



이 잘라내기 연산에 대해 더 궁금하신 분은 'http://en.wikipedia.org/wiki/Clipping_(computer_graphics)'을 참고하시면 좋습니다.


(한글 위키는 아직 글이 없군요)







그렇다면 이것을 어떻게 3D에서 구현해야 할까요?



사실 jPCT 자체에서 클리핑 기능을 지원하긴 하지만, 그 클리핑이란 것이 위의 사진처럼 우리맘대로 화면 일부를 클리핑하는 기능이 아니라 오로지 스크린 전체만 클리핑합니다.

Nav