使用glFrustum,繪製在非規範化座標 - glFrustum
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glFrustum(-1, 1, -1, 1, 0.1, 1000.0);
glLoadMatrxi(GL_MODELVIEW);
glBegin(GL_QUADS); //A room's left wall
glVertex3f(-1.0, 1.0, 0.0);
glVertex3f(-1.0, 1.0, -0.4);
glVertex3f(-1.0, -1.0, -0.4);
glVertex3f(-1.0, -1.0, 0.0);
glEnd();
我的所有圖紙發生在1,1(注意了//一個房間的左邊牆上上面的代碼中),即
X軸: -1成爲左邊,1成爲以中心爲原點的右邊。
Y軸:1變成頂部,-1變成右邊,原點位於中心
是否glFrustum會自動將我的座標更改爲[-1,1]?
如:
通常情況下,我會通過指定屏幕座標如下繪製一個立方體ofBox(512,384,0,10)
給了我一個盒子在屏幕中心[窗口寬度:1024,窗口高度:768]
什麼如果我想繼續繪製,因爲我通常在像素座標中繪製,並且不希望通過嘗試將像素座標繪製轉換爲標準化座標,即使使用glFrustum
,也不想使事情變得複雜?
在透視分割之後,立方體的x和y維映射到[-1,1]。但是,深度座標範圍是[0,1]。 – radical7 2013-05-10 22:03:53
@ radical7:事實確實如此,然而OP正在與視角空間截錐體的概念鬥爭。我不想過分強調NDC方面的工作。 – datenwolf 2013-05-11 00:14:17
@datenwolf:在時間軸中觀看和建模轉換之後,不是「glFrustum」是投影轉換的一個步驟嗎?對象空間座標轉換爲眼睛空間 - >剪輯空間 - > NDC空間。那麼爲什麼你提到的View/Eye Space中的這些問題呢? – user1240679 2013-05-13 12:58:17