我正在尋找一種替代技術來在iPhone上呈現OpenGL ES中的反射。通常我會通過使用模板緩衝區來標記可以看到反射的位置(反射表面),然後僅在這些像素中渲染反轉圖像。因此,當反射的物體離開表面時,其反射不再被看到。但是,由於iPhone的實現不支持模板緩衝區,我無法確定如何隱藏表面以外的反射部分。如何在沒有模板緩衝區的iPhone上在OpenGL ES中渲染反射?
爲了澄清,問題不是自己渲染反射,而是當它們不可見時隱藏它們。
任何想法?
我正在尋找一種替代技術來在iPhone上呈現OpenGL ES中的反射。通常我會通過使用模板緩衝區來標記可以看到反射的位置(反射表面),然後僅在這些像素中渲染反轉圖像。因此,當反射的物體離開表面時,其反射不再被看到。但是,由於iPhone的實現不支持模板緩衝區,我無法確定如何隱藏表面以外的反射部分。如何在沒有模板緩衝區的iPhone上在OpenGL ES中渲染反射?
爲了澄清,問題不是自己渲染反射,而是當它們不可見時隱藏它們。
任何想法?
先渲染反射場景;使用glCopyTexImage2D
複製到紋理;清除幀緩衝區;繪製正確的場景,將複製的紋理應用到反射表面。
我沒有用於反射的答案,但在這裏就是我正在做的陰影沒有模板緩存,或許它會給你一個想法:
我執行基本正面/背面確定從光源的角度來看網眼的。然後我得到一個連接前三角形和後三角形的所有邊的列表。我把這個邊緣列表當作線條「循環」。我沿着物體光線投射這個環的頂點直到它與地面相交。然後使用這些交點來計算與地面相同的平面上的2D多邊形。然後我使用tesselation算法將該poly轉換爲三角形。 (只要你的光源或物體不會太頻繁地移動,這個效果就很好。)
一旦我有了三角形,我就會渲染它們,使得深度緩衝區允許陰影通過。或者,您可以使用decaling algorithm such as the one in the Red Book。