2011-11-06 64 views
3

嗯,我有一個3D場景,目前只有一個帶有紋理的四邊形(繪畫)。在繪畫和「相機」之間,我有另外一個四方,我想表現得像一個光學鏡頭:扭曲「下方」的圖片 scene i want to archive 如何用着色器和一些像素緩衝區來實現它?鏡頭着色器/圖像失真

回答

3

這是我前一段時間發現的一個例子,它與你想要的非常類似。 http://www.paulsprojects.net/opengl/refract/refract.html

您可能需要稍微修改代碼才能達到所需的反轉效果,但這會讓您開始正確的軌道。

編輯: 順便說一句,你不會需要第二個圖像(倒小矩形)。只需使用單個背景圖像和着色器。

+0

「倒置的小矩形」只是着色器製作的第一步,旨在說明我將先存檔的內容 – Valerij

2

畫和「攝像頭」之間,我有地方的其他四我想表現得像一個光學鏡頭:

這是一個棘手的一個。首先必須瞭解的是,OpenGL是一個所謂的本地化渲染模型光柵器,這意味着通俗地說,它就像畫布上的鉛筆和畫筆一樣工作。

因此,它與全球場景表示渲染器(如光線追蹤器)形成鮮明對比。光線追蹤器實際上是在完全定義的場景下運行的,因爲它可以適用於像折射一樣的事情。

確實,人們必須像對待藝術家一樣對待OpenGL來對待它的工具。因此,您想要創建的任何光學「效果」必須通過使用OpenGL提供的工具掌握各種繪圖技術來實現。要創建你想要的效果,你必須實現一個多階段過程。

對於折射,首先渲染場景在所有方向(您創建動態立方體貼圖)時由折射對象「看到」,然後使用此立方貼圖作爲柵格化「折射」對象的輸入數據,其中a着色器用於確定撞擊光柵化碎片的光線的折射方向。

BTW:對於任何其他類似的交互效果,折射成立。陰影像OpenGL中的折射一樣不重要。