2012-12-28 79 views
1

我在glOrthof的互聯網上看到過一些以前的帖子和解釋,但我只是不明白。我在YouTube上觀看斯坦福OpenGL ES的教訓,下面的代碼上來:glOrthof()在OpenGL ES中的簡單解釋

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

這段代碼在屏幕的左下角繪製圖片1x1像素。爲什麼它會這樣做?我認爲這段代碼會從(0,0)中獲取圖片並在整個屏幕上展開,因爲它將平面指定爲從0到屏幕寬度,0到屏幕高度。有人可以請儘可能簡單地解釋爲什麼它在左下角將其繪製爲1px×1px。完整的源代碼可以標記爲「openGLtransforms.zip」斯坦福大學的網站上找到:

Source Code Website

(其中顯示該代碼的文件是ES1Renderer.m)

謝謝!

回答

0

不,glotel會將其內部的內容「映射」到屏幕中,使屏幕的中心成爲這些平面的中心。因此,如果您在(0,0,0)處放置一個對象,並給予glouro調用,則該對象將被放置在場景的角落。可能使飛機從-backingWidth/2到+ backingWidth/2和-backingHeight/2到backingHeight/2更有用。你的目標有多大?你的zFar飛機太接近zNear,你的物體是否適合這個空間?

+0

這些示例是2D。 –

+0

我的觀點仍然有效,「我認爲這段代碼會從(0,0)中拍攝照片並將其延伸到整個屏幕上」是不正確的。它「映射」它在飛機內部的位置並使其適合屏幕。您需要放置這些飛機,以便您在它們之間呈現的內容進入屏幕空間。你的GL_VIEWPORT設置如何? – Trax

+0

我還是不明白:(例如:glOrthof(-2,2,-2,2,-1,1); – foobar5512