레이블이 OpenGL인 게시물을 표시합니다. 모든 게시물 표시
레이블이 OpenGL인 게시물을 표시합니다. 모든 게시물 표시

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로 구현할때 
이함수를 이용 하였다.