2차원 직사각형 그리기
다음과 같은 코드를 통해 그리기(Drawing)이 이루어진다
2-2 는 사각형을 칠할 색상이다
2-3dms 사각형을 그린다.
glRectf(x1, y1, x2, y2);
(x1, y1)은 좌측 하단 좌표, (x2, y2)는 우측 상단 좌표이다
핵심은 z = 0 인 평면에 사각형을 그린다
다음 코드는 화면에 그리는 코드이다
3-1 은 화면 사이즈에 맞게 끔 늘려주는 함수이다
뷰 포트라고 하고 처음 두 좌표가 시작점이고 마지막 두 점이 끝 점이다
보통 화면에 다 이미지를 채우고 싶으면 위와 같이 작성한다
3-2 는 Projection Matrix를 사용하겠다는 의미이다
Projection 종류는 두 가지가 있다
Orthographic Projection 과 Perspective Projection 이 있다
여기서는 Orthographic Projection에 대해 자세히 다룬다
glOrtho() 함수가 핵심인데 6개의 인자는 다음과 같다
left, right, bottom, top, near, far 이다
left, right - x 축 최소 최대
bottom, top - y 축 최소 최대
near, far - z 축 최소 최대
z 축의 경우는 값이 작아질수록 관측자로부터 물어진다
near, far 의 값은 Z = 0을 사이에 두고 값이 있으면 된다
즉 -1 ~ 1 이어도 상관 없고 -5~5 이어도 상관 없다
만약 near, far 값이 3 ~ 5 이면 클리핑 영역이
직사각형 앞 쪽에 있으므로 빨간 사각형이 화면에 보이지 않는다
마찬가지로 -7 ~ -9로 두면 클리핑 직육면체가 사각형 뒤 쪽에 있으므로
보이지 않는다
값을 넣어서 테스트 해보기 바란다
glOrtho()의 인자 값을 바꾸어서 테스트 해서 감을 잡아봐라 많은 도움이 될 것이다
해상도 600 x 600 화면에 오른쪽 위의 1/4을 채운 빨간 사각형을 그리고 싶으면
다음과 같은 값을 주면 된다
glViewport(0, 0, 600, 600);
glRectf(0.0f, 0.0f, 10.0f, 10.0f);
glOrtho(-10.0f, 10.0f, -10.0f, 10.0f, 1.0f, -1.0f);
다음과 같은 코드도 가능하다
glViewport(0, 0, 600, 600);
glRectf(0.0f, 0.0f, 2.0f, 2.0f);
glOrtho(-2.0f, 2.0f, -2.0f, 2.0f, 0.001f, -0.005f);
기본은 끝났다 다음은 기본 도형들을 그려보자
프로그래밍 연습
1. 사각형을 다음과 같은 비율과 위치로 나오게 해보라
가로 5 세로 2 위치 왼쪽 아래 꼭지점이 화면 가운데 나오게 하기
결과는 다음과 같을 것이다
2. near, far 가 -1 ~ 1 과 1 ~ -1 이 무슨 차이인지 조사해 보라
glOrtho(-10.0f, 10.0f, -10.0f, 10.0f, 1.0f, -1.0f);
glOrtho(-10.0f, 10.0f, -10.0f, 10.0f, -1.0f, 1.0f);
위의 두 줄의 코드는 무슨 차이인가?
다음은 전체 코드이다