OpenGL ES是否支持环境着色器?

时间:2009-07-16 21:12:41

标签: iphone 3d opengl-es

我想制作看似反光的金属3d物体。我想使用环境着色器来完成此操作,该着色器使用球体或立方体贴图,我可以将图像或纹理指定为“反射”源。

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

3 个答案:

答案 0 :(得分:4)

OpenGL ES 2.0提供着色器支持。但是,目前市场上的许多移动设备都没有它。对您编写ES 1.1和ES 2.0版本的图形非常重要。

Apple开发中心拥有大量关于过渡的信息:

  

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

答案 1 :(得分:2)

在过去,使用称为“环境贴图”或"reflection mapping"的技术实现了“金属”外观。

由于OpenGL ES 1.1没有可编程着色器,因此可以使用软件进行简单的反射映射。只需根据反射源/相机变换顶点法线,并从变换后的法向量中获取纹理UV坐标。 iPhone有足够的马力来做到这一点,至少有一个不错的顶点数。

答案 2 :(得分:0)

OpenGL ES支持OpenGL的大部分功能(以及移动设备的一些额外功能)。如果我没记错,iPhone 3Gs支持片段着色器,而旧的iPhone 3G只支持固定管道。