我知道OpenGL中的相機被定義爲在負Z方向上看。因此,在一個簡單的例子,我想象的要呈現我的頂點,他們必須定義類似以下內容:OpenGL:任何頂點Z座標都必須爲負數嗎?
rawverts = {
0.0f, 0.0f, -1.0f,
0.0f, 0.5f, -1.0f,
0.5f, 0.0f, -1.0f,
};
但是,絕對沒有導遊會告訴我答案。無論我看到什麼,「Hello三角形」示例都是在z座標保持爲0的情況下製作的,每當定義更復雜的網格時,甚至不顯示座標。我仍然不知道他們的座標可能被繪製到屏幕上。舉個例子,GLM ::觀點:
glm::mat4 projectionMatrix = glm::perspective(
FoV, // The horizontal Field of View, in degrees : the amount of "zoom". Think "camera lens". Usually between 90° (extra wide) and 30° (quite zoomed in)
4.0f/3.0f, // Aspect Ratio. Depends on the size of your window. Notice that 4/3 == 800/600 == 1280/960, sounds familiar ?
0.1f, // Near clipping plane. Keep as big as possible, or you'll get precision issues.
100.0f // Far clipping plane. Keep as little as possible.
);
但是,如何才能裁剪平面與任何積極值定義?相機朝向-Z方向!此外,如果我在-1和-4等創建近/遠裁剪平面,現在是否使任何大於-1或小於-4的Z座標無效?或者,原始的z座標只能在0和-1之間有效(同樣,z座標絕對不能是正數?)..?
但讓我們假設實際發生的事情是,OpenGL(或glm)採用剪切平面值並暗中否定它們。所以,我的-1到-4變成1到4.現在這是否會使任何小於1且超過4的Z座標無效,因此0.0f, 0.0f, -1.0f
將不會被繪製在屏幕上?
在這個階段,我會把答案視爲一本書的指針或一些有關此問題的資料。
近和遠總是被定義爲距相機的距離,而不是空間中的某些點。否則,在移動相機時剪切平面會遍佈整個地方。恰恰相反,相機在默認情況下沿着-z查看。 – weltensturm