2014-01-12 193 views
0

我有問題。 是否有可能擁有兩個頂點着色器。人們將在2D中查看頂點,在3D中查看頂點。 目前我的程序有2D視圖。 2d和3d頂點之間唯一的區別是,3dc中的vec2(x,y)將會是vec3(x,y,z)。所以我想發送到GPU vec3並設置gl_Position.z = 0;Opengl在2D或3D中顯示頂點

我最大的問題是我選glm的幻數:lookat和glm :: perspective。如果我看到它的意思就是說它有效。所以當我有2D和3D視圖時,一切都看起來很糟糕。 我可以移動相機,這樣做3d和相機的位置改變只會不會工作。

回答

1

不,這是不可能的。但是,您可以多次渲染相同的幾何圖形,但應用了不同的glViewport和投影矩陣。這是呈現3D編輯器的經典「頂部,正面,側面,透視」視圖的規範方式。

我最大的問題是我選glm的幻數:lookat和glm :: perspective。

那麼,我會解決這個問題,而不是神奇的數字使用實際的數學來創造所需的效果。

+0

嗯,但我會有問題。因爲如果添加hight(z)。即使我在放大地圖前設置視圖,我會看到這不是2D。 – Luffy

+0

@Luffy:你可以隨時切換到正射投影,如果你需要一個。您可能將您的投影矩陣設置放置在重塑處理程序中。我建議你將調用glViewport和投影設置移動到顯示處理程序。你可以多次打電話給他們。使用glViewport + glScissor將窗口變成多個窗格。 – datenwolf

+0

我沒有重塑處理程序,但我會嘗試閱讀關於此。我正在以簡單的方式做這件事,我計算x,y繪製它們。我只使用本教程中的內容http://www.opengl-tutorial.org/beginners-tutorials/tutorial-6-keyboard-and-mouse/ – Luffy