2011-02-27 59 views
1

我在學習OpenGL,很難找到明確的座標系定義。OpenGL Vertex Value Range(GLFloat)

如何判斷在視口中顯示的數值範圍值?

+0

唉,我採用Gl 3.0,所以一些矩陣東西不會幫助,直到我去設置它自己:)從我的理解呢。感謝您的快速回答。 – 2011-02-27 21:53:34

+1

然後,我給你的範圍(-1到+1)適用於頂點着色器的輸出(即它分配的'gl_Vertex'變量)。 – 2011-02-27 22:14:16

+0

@Ben:啊謝謝,突然間答案似乎很明顯,因爲着色器輸出大聲笑 – 2011-02-27 22:52:15

回答

4

-1.0 to +1.0(在應用了所有轉換之後)。

這個信息被埋在glViewport documentation有點迂迴的方式。我選擇了MSDN版本的文檔,因爲更多其他在線源在轉換爲HTML期間會破壞公式(這是正確的公式,但無法識別)。

通過應用適當的縮放比例和平移因子,您可以獲得所需的任何預轉換座標系。在GL 1.x - 2.x中可以很容易地使用這個功能。在OpenGL 3.x中,您使用頂點着色器來進行轉換。

1

可見頂點值的範圍由兩個變換矩陣控制,ModelViewProjection模型視圖矩陣構造有glRotateglTranslate類型的操作和投影矩陣glOrthoglPerspectivegluLookAt創建。

甲頂點V被轉換成視區座標與下面變換和不可見部分中的目標空間([-1,1]所有軸)被剔除。

V'' = Projection * ModelView * V 

然而glOrtho一個glPerspective得到能見度範圍如在模型視圖空間給定的輸入。這些範圍與變換的頂點媲美:

V' = ModelView * V 

如果您使用的是單位矩陣作爲ModelView,你可以給glOrthoglPerspective那些比較你的頂點值。