2009-07-16 142 views
2

我想製作看似反光的金屬3d物體。我想使用環境着色器來實現這一點,該着色器使用可以將圖像或紋理分配爲「反射」源的球體或立方體貼圖。OpenGL ES支持環境着色器嗎?

iPhone上的OpenGL ES是否支持任何版本?

回答

4

OpenGL ES 2.0提供着色器支持。但是,它不適用於今天市場上的許多移動設備。編碼ES 1.1和ES 2.0版本的圖形對你來說很重要。

蘋果開發中心擁有大量信息的過渡:

的OpenGL固定功能管線 ES 1.1至 提供了良好的基線行爲 的3D圖形管線,從 轉換和照明頂點將最終像素與幀緩衝區混合起來。如果您選擇 實現OpenGL ES 2.0 應用程序,則需要 重複此功能。另一方面,OpenGL ES 2.0比OpenGL ES 1.1更具靈活性 。自定義 頂點和片段操作 將很難或不可能 使用OpenGL ES 1.1實現可以是 使用OpenGL ES 2.0着色器實現。在OpenGL ES 1.1 應用程序中實現自定義 操作通常需要多個 渲染通道和複雜的更改 到OpenGL ES狀態,該代碼的意圖模糊了 。隨着算法 的複雜性不斷增加,着色器會更加清晰地傳達這些操作,並簡化並更好地執行這些操作。

http://developer.apple.com/iphone/library/documentation/3DDrawing/Conceptual/OpenGLES_ProgrammingGuide/DeterminingOpenGLESCapabilities/DeterminingOpenGLESCapabilities.html#//apple_ref/doc/uid/TP40008793-CH102-SW1

2

在過去使用的技術被稱爲「環境映射」或"reflection mapping"達到了「金屬」的樣子。

由於沒有可用於OpenGL ES 1.1的可編程着色器,因此可以使用軟件完成簡單的反射映射。只需根據反射源/相機對頂點法線進行變換,並從變換後的法線矢量中獲取紋理UV座標。 iPhone具有很強的操作能力,至少在體面頂點數上是這樣。

+0

假設2.0有環境映射是否安全? – Soviut 2009-07-17 20:23:38

0

OpenGL ES支持OpenGL的大部分功能(以及移動設備的一些額外功能)。如果我記得iPhone 3Gs支持片段着色器,而較舊的iPhone 3G只支持固定管道。