2013년 4월 15일 월요일

디바이스 좌표계를 OpenGL 좌표계로 변환


OpenGL의 좌표계는 화면에 중심에 0,0 으로 부터 좌측 -1.0 우측 +1.0
위로 +1.0 아래로 -1.0 이더라

마치 수학시간 좌표계

이게 지금까지 컴퓨터 그래픽 좌표계와 달라서 혼돈스럽다.


gwidth
gheight

가 설정되어 있다고 가정 하고 아래에 함수를 이용해서 x,y를 입력하면
OpenGL에서 사용하는 화면에 중앙을 기준으로 float -1.0 ~ +1.0까지의 x, y
좌표 체계로 변환 하는 함수이다.

  void convertDeviceXY2OpenglXY(int x, int y, float * ox, float  * oy)
  {
      int w = gwidth;
      int h = gheight;
      *ox = (float)((x - (float)w/2.0)*(float)(1.0/ (float)(w/2.0)));
      *oy = -(float)((y - (float)h/2.0)*(float)(1.0/ (float)(h/2.0)));
  }

를 이용 할수 있다.


https://github.com/sparrowapps/CohenSutherlandLineClipp

코헨서덜런드 라인클립핑 알고리즘을 mac os에서 OpenGL로 구현할때 
이함수를 이용 하였다.

댓글 없음: