2010-04-19 280 views
2

有沒有辦法用OpenGL ES/OpenGl創建一個玻璃杯?如果可能的話,我可以讀什麼來開始創建?需要得到一個玻璃的最現實的觀點,例如 -如何在OpenGL ES/OpenGL中創建透明玻璃杯?

看到glass cup image

爲了簡單起見,無柄。

也許,任何人都有源的例子嗎?

謝謝。

+0

ES 1.1或2.0? OpenGL 1.5和之前還是2.1和之後? – genpfault 2010-04-19 17:31:27

回答

3

獲得與您鏈接的圖像非常接近的東西會非常複雜(手柄不是最難的部分)。如果這是一個學習項目,我會建議開始小一點。粗糙的近似值將是一個更好的起點。

您可以在OpenGL ES中輕鬆製作半透明物體。您需要的OpenGL功能是Alpha混合。這不會讓你非常接近你的玻璃杯。 http://www.opengl.org/resources/faq/technical/transparency.htm

複製此對象的基本級別是使用看起來有點像內部折射的手繪灰色紋理,並使用部分透明度將其繪製在面向攝像機的精靈上。然後渲染一個具有高透明度的常規杯形模型,只有少量的環境和漫射照明以及許多鏡面照明使其看起來光亮。

圓形玻璃物體的多次反射折射效果要困難得多。特別是如果你希望在杯子後面有空白背景以外的東西時讓它看起來有說服力。在光線跟蹤器中執行相當簡單,但不是像OpenGL那樣的光柵化器。查找焦散。有一些方法可以估計這種影響,但他們不是初學者項目。 根據這個,GLUT中有一些例子,如果你認真對待它的話。 http://www.opengl.org/resources/faq/technical/lights.htm

+2

如果您有權訪問着色器,那會使照明和反射/折射變得更加容易。我不確定OpenGL ES着色器的支持,但標準的OpenGL具有良好的着色器支持,相對簡單的着色器可以讓你做黑暗邊緣,半透明等。 – ssube 2010-04-20 02:54:09

0

通過可編程着色器,可以創建出色的玻璃效果,例如反射與折射相結合。 OpenGL ES 2.0具有可編程着色器,但OpenGL ES 1.X不支持。 AMD RenderMonkey(免費)附帶OpenGL ES 2.0的一個很好的例子。 Download here,並看看玻璃的例子。