2012-09-20 2 views
1

OpenGL을 처음 접했고 glOrtho의 개념을 이해하는 데 어려움을 겪고 있습니다. 예를 들어 내가 가지고트러블 이해 glOrtho

void display(void) 
{ 
/* clear all pixels */ 
glClear (GL_COLOR_BUFFER_BIT); 
/* draw black polygon (rectangle) with corners at * (0.25, 0.25, 0.0) and (0.75, 0.75, 0.0) 
*/ 
glColor3f (0.0, 0.0, 0.0); 
glBegin(GL_POLYGON); 
    glVertex3f (-.25,0,0.0); 
    glVertex3f (.25, 0, 0.0); 
    glVertex3f (.25, .25, 0.0); 
    glVertex3f (-.25, .25, 0.0); 
glEnd(); 
/* don’t wait! 
* start processing buffered OpenGL routines */ 
glFlush(); } 

이 사각형을 생성 한 다음이 사각형 "변경해"

void init (void) 
/* this function sets the initial state */ { 
/* select clearing (background) color to white */ 
glClearColor (1.0, 1.0, 1.0, 0.0); 
/* initialize viewing values */ 
glMatrixMode(GL_PROJECTION); 
glLoadIdentity(); 
glOrtho(0, 1, 1, 0.0, -1.0,1.0); 
} 

를이 꽤 많이 정사각형하게하고 왼쪽 상단 모서리에 최대에 넣습니다. 나는 그것이 어떻게하는지 잘 모르겠다. 포인트가 사각형으로 변형 되었습니까?

편집 : 알아 냈습니다. 이것은 매우 도움이되었습니다.

답변

5

glOrthohttp://elvenware.sourceforge.net/OpenGLNotes.html#Ortho가 직교 투영 볼륨을 정의하기 위해 사용된다 :

시그니처 glOrtho(GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble near, GLdouble far); 왼쪽이다 오른쪽 지정 평면 바닥 패스 X 선 좌표 및 상부 지정 근거리 및 원거리 클리핑 평면 (Y)을 좌표 및 z 좌표 클리핑면까지의 거리를 지정하십시오. 함께이 좌표들은 상자 형태의보기 볼륨을 제공합니다.

당신의 투영 음량을 정의하는 방법은 3d (0, 0, 0) 점을 중심으로하지 않고 (.5, -5, 0) 다음과 같이 glOrtho를 정의해야합니다 : glOrtho(-.5, .5, -.5, .5, -1.0, 1.0); 다각형은 점 3d (0, 0, 0)을 중심으로 중심입니다. (투영 볼륨의 중심과 일치하도록 다각형 좌표를 변경할 수도 있습니다).

2

glOrtho 호출은 왼쪽 상단이 (0,0)이고 오른쪽 하단이 (1,1)이고 유효 Z 범위가 (-1,1)이되도록 뷰포트를 설정합니다.

이제 왼쪽 상단이 (-0.25, -0.25)에서 (0.25,0.25)까지의 사각형을 그렸습니다.

glVertex 호출이 바로 위에있는 설명과 일치하지 않습니다. 정점을 명시된 값으로 변경하거나 glOrtho 전화 번호를 변경하십시오.

glOrtho(-0.5, 0.5, 0.5, -0.5, -1.0, 1.0);