2012-12-28 2 views
1

glOrthof의 인터넷에서 일부 게시물과 설명을 보았습니다. 나는 유튜브에 스탠포드는 ​​OpenGL ES의 교훈을보고하고 다음과 같은 코드를 내놓았다 :OpenGL ES의 glOrthof()에 대한 설명

glMatrixMode(GL_PROJECTION); 
glLoadIdentity(); 
glOrthof(0, backingWidth, 0, backingHeight, -1, 1); 

이 코드는 화면의 왼쪽 아래에 1 x 1 픽셀에 의해 사진 1 x 1 픽셀을 그립니다. 왜 이렇게할까요? 나는이 코드가 (0,0)에서 그림을 가져 와서 화면 전체를 가로 질러 늘릴 것이라고 생각했는데, 그 이유는 평면이 0에서부터 화면의 너비와 0에서부터 화면의 높이까지로 지정 되었기 때문이다. 누군가가 가능한 한 간단하게 왜 왼쪽 하단에 1px로 그려야하는지 설명하십시오. 전체 소스 코드는 "openGLtransforms.zip"로 표시 스탠포드 웹 사이트에서 찾을 수 있습니다 :

Source Code Website

감사합니다 (이 코드가 나타납니다 파일 ES1Renderer.m입니다)!

답변

0

아니요, glortho는 화면 안의 내용을 화면에 "맵핑"하여 화면 중심을 해당 평면의 중심으로 만듭니다. 그래서 당신이 glortho 콜을 받으면 (0, 0, 0)에 오브젝트를 놓으면, 오브젝트는 장면의 구석에 놓이게됩니다. 아마도 비행기가 backingWidth/2에서 + backingWidth/2 그리고 backingHeight/2에서 backingHeight/2로 이동하는 데 더 유용 할 것입니다. 당신의 물건은 얼마나 큽니까? 귀하의 zFar 비행기가 zNear에 너무 가깝습니다. 물체가 그 공간에 잘 맞습니까?

+0

이러한 예는 2D입니다. –

+0

요점은 여전히 ​​유효합니다. "이 코드가 (0,0)에서 그림을 가져 와서 전체 화면에서 늘릴 것"이라고 맞습니까? 그것은 그 비행기 안에있는 것을 "맵핑"하여 화면에 맞 춥니 다. 이러한 평면을 배치해야만 그 평면 사이에 렌더링되는 것이 화면 공간으로 들어가게됩니다. GL_VIEWPORT 설정은 어떻게되어 있습니까? – Trax

+0

나는 아직도 그것을 얻지 못한다. (예 : glOrthof (-2, -2, 2, -1, 1); – foobar5512