簡體   English   中英

從規范化的設備坐標到屏幕坐標的關系?

[英]relation from normalized device coordinate to screen coordinate?

我對ndc與屏幕坐標系之間的關系感到困惑。 我所做的是

  1. 選擇屏幕坐標(例如屏幕上的觸摸點)。

  2. 然后將屏幕坐標傳遞給gluUnproject。 我將深度變量(gluUnproject的第三個變量)設置為0.0f。

  3. 然后我將對象坐標乘以modelviewmatrix和projectionmatrix。

  4. 之后,我修剪了空間。 然后我將剪輯空間坐標除以W

  5. 最后,我將ndc坐標縮放為屏幕坐標。
  6. 所以結果等於除Z坐標外我首先選擇的坐標。 實際上Z的結果等於-1.0f

之后,我將gluUnproject的第三個變量更改為1.0f,我認為結果等於0.0f。 但是結果是1.0f。

所以這是一個問題,歸一化坐標系和屏幕坐標系之間是什么關系。 如何設置gluUnproject函數的depth變量?

歸一化坐標系和屏幕坐標系之間有什么關系?

歸一化的設備坐標在[-1,+ 1]范圍內表示,並且是從剪輯空間坐標除以它們的W分量獲得的。

它們通過視口參數和深度范圍參數在“窗口空間”坐標中轉換。


如何設置gluUnproject函數的depth變量?

如果要將“窗口空間”坐標轉換回“規范化”設備坐標,則需要在要轉換的點處獲得“窗口空間z”值。 因此,直接來自OpenGL常見問題解答

GLdouble z;
glReadPixels (x, y, 1, 1, GL_DEPTH_COMPONENT, GL_DOUBLE, &z);

請注意,OpenGL將非線性深度存儲在深度緩沖區中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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