首先,你設置了3D投影的投影和模型觀察矩陣:
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluPerspective(fov, ratio, near_clip, far_clip);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
gluLookAt(eyex, eyey, eyez, lookatx, lookaty, lookatz, upx, upy, upz);
gluLookAt需要3個載體,該相機的「眼睛」的位置,看看點和「向上矢量」。如果您調用gluLookAt(0.0,0.0,-10.0,0,0,0,0,1,0),則表示攝像機座標爲0,0,-10,並沿着z軸觀察原點0,0,0並且「向上」沿着正Y軸。如果你那麼做一個簡單的繪製調用OpenGL的一個四,它應該在你的渲染顯示:
glColor3f(1.0f,1.0f,1.0f); //set white color (or any contrast to your background)
glBegin(GL_QUADS);
glVertex3f(-1.0f, 1.0f, 0.0f);
glVertex3f(1.0f, 1.0f, 0.0f);
glVertex3f(1.0f,-1.0f, 0.0f);
glVertex3f(-1.0f,-1.0f, 0.0f);
glEnd();
你要麼在順時針或逆時針順序繪製,而不是在那些的組合。您可以使用glEnable/Disable(GL_CULL_FACE)和glCullFace控制剔除。
窗口大小爲800×600,我想框是整個窗口,以便
當您正在使用的2D投影(正投影)工作,你可以輕鬆地設置你的座標系統相匹配的尺寸大小你的窗口/視口。這在3D投影中不適用,因爲邊界現在是3D viewing frustrum,或者是從近剪輯到遠剪輯平面的3D音量。然後通過模型 - 視圖 - 投影矩陣將座標投影到2D表面上。您可以輕鬆輸入寬度爲800和高度爲600的四個座標,但要查看它,您需要遠離相機以捕捉整個四邊形。從評論
引用:
gluPerspective(45.0f,(雙)W /(雙)H,1.0F,100.0f)應該設定鄰近= 1和遠= 100的透視圖。但是因爲openGL是右手的,所以正面的z不在屏幕上,所以接近的距離應該是100,最遠的距離是1。它沒有意義..
應答(見上文3D觀看截鏈路):
甲視錐是場景中的位於相對於視口的照相機的3D體積。體積的形狀影響模型如何從攝像機空間投影到屏幕上
因爲這是除去你的「大家」。 http://meta.stackexchange.com/questions/2950/should-hi-thanks-taglines-and-salutations-be-removed-from-posts/93989#93989請注意,您可以在您自己的問題 – Hasturkun
你基本上發表評論詢問變換如何工作以及透視投影如何工作。這對於答案來說太複雜了,但[我的教程涵蓋了它](http://www.arcsynthesis.org/gltut/)(以及更多)。請注意,雖然它適用於初學者,但它使用着色器並避免固定功能。 –
謝謝:) @NicolBolas我讀到的轉換和觀點對谷歌一點點,但它似乎很愚蠢,或我必須說不是真的有用。渲染管道有一些階段,等等,將其轉換爲-1和1等等。我沒有發現任何重要的,因爲除了-1和1之外什麼都沒有提到。這讓我發瘋了......反正我也會看看你的嘖嘖,我希望我找到一些東西。非常感謝 – Dimitris