簡體   English   中英

獲取在特定z坐標處可見的平面范圍

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM