[英]Get the bounds of the plane visible at a specific z coordinate
使用OpenTK,我創建了一個垂直視野為90°的窗口(800x600)。 我想用適合整個屏幕的背景圖像制作2D游戲。 我想要的是在一個z坐標可變的平面處作為RectangleF。
目前,我的代碼是:
var y = (float)(Math.Tan(Math.PI / 4) * z);
return new RectangleF(aspectRatio * -y, -y, 2 * aspectRatio * y, 2 * y);
由此計算出的矩形總是有點小,隨着z的增加,這種影響似乎會減小。 希望有人會發現我的錯誤。
我想用適合整個屏幕的背景圖像制作2D游戲。
然后,不必擔心透視計算。 只需切換到正投影即可繪制背景,從而禁用深度寫入。 然后切換到其他的透視投影。
OpenGL不是場景圖,而是全狀態繪圖API。 利用這個事實。
要使用OpenGL制作2D游戲,您應該使用正投影,如本教程所示。
這樣就很容易用所需的圖像填充屏幕,因為您無需處理透視圖。
但是,如果您要堅持按照自己的方式做事,則必須使用當前的模型視圖矩陣對屏幕的4個角進行gluProject ,然后在3D空間中用這些角繪制一個四邊形。 即使采用這種方法,有時由於浮點錯誤,四邊形也可能無法覆蓋整個屏幕。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.