2009-02-27 42 views
5

我正在尋找一種替代技術來在iPhone上呈現OpenGL ES中的反射。通常我會通過使用模板緩衝區來標記可以看到反射的位置(反射表面),然後僅在這些像素中渲染反轉圖像。因此,當反射的物體離開表面時,其反射不再被看到。但是,由於iPhone的實現不支持模板緩衝區,我無法確定如何隱藏表面以外的反射部分。如何在沒有模板緩衝區的iPhone上在OpenGL ES中渲染反射?

爲了澄清,問題不是自己渲染反射,而是當它們不可見時隱藏它們。

任何想法?

回答

9

先渲染反射場景;使用glCopyTexImage2D複製到紋理;清除幀緩衝區;繪製正確的場景,將複製的紋理應用到反射表面。

2

我沒有用於反射的答案,但在這裏就是我正在做的陰影沒有模板緩存,或許它會給你一個想法:

我執行基本正面/背面確定從光源的角度來看網眼的。然後我得到一個連接前三角形和後三角形的所有邊的列表。我把這個邊緣列表當作線條「循環」。我沿着物體光線投射這個環的頂點直到它與地面相交。然後使用這些交點來計算與地面相同的平面上的2D多邊形。然後我使用tesselation算法將該poly轉換爲三角形。 (只要你的光源或物體不會太頻繁地移動,這個效果就很好。)

一旦我有了三角形,我就會渲染它們,使得深度緩衝區允許陰影通過。或者,您可以使用decaling algorithm such as the one in the Red Book

相關問題