2014-06-05 165 views
0

我目前正在研究我的OpenGL場景(基本上由一個skycube和一個小的白色立方體組成)的反射。反射應該發生在xz平面上(y = 0)。我已經設法將它變成FBO,但目前在視圖或預測矩陣中存在一些問題。反射要麼從錯誤的視角位置看到,要麼只是反轉屏幕上顯示的內容。OpenGL:反射矩陣問題

然而,我需要的是一種真實的鏡像反射。在大多數教程中,他們說你應該縮放(1,-1,1)視圖矩陣或使用gl_scalef(1,-1,1),但這些都不適用於我 - 效果如上所述。

下面是我目前得到最好的兩張截圖,使用下面的代碼立即渲染(被鏡像)場景前:

view = m_camera*mat4::scale(1,-1,1); 
projection = m_cameraPerspective; 

相應的原始場景: ​​

反映的場景: Reflected scene

請注意,這實際上是如何反映的場景(例如,頂部的雲是可見的而不是水從底部 - 與原始渲染一樣),但是位置在某種程度上不正確,例如,白色立方體不在屏幕上的相同位置,例如與窗口邊界的距離不同。

請忽略錯誤的顏色。這是因爲我快速入侵了一個將像素值寫入tga文件(從渲染紋理中)的函數。當實際啓用渲染鏡像平面上的紋理(這兩個渲染步驟當前都禁用)時,顏色是正確的。

我的反射矩陣有什麼問題?

+2

很難看到截圖是否有誤。但它可能是正確的。相機可能看起來有點向下。所以多維數據集可以改變它到窗口邊界的距離。代碼看起來不錯,所以結果應該是正確的。 –

+0

是的,我只是設法在鏡面上正確地打印它,並看到鏡像按預期工作。一旦關閉的最短等待時間結束,我會盡快結束這一切。 – pedjjj

回答

1

正如評論所述,這實際上是正確的。