2012-04-25 18 views
0

我正在閱讀來自WWDC2010的示例代碼GLVideoFrame。在此示例中,它具有這樣的代碼如下:沒有glFrustum和glOrtho設置的投影的視圖體積是多少?

static const GLfloat squareVertices[] = { 
    -0.5f, -0.33f, 
    0.5f, -0.33f, 
    -0.5f, 0.33f, 
    0.5f, 0.33f, 
}; 
... 
glMatrixMode(GL_PROJECTION); 
glLoadIdentity(); 
glMatrixMode(GL_MODELVIEW); 
glLoadIdentity(); 
glTranslatef(0.0f, (GLfloat)(sinf(transY)/2.0f), 0.0f); 
transY += 0.075f; 

... 
glVertexPointer(2, GL_FLOAT, 0, squareVertices); 

注意,此代碼並不要求openGL的投影像的設置或glFrustum任何glOrtho功能。

通過只調用gLoadIdentity(),什麼是「默認」視圖體積?

它將是一個透視項目或正投影?

編輯: 至更具體地, 是視體「在所有三個軸上範圍從-1到1」的立方體?

+0

有人可以給我一個爲什麼這個問題被投票-1的原因嗎?太愚蠢的問題?太簡單?我實際上搜索了一遍,幾天後閱讀了「紅皮書」,但沒有發現任何線索。我真的很感激有人可以指點我,我應該在哪裏找到答案? – 2012-04-25 01:18:49

+0

Downvote是那個人的良心:)'gLoadIdentity()'爲投影模式設置單位矩陣,與模型視圖矩陣一樣。 'glFrustum'和'glOrtho'從不同的輸入參數設置這些矩陣。您可以在運行時通過XCode捕捉OpenGL幀(它可在iPad 2/New和iPhone 4S設備上運行)來查看矩陣。 – brigadir 2012-04-25 06:14:08

+0

「通過XCode捕獲OpenGL框架時,您可能會在運行時查看矩陣」,這與我的問題沒有直接關係,但聽起來很有趣。你能給我一個關於如何的鏈接嗎? – 2012-04-25 13:05:05

回答

0

OpenGL假定在ModelView和Projection轉換之後,所有可見元素都在剪輯空間(或NDC空間)中;它使用立方體[-1;+1]^3。矩陣的內容完全是你的責任。由於您加載了標識矩陣,因此根本沒有投影。

+0

這就是我正在尋找的解釋。謝謝! – 2012-04-25 13:01:34